Разработчик Golang

Разработка сетевых приложений и микросервисов на Go
Подойдет ли мне этот курс?

Длительность

5 месяцев

Начало

28 мая

Занятия

Чт 20:00, Вт 20:00

Общая стоимость

50 000 ₽

В месяц

12 500 ₽

В кредит:

12500 ₽ в месяц

Хочу дешевле
Общая стоимость
50 000 ₽
В месяц: 12 500 ₽
В кредит: 50000 ₽
в месяц
Продолжительность
5 месяцев, 4 часа в неделю
Чт 20:00, Вт 20:00
Начало занятий
28 мая
Что даст вам этот курс

При переходе на Go люди зачастую сталкиваются с различными неудобствами, вызванными непохожестью Go на другие языки программирования. В этом курсе мы хотели бы объяснить что такое Go-way, рассказать про идиомы языка и помочь избежать типичных ошибок. Программа курса позволит погрузиться в разработку на Go для решения практических задач, углубления знаний в языке и сопутствующем технологическом стеке.

Этот курс подойдет для:

- web-разработчиков, которые хотят переквалифицироваться в Go и расширить свой уровень мастерства;
- всех тех, кто уже разобрался с основой Go и хочет начать применять язык правильно.

Особенности курса:


Изучите внутренние механизмы языка Go, а не только синтаксис языка

Рассмотрите реальные проблемы и их решения, с которыми столкнулись авторы при работе с Go

Разберете реальные кейсы перевода на стек языка Golang с других технологических стеков (PHP, C#) крупных высоконагруженных проектов

Разработаете собственный микросервис в качестве проектной работы


По окончании курса студент будет:

- писать production-ready код, многопоточные и конкурентные программы;
- понимать синтаксис и внутреннее устройство языка Go;
- понимать особенности сетевого программирования;
- уметь создавать микросервисы с помощью Go;
- способен разворачивать микросервисы с помощью docker.
Открытый вебинар: "Обзор микрофреймворков в Golang", 16 мая в 20:00
В ходе вебинара мы с вами:
- напишем несложные gRPC сервисы на самых популярных микрофреймворках;
- обсудим их архитектуру, слабые и сильные стороны;
- рассмотрим подходы к инструментации кода и развертыванию/оркестрации в продакшн среде.

Зарегистрируйтесь на трансляцию.
Ведет
Александр
Давыдов
Старайтесь решить проблему как можно проще, сложное решение получится само по себе.
Дмитрий Смаль
Преподаватель курса
Старайтесь решить проблему как можно проще, сложное решение получится само по себе.
Дмитрий Смаль
Преподаватель курса
Преподаватели
Дмитрий Смаль
Старший разработчик в Yandex
Александр Давыдов
Lazada Tech Hub Russia
Занимается разработкой инфраструктуры Яндекс.Облако и поддержкой реляционных баз данных. За 10 лет прошёл путь от рядового разработчика до старшего программиста в NetCracker, Agava, Mail.Ru Group (проектов «Игры», «Здоровье» и «Дети») и Яндексе.

Может спроектировать архитектуру, реализовать проект с помощью небольшой команды, развернуть необходимую инфраструктуру, организовать процесс разработки и деплоя. Разрабатывал сервера, поддерживающие 500k+ подключений, собирал модный фронтенд на React, отправлял тонны писем по SMTP, проектировал API и базы данных. Владеет Python, JavaScript, Go, Perl и другими языками и технологиями.

Окончил Московский физико-технический институт, где получил степень магистра. Около 6 лет был лектором в Технопарке и Технотреке Mail.Ru. Читал лекции, проводил практические занятия и экзамены. Записал видео-курс «Web-технологии» на Stepik. Проекты на гитхабе - https://github.com/mialinx
В отрасли с 2009 года. Пилил монолит в Lazada, готовил ETL/data pipelines в IPONWEB, разрабатывал инфраструктурные проекты для антиспама в Яндексе. Также был СТО в programmatic-стартапе «Трамплин Медиа».

Опытный разработчик, знает несколько языков программирования (Golang, Python, Perl). Окончил факультет прикладной математики в Московском институте электроники и математики.

В настоящее время проектирует микросервисную архитектуру (Golang/Kubernetes Openshift) в стартапе про умную адресуемую рекламу.

В свободное от работы время интересуется покером, кофе и… Golang — куда же без него?
Дмитрий
Смаль
Александр
Давыдов
Преподаватели
Дмитрий Смаль
Старший разработчик в Yandex
Занимается разработкой инфраструктуры Яндекс.Облако и поддержкой реляционных баз данных. За 10 лет прошёл путь от рядового разработчика до старшего программиста в NetCracker, Agava, Mail.Ru Group (проектов «Игры», «Здоровье» и «Дети») и Яндексе.

Может спроектировать архитектуру, реализовать проект с помощью небольшой команды, развернуть необходимую инфраструктуру, организовать процесс разработки и деплоя. Разрабатывал сервера, поддерживающие 500k+ подключений, собирал модный фронтенд на React, отправлял тонны писем по SMTP, проектировал API и базы данных. Владеет Python, JavaScript, Go, Perl и другими языками и технологиями.

Окончил Московский физико-технический институт, где получил степень магистра. Около 6 лет был лектором в Технопарке и Технотреке Mail.Ru. Читал лекции, проводил практические занятия и экзамены. Записал видео-курс «Web-технологии» на Stepik. Проекты на гитхабе - https://github.com/mialinx
Александр Давыдов
Lazada Tech Hub Russia
В отрасли с 2009 года. Пилил монолит в Lazada, готовил ETL/data pipelines в IPONWEB, разрабатывал инфраструктурные проекты для антиспама в Яндексе. Также был СТО в programmatic-стартапе «Трамплин Медиа».

Опытный разработчик, знает несколько языков программирования (Golang, Python, Perl). Окончил факультет прикладной математики в Московском институте электроники и математики.

В настоящее время проектирует микросервисную архитектуру (Golang/Kubernetes Openshift) в стартапе про умную адресуемую рекламу.

В свободное от работы время интересуется покером, кофе и… Golang — куда же без него?
Минимальные знания

- Опыт разработки от 1 года
- Опыт разработки web-приложений
- Знания по основным конструкциям и синтаксису Golang

Будет плюсом:
- знание одного из ЯП, в особенности С/C++;
- опыт администрирования Linux.
Процесс обучения
Всё обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в слаке курса, сдача домашних работ и получение обратной связи от преподавателя.

Вебинары идут дважды в неделю по 1,5 часа. Все вебинары сохраняются и в записи в вашем личном кабинете.

Домашнее задание выдается в среднем одно в неделю, а его выполнение занимает от 2 до 5 часов. Мы горячо призываем заниматься такой самостоятельной работой, так как это поможет вам качественно освоить все изучаемые технологии на практике с поддержкой и обратной связью наших преподавателей.

Возникающие вопросы по материалам лекций, домашним заданиям и по выпускному проекту вы сможете задавать преподавателю в слаке или во время вебинаров.

Курс длится 5 месяцев, из которых финальный отводится для выполнения проектной работы.

Выполнение проектной работы помогает усвоению практических навыков, а тема проекта отдельно выносится в сертификат. Во время работы над проектом студенты получают консультации и обратную связь от преподавателей в слаке группы и на проектных занятиях.
Программа обучения
Модуль 1
Начало работы с Go
Модуль 2
Стандартные библиотеки и практики
Модуль 3
Cетевое взаимодействие
Модуль 4
Микросервисы
Модуль 5
Проект
Начало работы с Go
Начало работы c Go
* Установка рабочего окружение Go
* Установка компилятора и тулчейна
* Компиляция и запуск программ на Go
* Подключение библиотек
* Основные синтаксические конструкции
* Публичные и приватные идентификаторы
28 мая, 20:00 — 21:30
Элементарные типы данных в Go
* Элементарные типы
* Zero value
* Константы
* Указатели
* Строки и руны и массивы байтов
* Стандартный функции для работы со строками и Unicode
* Преобразование и присвоение типов
* Передача по ссылке и значению
30 мая, 20:00 — 21:30
Слайсы и словари
* Отличия массивов и слайсов
* Внутренняя структура слайсов и словарей
* Создание и работа со слайсами и словарями
* Отличие длинны и емкости (length vs capacity)
* Различные способы итерации
* Сортировка
* Распространные ошибки и затруднения
4 июня, 20:00 — 21:30
Функции и обработка ошибок
* Функции и области видимости
* Замыкания
* Функции с переменным числом аргументов
* Типы ошибок
* panic, recover и defer
* Стректрейсы
* Best practiсe обработки ошибок
6 июня, 20:00 — 21:30
Структуры
* Определение структур
* Вложенные и анонимные структуры
* Тэги элементов структуры
* Использование тэгов для JSON и работы с СУБД
* Публичные структуры и публичные элементы структур
* Методы типов
11 июня, 20:00 — 21:30
Интерфейсы
* Определение и реализация интерфейсов
* Внутренняя структура интерфейсов
* Интерфейсы как "универсальный" тип
* Определение типа значения интерфейса
* Опасный и безопасный type cast
* Конструкций switch
* Слайсы и словари с интерфейсами
* Где мои generic-и?
13 июня, 20:00 — 21:30
Горутины и каналы
* Запуск горутин
* Каналы, внутреняя структура канала
* Буферизованные и небуферизованные каналы
* Операции работы с каналами
* Использование каналов для передачи данных и синхронизации
* Конструкция select
* Таймеры в Go
18 июня, 20:00 — 21:30
Примитивы синхронизации
* Мьютексы
* Условные переменные
* Гарантировано одноразовое выполнение
* Pool и WaitGroup
* Модель памяти в Go
* Race-детектор
20 июня, 20:00 — 21:30
Пакеты и библиотеки
* Импорт пакетов
* Алиасы и импорт без использования
* init функции и порядок инициализации пакетов
* internal пакеты
* Рекомендованная структура проекта
25 июня, 20:00 — 21:30
Стандартные библиотеки и практики
Инструменты Go разработчика
* Подробнее про GOROOT и GOPATH
* Сборка модулей и установка программ: go build, go install
* Модули и зависимости: dep и vgo
* Форматирование кода: go fmt, fix
* Линтеры: go vet, golint, металинтеры
27 июня, 20:00 — 21:30
Работа с вводом/выводом
* Тип Buffer
* Стандартные интерфейсы: Reader, Scanner, Writer, Closer
* Блочные устройства, Seeker
* Форматированный ввод и вывод: fmt
2 июля, 20:00 — 21:30
Форматирование данных
* base64 и другие форматы строк, кодировки
* Текстовые форматы: JSON, XML, YAML
* Использование стуктур и интерфейсов для парсинга
* Бинарные форматы: MsgPack и ProtocolBuffers
4 июля, 20:00 — 21:30
Взаимодействие с OS
* Обработка аргументов командной строки: flags, cobra
* Работа с переменными окружения
* Запуск внешних программ
* Работа с файловой системой
* Временные файлы
* Обработка сигналов
9 июля, 20:00 — 21:30
Файлы конфигурации и логирование
* Различные варианты конфигурации
* Использование простых форматов: ini, yaml и т.п.
* Библиотеки для работы с конфигурацией: viper и confita
* Стандартная библиотека для логирования
* Расширенное логирование с помощью Zap
11 июля, 20:00 — 21:30
Рефлексия
* Использование пакета reflect
* Type и Value
* Использование рефлексии совместно с type switch
* Пакет unsafe и тип unsafe.Pointer
* Пример использования рефлексии
16 июля, 20:00 — 21:30
Кодогенерация в Go
* Примеры применения кодогенерации
* Команда go generate
* Генерация кода по Protobuf спецификациям
18 июля, 20:00 — 21:30
Профилирование и оптимизация Go программ
* Общая информация о профилировании
* Виды профайлеров
* Профилирование использования CPU
* Профилирование выделения памяти
* Flame диаграммы
* Общие оптмизации в Go
* Оптимизации выделения памяти
23 июля, 20:00 — 21:30
Cетевое взаимодействие
Go Internals
* Как работает планировщик в Go
* Блокирующие и неблокирующие вызовы
* Goroutines and Threads
* Вызовы С функций в Go, CGO
25 июля, 20:00 — 21:30
Низкоуровневые протоколы TCP, UDP, DNS
* Стандартные интерфейсы - Dialer, Conn
* Возможные сетевые проблемы: потеря пакетов, подвисшие соединения, недоступность
* Таймауты и контекст
* Отладка сетевых проблем
30 июля, 20:00 — 21:30
HTTP библиотека
* Использование HTTP клиента
* Создание простого HTTP сервера
* Декораторы и middleware
* HTTP/1.1 и HTTP/2.0
* REST
* Протокол S3
1 августа, 20:00 — 21:30
GRPC
* Описание API с помощью Protobuf
* Генерация кода для GRPC клиента и сервера
* Реализация API
* Прямая и обратная совместимость API
* Представление о Clean Architecture
6 августа, 20:00 — 21:30
Работа с SQL
* Стандартные интерфейсы sql.DB, sql.Rows, sql.Tx
* Подключение к СУБД и настройка пула подключений
* Выполнение запросов и получение результатов
* Простейшие SQL запросы
8 августа, 20:00 — 21:30
Продвинутая работа с базами
* Использование sqlx хелперов
* Работа с NULL значениями
* Использование транзакций
* Миграция баз данных
13 августа, 20:00 — 21:30
NoSQL базы данных
* Встроенные базы данных, BoltDB
* Использование Redis для кеширования данных
* Выбор базы данных для проекта
15 августа, 20:00 — 21:30
Очереди сообщений
* Использование RabbitMQ, Kafka
* Возможные проблемы с очередями: перегрузка, падение обработчиков, сбойные сообщения
* Запуск пула обработчиков с помощью systemd или supervisor
20 августа, 20:00 — 21:30
Микросервисы
Монолит и микросервисы
* Отличия микросервисов от монолитной архитектуры
* Преимущества микросервисов
* 12 factor applications
* Архитектура одного микросервиса
* Clean Architecture
22 августа, 20:00 — 21:30
Docker
* Основные команды docker
* Представление о контейнер и образе
* Сборка собственных Docker контейнеров
* Запуск и управление контейнерами
* Передача конфигурации и получение логов
* Использование Docker Registry
27 августа, 20:00 — 21:30
Kubernetes
* Docker Swarm
* Puppet
* Ansible
* Как мы решаем проблему запуска сервсисов на более 1 машины
29 августа, 20:00 — 21:30
Обнаружение сервисов
* Необходимость Service Discovery
* Использование DNS
* Использование DCS: zookeeper, etcd, consul
3 сентября, 20:00 — 21:30
Мониторинг
* Проверка работоспособности сервисов
* Health Check в Docker
* Системные метрики: LA, CPU, MEM, IO
* Количественный мониторинг, prometheus
5 сентября, 20:00 — 21:30
Тестирование микросервисов
* Использование docker-compose
* Интеграционные тесты
* Behaviour Driven Development
* Описание тестов на языке Gherkin
* Использование godog для запуска тестов
10 сентября, 20:00 — 21:30
Использование CI
* GitLab pipelines
12 сентября, 20:00 — 21:30
Проект
Проект, разрабатываемый студентами, будет представлять собой реализацию микросервиса с полным набором компонентов, таких как: логгирование, liveness пробы, make файлы, тесты, статические анализаторы кода, файлы для деплоя, образ в docker, репозиторий и т.п.)
Проектная работа
Домашние задания: 1
1 Проект
Консультация по проектам
Презентация проектов
Выпускной проект
В завершении курса студентам будет предложено выполнить один из трех проектов на выбор:
1. Микросервис для борьбы с брут-форсом.
2. Сервис для подготовки превью изображений.
3. Простейшая система сбора данных.
После обучения вы

  • заберете с собой полный комплект обучающих материалов: видеозаписи всех вебинаров и презентации к занятиям;

  • сохраните в GitHub пример работоспособного сервиса на Go, которым не стыдно будет похвастаться;

  • получите сертификат о прохождении курса;

  • получите приглашение пройти собеседование в компаниях-партнерах (эту возможность получают самые успешные студенты).

Дата выдачи сертификата: 2 декабря 2019 года
Ваш сертификат
otus.ru
Константин Константинопольский
успешно закончил курс
«Разработчик Golang»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
otus.ru
Константин Константинопольский
успешно закончил курс
«Разработчик Golang»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
Общая стоимость
50 000 ₽
В месяц: 12 500 ₽
В кредит: ₽ в месяц
Продолжительность
5 месяцев
Начало занятий
28 мая