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