Складчина: Микросервисы, как в BigTech 2.0 [Тариф "Стандарт"] [Олег Козырев]
Научись разрабатывать высокопроизводительные, масштабируемые микросервисы, как в. ВК Yandex OZON СБЕР Тинькофф, и увеличь свои шансы на трудоустройство в BigTech или повышение грейда.
Обучение подойдет для Junior и Middle backend-разработчиков
Для курса нужно:
Знать основы Golang - все практические примеры будут на нем
Уметь пользоваться git, чтобы качественно работать с кодовой базой
Курс адаптирован под частые проблемы backend-a, которые встречаются на работе
Вся подкапотная микросервисов в одном обучении
8 недель беспощадного кодинга
Спойлер: Содержание
Неделя 1 HTTP и gRPC: основы сетевого взаимодействия микросервисов
С первой недели начнёшь собирать свой проект на микросервисной архитектуре. На практике освоишь два ключевых способа общения между сервисами — через HTTP и gRPC. Будешь писать API, запускать серверы, подключать клиентов и связывать между собой отдельные сервисы
Блок 1
HTTP в Go: от простого сервера до автогенерации API
Что такое HTTP?
HTTP/1.1, HTTP/2 и HTTP/3 — зачем придумали и какие проблемы решают
Что такое REST API и какие у него ограничения
Создаём простой HTTP-сервер на chi
Первая middleware на Go: как расширить поведение ручек сервера
Что такое OpenAPI и как описывать схемы
Генерация HTTP API на основе OpenAPI схемы
Блок 2
gRPC в Go: быстрый и типобезопасный способ общения сервисов
Как устроены gRPC и protobuf, где они применяются и в чём их сила
Пишем первый .proto-файл, учимся подключать зависимости
Генерация Go-кода через buf
Запускаем gRPC-сервер и подключаем к нему клиента
Что такое обратная совместимость и как её проверять при изменениях контракта (buf-breaking)
gRPC-Gateway: добавляем HTTP-интерфейс к gRPC-сервису
Автогенерация Swagger-описания из .proto
Валидация входящих данных через плагин protoc-gen-validate
Пишем свой первый gRPC-интерцептор
Неделя 2 Архитектура и тесты: строим проект по-взрослому
На этой неделе ты перестанешь писать «всё в одном файле» и начнёшь проектировать микросервисы по слоям: API, сервис, репозиторий. Освоишь архитектурные подходы и научишься писать unit-тесты — не формально, а так, чтобы реально ловить баги и не бояться менять код
Блок 3
Архитектура проекта на Go: чисто, понятно, гибко
Что такое архитектура и зачем она нужна (луковая, гексагональная, чистая — простыми словами)
Какие бывают слои и как они связаны: API, сервис, репозиторий, клиенты
Как структурировать проект на Go
Создаём repository-слой: работа с базой через интерфейсы
Пишем service-логику: бизнес-правила без привязки к API
Разбираемся с API-слоем: как принимать и отдавать данные
Добавляем клиентские обёртки: например, вызов Payment Service из Order Service
Блок 4
Unit-тестирование сервисов на Go: тесты, которые работают
Что такое юнит-тест и как он отличается от интеграционного
Тестируем простые функции: начинаем с базы
Как тестировать сервисную логику: используем тестовые сьюты
Как работать с моками: подключаем mockery и подменяем зависимости
Как замокать базу и зачем это может быть удобно
Выводим покрытие в README.md — пусть CI не зря работает
Неделя 3 Базы данных и Docker: сервисы обретают долговременное хранилище
Теперь твои сервисы начнут работать с настоящими базами данных — PostgreSQL и MongoDB. А чтобы не разворачивать всё вручную, ты научишься поднимать инфраструктуру через Docker Compose: базы, окружение, зависимости. Пока без упаковки самих сервисов — только окружение, как в настоящем проекте
Блок 5
Docker и Docker Compose: инфраструктура как код
Что такое Docker и зачем он нужен
Пишем свой первый Dockerfile
Что такое docker-compose и как с его помощью поднимать инфраструктуру
Поднимаем базу данных и настраиваем сетевое взаимодействие между контейнерами
Блок 6
Работа с PostgreSQL в Go: SQL, но по-человечески
Зачем микросервисам нужна реляционная база — и почему PostgreSQL
Запускаем PostgreSQL через Docker Compose
Создаём и накатываем миграции с помощью goose
Пишем SQL-запросы через pgx и squirrel
Интегрируем PostgreSQL в архитектуру сервиса: репозиторий, модели, конверторы
Блок 7
Работа с MongoDB в Go: когда не нужен SQL
Что такое MongoDB и где она выигрывает у реляционных решений
Поднимаем MongoDB через Docker Compose и осваиваем базовые CRUD-операции
Интеграция MongoDB в структуру проекта: структура, запросы, подходы
Неделя 4 Конфигурация, DI контейнер и интеграционные тесты: собираем всё воедино
На этой неделе ты сделаешь свои сервисы гибкими, управляемыми и тестируемыми. Настроишь конфигурацию через переменные окружения, внедришь DI-контейнер, напишешь первые интеграционные и e2e-тесты, а ещё — начнёшь строить свою собственную платформенную библиотеку, как в настоящих проектах
Блок 8
Конфигурация: как грамотно хранить параметры сервиса и передавать их при запуске
Что такое конфигурация и зачем выносить параметры из кода
Работа с переменными окружения (env) — самый частый способ настройки
Блок 9
Платформенная библиотека: общие компоненты для всех
Что такое платформенная библиотека и зачем её выделять
Пишем health check для grpc сервера
Создаём логгер на основе zap и настраиваем формат логов, единый для всех сервисов
Разрабатываем удобный менеджер закрытия ресурсов для обеспечения graceful shutdown
Блок 10
DI-контейнер: управляем зависимостями красиво
Что такое инверсия зависимостей и зачем она тебе
Как выглядит простой DI-контейнер на Go и как его написать
Интеграция DI в сервис: как это облегчает тестирование и конфигурирование
Блок 11
Интеграционное и E2E-тестирование: идём глубже
Интеграционные тесты для базы: используем сьюты, структуру проекта и тестовые данные
End-to-End тесты сервисов: проверяем всю цепочку работы через ginkgo, gomega и testcontainers-go
Как запускать тесты автоматически и проверять результат до релиза
Неделя 5 Kafka, события и асинхронная магия микросервисов
Выйдешь за пределы прямых запросов и начнёшь выстраивать событийное взаимодействие между сервисами. Познакомишься с Apache Kafka, научишься поднимать брокер в KRaft-режиме, писать продюсеров и консьюмеров, обрабатывать события и строить устойчивые, слабо связанные микросервисы. Плюс — сделаешь сервисы Assembly и Notification, и подключишь Telegram-бота
Блок 12
Apache Kafka в Go: шина событий своими руками
Что такое Apache Kafka и зачем она нужна микросервисам
Как работает Kafka в KRaft-режиме (без ZooKeeper)
Поднимаем Kafka с одним брокером через Docker Compose
Пишем продюсера и консьюмера на Go
Создаём consumer group и обрабатываем события
Интегрируем Kafka в архитектуру: DI, слои, обёртки
Блок 13
Уведомления в Telegram: живой отклик системы
Как зарегистрировать Telegram-бота и подключить его к сервису
Используем шаблоны Go для генерации сообщений
Разделяем логику по слоям: бот, отправка, шаблоны, бизнес-логика
Неделя 6 Redis и аутентификация: защищаем вход и храним сессии
Реализуешь полноценную систему аутентификации. Разберёшься, как организовать вход по логину и паролю, как хранить сессии, и как проверять доступ к ручкам gRPC. На этой неделе в проект войдёт Redis как хранилище сессий с TTL и базовыми структурами данных
Блок 14
Redis в Go: быстрое и удобное хранилище
Что такое Redis и зачем он нужен в микросервисной архитектуре
Какие структуры данных в Redis используются на практике: key-value, hashmap, set
Работа с TTL — автоматическое удаление сессий
Запуск Redis через Docker Compose
Интеграция Redis в сервис: клиент, DI, обёртка, сохранение и проверка сессий
Блок 15
Аутентификация и авторизация: сессии, токены и права доступа
Идентификация, аутентификация, авторизация — в чём разница
Подходы к аутентификации: сессии против JWT — плюсы и минусы
Реализуем API для работы с JWT
Научимся сохранять сессию в Redis с TTL 24 часа
Добавим интерцептор, валидирующий сессию на gRPC-ручках
Неделя 7 Об Observability не шутят: логи, метрики и трейсы
Внедришь в систему все три столпа наблюдаемости: логи, метрики и трейсы. Научишься собирать данные через OpenTelemetry Collector, отображать метрики в Grafana, логи — в Kibana, а трейсы — в Jaeger. Настроишь алерты на важные события и выведешь нотификации в Telegram
Блок 16
Мониторинг сервисов через OpenTelemetry
Как устроена система наблюдаемости: логирование, метрики, трассировка
Что такое OpenTelemetry и зачем нужен Collector
Сбор логов через zap → OpenTelemetry Collector → Elasticsearch → Kibana
Сбор метрик через Prometheus и OpenTelemetry Collector
Отображение данных в Grafana: метрики по сервисам и событиям
Подключение трейсов в Jaeger и визуализация прохождения запросов
Настройка алертов через Alertmanager с отправкой в Telegram
Вынос общих обёрток и инструментов в платформенную библиотеку
Неделя 8 Envoy: единая точка входа и контроль доступа на входе
Настроишь центральную точку входа в систему — через Envoy. Научишься маршрутизировать HTTP и gRPC-запросы, прокидывать заголовки, а главное — реализуешь проверку валидности сессии перед каждым запросом через вызов IAM-сервиса. Всё это будет работать в Docker Compose и интегрировано в проект
Блок 17
Envoy как gateway: маршрутизация, защита, удобство
Что такое Envoy и зачем он нужен в микросервисной архитектуре
Поднимаем Envoy в Docker Compose и настраиваем как точку входа в систему
Маршрутизация HTTP-запросов: настройка маршрутов, хостов, портов
Маршрутизация gRPC-запросов с поддержкой grpc_json_transcoder
Интеграция IAM-проверки: Lua-скрипт, выполняющий запрос на валидацию сессии
Как спрятать все сервисы за Envoy и оставить наружу только одну точку доступа
Преподаватель и автор курса — Олег Козырев
NDASenior Engineer
разрабатывает платформу для контроля доступов к продуктовым сервисам
HighLoad++ 2024Спикер
выступал с докладом по декларативной платформе управления доступом и являлся информационным партнером конференции
Ozon Tech: ЛогистикаSenior Engineer
разрабатывал сервисы организации перевозок товаров продавца на склад
Ozon Tech: МоментыSenior Engineer
разрабатывал систему модерации «рилсов» внутри приложения Ozon
Ozon Tech: МаркетплейсMiddle Engineer
разрабатывал сервис, который отслеживает своевременность доставки посылок
Route 256Преподаватель и тьютор
менторил и преподавал курсы по построению микросервисов в школе Ozon Tech
YaTalksВедущий конференции
вел второй день конференции по программированию от Яндекса
СЛИВ СКЛАДЧИН
Научись разрабатывать высокопроизводительные, масштабируемые микросервисы, как в. ВК Yandex OZON СБЕР Тинькофф, и увеличь свои шансы на трудоустройство в BigTech или повышение грейда.
Обучение подойдет для Junior и Middle backend-разработчиков
Для курса нужно:
Знать основы Golang - все практические примеры будут на нем
Уметь пользоваться git, чтобы качественно работать с кодовой базой
Курс адаптирован под частые проблемы backend-a, которые встречаются на работе
Вся подкапотная микросервисов в одном обучении
8 недель беспощадного кодинга
Спойлер: Содержание
Неделя 1 HTTP и gRPC: основы сетевого взаимодействия микросервисов
С первой недели начнёшь собирать свой проект на микросервисной архитектуре. На практике освоишь два ключевых способа общения между сервисами — через HTTP и gRPC. Будешь писать API, запускать серверы, подключать клиентов и связывать между собой отдельные сервисы
Блок 1
HTTP в Go: от простого сервера до автогенерации API
Что такое HTTP?
HTTP/1.1, HTTP/2 и HTTP/3 — зачем придумали и какие проблемы решают
Что такое REST API и какие у него ограничения
Создаём простой HTTP-сервер на chi
Первая middleware на Go: как расширить поведение ручек сервера
Что такое OpenAPI и как описывать схемы
Генерация HTTP API на основе OpenAPI схемы
Блок 2
gRPC в Go: быстрый и типобезопасный способ общения сервисов
Как устроены gRPC и protobuf, где они применяются и в чём их сила
Пишем первый .proto-файл, учимся подключать зависимости
Генерация Go-кода через buf
Запускаем gRPC-сервер и подключаем к нему клиента
Что такое обратная совместимость и как её проверять при изменениях контракта (buf-breaking)
gRPC-Gateway: добавляем HTTP-интерфейс к gRPC-сервису
Автогенерация Swagger-описания из .proto
Валидация входящих данных через плагин protoc-gen-validate
Пишем свой первый gRPC-интерцептор
Неделя 2 Архитектура и тесты: строим проект по-взрослому
На этой неделе ты перестанешь писать «всё в одном файле» и начнёшь проектировать микросервисы по слоям: API, сервис, репозиторий. Освоишь архитектурные подходы и научишься писать unit-тесты — не формально, а так, чтобы реально ловить баги и не бояться менять код
Блок 3
Архитектура проекта на Go: чисто, понятно, гибко
Что такое архитектура и зачем она нужна (луковая, гексагональная, чистая — простыми словами)
Какие бывают слои и как они связаны: API, сервис, репозиторий, клиенты
Как структурировать проект на Go
Создаём repository-слой: работа с базой через интерфейсы
Пишем service-логику: бизнес-правила без привязки к API
Разбираемся с API-слоем: как принимать и отдавать данные
Добавляем клиентские обёртки: например, вызов Payment Service из Order Service
Блок 4
Unit-тестирование сервисов на Go: тесты, которые работают
Что такое юнит-тест и как он отличается от интеграционного
Тестируем простые функции: начинаем с базы
Как тестировать сервисную логику: используем тестовые сьюты
Как работать с моками: подключаем mockery и подменяем зависимости
Как замокать базу и зачем это может быть удобно
Выводим покрытие в README.md — пусть CI не зря работает
Неделя 3 Базы данных и Docker: сервисы обретают долговременное хранилище
Теперь твои сервисы начнут работать с настоящими базами данных — PostgreSQL и MongoDB. А чтобы не разворачивать всё вручную, ты научишься поднимать инфраструктуру через Docker Compose: базы, окружение, зависимости. Пока без упаковки самих сервисов — только окружение, как в настоящем проекте
Блок 5
Docker и Docker Compose: инфраструктура как код
Что такое Docker и зачем он нужен
Пишем свой первый Dockerfile
Что такое docker-compose и как с его помощью поднимать инфраструктуру
Поднимаем базу данных и настраиваем сетевое взаимодействие между контейнерами
Блок 6
Работа с PostgreSQL в Go: SQL, но по-человечески
Зачем микросервисам нужна реляционная база — и почему PostgreSQL
Запускаем PostgreSQL через Docker Compose
Создаём и накатываем миграции с помощью goose
Пишем SQL-запросы через pgx и squirrel
Интегрируем PostgreSQL в архитектуру сервиса: репозиторий, модели, конверторы
Блок 7
Работа с MongoDB в Go: когда не нужен SQL
Что такое MongoDB и где она выигрывает у реляционных решений
Поднимаем MongoDB через Docker Compose и осваиваем базовые CRUD-операции
Интеграция MongoDB в структуру проекта: структура, запросы, подходы
Неделя 4 Конфигурация, DI контейнер и интеграционные тесты: собираем всё воедино
На этой неделе ты сделаешь свои сервисы гибкими, управляемыми и тестируемыми. Настроишь конфигурацию через переменные окружения, внедришь DI-контейнер, напишешь первые интеграционные и e2e-тесты, а ещё — начнёшь строить свою собственную платформенную библиотеку, как в настоящих проектах
Блок 8
Конфигурация: как грамотно хранить параметры сервиса и передавать их при запуске
Что такое конфигурация и зачем выносить параметры из кода
Работа с переменными окружения (env) — самый частый способ настройки
Блок 9
Платформенная библиотека: общие компоненты для всех
Что такое платформенная библиотека и зачем её выделять
Пишем health check для grpc сервера
Создаём логгер на основе zap и настраиваем формат логов, единый для всех сервисов
Разрабатываем удобный менеджер закрытия ресурсов для обеспечения graceful shutdown
Блок 10
DI-контейнер: управляем зависимостями красиво
Что такое инверсия зависимостей и зачем она тебе
Как выглядит простой DI-контейнер на Go и как его написать
Интеграция DI в сервис: как это облегчает тестирование и конфигурирование
Блок 11
Интеграционное и E2E-тестирование: идём глубже
Интеграционные тесты для базы: используем сьюты, структуру проекта и тестовые данные
End-to-End тесты сервисов: проверяем всю цепочку работы через ginkgo, gomega и testcontainers-go
Как запускать тесты автоматически и проверять результат до релиза
Неделя 5 Kafka, события и асинхронная магия микросервисов
Выйдешь за пределы прямых запросов и начнёшь выстраивать событийное взаимодействие между сервисами. Познакомишься с Apache Kafka, научишься поднимать брокер в KRaft-режиме, писать продюсеров и консьюмеров, обрабатывать события и строить устойчивые, слабо связанные микросервисы. Плюс — сделаешь сервисы Assembly и Notification, и подключишь Telegram-бота
Блок 12
Apache Kafka в Go: шина событий своими руками
Что такое Apache Kafka и зачем она нужна микросервисам
Как работает Kafka в KRaft-режиме (без ZooKeeper)
Поднимаем Kafka с одним брокером через Docker Compose
Пишем продюсера и консьюмера на Go
Создаём consumer group и обрабатываем события
Интегрируем Kafka в архитектуру: DI, слои, обёртки
Блок 13
Уведомления в Telegram: живой отклик системы
Как зарегистрировать Telegram-бота и подключить его к сервису
Используем шаблоны Go для генерации сообщений
Разделяем логику по слоям: бот, отправка, шаблоны, бизнес-логика
Неделя 6 Redis и аутентификация: защищаем вход и храним сессии
Реализуешь полноценную систему аутентификации. Разберёшься, как организовать вход по логину и паролю, как хранить сессии, и как проверять доступ к ручкам gRPC. На этой неделе в проект войдёт Redis как хранилище сессий с TTL и базовыми структурами данных
Блок 14
Redis в Go: быстрое и удобное хранилище
Что такое Redis и зачем он нужен в микросервисной архитектуре
Какие структуры данных в Redis используются на практике: key-value, hashmap, set
Работа с TTL — автоматическое удаление сессий
Запуск Redis через Docker Compose
Интеграция Redis в сервис: клиент, DI, обёртка, сохранение и проверка сессий
Блок 15
Аутентификация и авторизация: сессии, токены и права доступа
Идентификация, аутентификация, авторизация — в чём разница
Подходы к аутентификации: сессии против JWT — плюсы и минусы
Реализуем API для работы с JWT
Научимся сохранять сессию в Redis с TTL 24 часа
Добавим интерцептор, валидирующий сессию на gRPC-ручках
Неделя 7 Об Observability не шутят: логи, метрики и трейсы
Внедришь в систему все три столпа наблюдаемости: логи, метрики и трейсы. Научишься собирать данные через OpenTelemetry Collector, отображать метрики в Grafana, логи — в Kibana, а трейсы — в Jaeger. Настроишь алерты на важные события и выведешь нотификации в Telegram
Блок 16
Мониторинг сервисов через OpenTelemetry
Как устроена система наблюдаемости: логирование, метрики, трассировка
Что такое OpenTelemetry и зачем нужен Collector
Сбор логов через zap → OpenTelemetry Collector → Elasticsearch → Kibana
Сбор метрик через Prometheus и OpenTelemetry Collector
Отображение данных в Grafana: метрики по сервисам и событиям
Подключение трейсов в Jaeger и визуализация прохождения запросов
Настройка алертов через Alertmanager с отправкой в Telegram
Вынос общих обёрток и инструментов в платформенную библиотеку
Неделя 8 Envoy: единая точка входа и контроль доступа на входе
Настроишь центральную точку входа в систему — через Envoy. Научишься маршрутизировать HTTP и gRPC-запросы, прокидывать заголовки, а главное — реализуешь проверку валидности сессии перед каждым запросом через вызов IAM-сервиса. Всё это будет работать в Docker Compose и интегрировано в проект
Блок 17
Envoy как gateway: маршрутизация, защита, удобство
Что такое Envoy и зачем он нужен в микросервисной архитектуре
Поднимаем Envoy в Docker Compose и настраиваем как точку входа в систему
Маршрутизация HTTP-запросов: настройка маршрутов, хостов, портов
Маршрутизация gRPC-запросов с поддержкой grpc_json_transcoder
Интеграция IAM-проверки: Lua-скрипт, выполняющий запрос на валидацию сессии
Как спрятать все сервисы за Envoy и оставить наружу только одну точку доступа
Преподаватель и автор курса — Олег Козырев
NDASenior Engineer
разрабатывает платформу для контроля доступов к продуктовым сервисам
HighLoad++ 2024Спикер
выступал с докладом по декларативной платформе управления доступом и являлся информационным партнером конференции
Ozon Tech: ЛогистикаSenior Engineer
разрабатывал сервисы организации перевозок товаров продавца на склад
Ozon Tech: МоментыSenior Engineer
разрабатывал систему модерации «рилсов» внутри приложения Ozon
Ozon Tech: МаркетплейсMiddle Engineer
разрабатывал сервис, который отслеживает своевременность доставки посылок
Route 256Преподаватель и тьютор
менторил и преподавал курсы по построению микросервисов в школе Ozon Tech
YaTalksВедущий конференции
вел второй день конференции по программированию от Яндекса
СЛИВ СКЛАДЧИН
Для просмотра скрытого содержимого вы должны зарегистрироваться
Возможно, Вас ещё заинтересует:
- Как усилить портфолио с помощью нейросетей [Bang Bang Education] [Макс Кукушкин]
- [udemy] Локальные LLM через Ollama и LM Studio — Практическое руководство [Maximilian Schwarzmüller]
- Подписка на закрытый телеграм-канал Аналитика от Чехова (июль-август 2025) [Антон Чехов]
- Программа привычек (2-ой месяц) [Татьяна Красильцева]
- [Шитье] Выкройка + видео МК сумка "Трой" [Елена Северина]
- [Шитье] Сумка Лиза [Татьяна Мицай]