
6 февраля стартует новый поток курса Golang для инженеров. Под капотом 10 модулей, 3 AMA-сессии со спикерами, практика с код-ревью в каждом блоке и итоговый проект — облегченный аналог Prometheus.
Курс подойдет всем: от новичков в программировании до устоявшихся разработчиков и Devops-инженеров. Первых мы научим создавать и оптимизировать приложения на Go, вторых — работать с микросервисной архитектурой и высоконагруженными системами, а третьих — автоматизировать процесс разработки, ускорять программирование и повышать уровень администрирования.
Программа
Тема №1 Введение и Тема №2 Основы Golang
1.1. Знакомство с курсом
1.2. Как учиться онлайн
1.3. Установочная встреча
1.4. Как выполнять практику
1.5. Философия Go. Для каких проектов он годится, а для каких – нет и почему.
2.1 Переменные и типы данных. Переменные и константы
2.2 Переменные и типы данных. Простые типы
2.3 Переменные и типы данных. Составные типы
2.4 Функции
2.5 Циклы, switch-case, if
2.6 Практика: создаем структуру для хранения результатов проверок внешних отслеживаемых сервисов
ЗАЧЕМ: Узнаем, зачем нужен язык GO, где его лучше применять, рассмотрим основные недостатки, поймем, какие рабочие процессы можно упростить с помощью GO.
Тема №3. Погружаемся глубже в основы
3.1. Структуры
3.2. Интерфейсы
3.3. Обобщенное программирование и ООП в Go
3.4. Garbage collector
3.5. Практика: создаем первую имитацию работы нашего сервиса.
ЗАЧЕМ: Подробно разберем, как GO подходит к реализации Объектно-Ориентированного Программирования (ООП) и узнаем, как обрабатывать и комбинировать ошибки GO.
Тема №4. Concurrency
4.1. Многозадачность
4.2. Горутины
4.3. Отработка ошибок
4.4. Каналы
4.5. Инструменты синхронизации
4.6. Практика: пишем функцию, которая запускает несколько горутин и программу, демонстрирующую работу функции. Переходим от синхронных вызовов к асинхронным в микросервисе.
ЗАЧЕМ: Научимся отличать конкурентности от параллелизма, освоим правильную работу с конкурентностью в GO (стандартные подходы и концепции в GO для работы с конкурентностью)
Тема №5 GO на практике 1
5.1. Go modules и структура проекта
5.2. Работа с операционной системой
5.3. Работа с файлами и файловой системой
5.4. Работа с сетью в Golang
5.5 Обзор протоколов и форматов
ЗАЧЕМ: Узнаем, как структурировать свои приложения, как работают зависимости в модулях. Поймем, как использовать флаги env, как запускаются сторонние приложения из Go. Научимся читать и писать файлы и как писать код с основными протоколами.
Тема №6. GO на практике 2
6.1. Как работать с базой данных
6.2. Пакеты для http
6.3. Как писать тесты
6.4. Проверка качества кода
6.5. Кросскомпиляция и build теги
6.6 Чек-лист итоги основного блока
Практика: добавляем метрики, создаем работоспособный Storage, запросы в базу данных, добавляем линтер к проекту.
ЗАЧЕМ: Научимся оперировать стандартной библиотекой языка, создавать сложные программы на GO. Разберем, как тесты структурно работают, поймем, что такое тести и как он организован. Научимся запускать внешний процесс из GO.
Тема №7. Работа с Docker из Go
7.1. Docker SDK для Go
7.2. Работаем с докером из Go
7.3. Практические советы для применения
7.4. Практика: закрепляем навыки работы с Docker SDK и делаем свое приложение, создаем Dockerfile для нашего сервиса
ЗАЧЕМ: Поймём, что такое API и как с ним работать, научимся взаимодействовать с Docker из Go. Научимся запускать контейнер и присоединяться к рабочему контейнеру. Определим характер взаимодействия, исходя из рабочих задач.
Тема № 8. Паттерны Kubernetes
8.1. Health probe/Liveness probe
8.2. Periodic job
8.3. Daemon service
8.4. Stateful service
8.5. Service discovery/Service mesh
8.6. Sidecar/Adapter
8.7. Controller/Operator
Практика: реализовываем сохранение проверок в базу данных и предоставление внешнего API для считывания результатов проверок с фильтром по дате и по домену
ЗАЧЕМ: Научимся работать с кастомными операторами. Поймем, зачем нужны паттерны Kubernetes.
Тема № 9. Операторы Kubernetes
9.1. Что такое Kubernetes Operator
9.2. Назначение операторов
9.3. Состав оператора (контроллер, индексер и kube API)
9.4. CRDs (cоздаем, заполняем переменные, генерим CRDs)
9.5. Состав контроллера
9.6. Пишем свой контроллер для деплоймента
9.7. Пишем оператор с помощью kubebuilder
9.8. Собираем проект для ручных тестов в кластере
9.9. Обзор ginkgo (пишем тесты), обзор основных фреймворков для создания операторов, kubeclient, готового http - сервера.
9.10. Пишем тест для валидации контроллера
9.11. Собираем деплой
Практика: разрабатываем оператор Kubernetes содержащий в себе весь тестовый стенд и разворачивающий его в kubernetes.
Спикеры и авторы курса

Всеволод Севостьянов
Engeneering Manager в HelloFresh
Подробнее о Всеволоде
– Более 10 лет опыта разработки на разных языках (php, java, Go)
– Архитектор и разработчик решений для обеспечения очень высокой пропускной способности (до 30 тысяч запросов в секунду на реальных бизнес кейсах)
– Tech Advisor команды DevOps
– Специализируется на облачных решениях
– Спикер на профильных митапах и конференциях

Тигран Ханагян
Team Lead & Backend Developer в Citymobil
Подробнее о Тигране
– Более 8 лет опыта разработки на разных языках (python, php, Go)
– Архитектор высоконагруженных сервисов на Go с нуля, один из которых - сервис программы лояльности в city-mobil.ru
– Автор статей в публичных каналах
– Спикер на профильных митапах и конференциях
Кстати, видеокурс по Golang доступен всегда. Но если вам важно получать комментарии и код-ревью от спикера по ходу обучения, задавать вопросы на AMA-сессиях, общаться с другими студентами в закрытом чате и подтвердить свои навыки на итоговом проекте — стоит дождаться начала потока.
Занять место в потоке с 6 февраля: https://slurm.club/3hmot4w
