Скрыть объявление

Внимание!


Наш телеграм-канал попал под массовую блокировку и, пока мы подготовили для вас резервный!


Подписывайтесь по этой ССЫЛКЕ

Скрыть объявление

На короткое время рассказываем где достать редкие курсы

Подробности ТУТ

Скрыть объявление

Мы обновили Telegram-бот!

Ссылку на новый бот и все детали ищите ТУТ и скорее подписывайтесь, чтобы не пропускать важные уведомления и новости форума

Скрыть объявление

Было ли у Вас такое, что Вы не могли найти курс? Если да, то напишите нам в Службу поддержки какой курс вам нужен и мы постараемся его найти.

Скрыть объявление

Пополняйте баланс и получайте при оплате складчин кэшбек в размере 10%

Запись

Микросервисы на GO 3.0. Тариф Стандарт (Олег Козырев)

Тема в разделе "Курсы по программированию"

Цена:
74990 руб
Взнос:
544 руб
Организатор:
Организатор

Список участников складчины:

1. Организатор
open
2
Записаться
  1. Организатор Организатор складчин

    Микросервисы на GO 3.0. Тариф Стандарт (Олег Козырев)

    [​IMG]

    Научись разрабатывать высокопроизводительные, масштабируемые микросервисы, как в ВК, Yandex, OZON, СБЕР, Тинькофф, и увеличь свои шансы на трудоустройство в BigTech или повышение грейда

    Курс адаптирован под частые проблемы backend-a, которые встречаются на работе
    • Перехожу на Go — хочу быстро адаптироваться и не писать как на старом языке

      Узнаешь все необходимое про внутрянку Go и микросервисную архитектуру: HTTP, OpenAPI, gRPC, Kafka, Redis, Postgres, Prometheus, Grafana, Jagger, Elasticsearch, Kibana, Envoy, OpenTelemetry и др., чтобы сменить стек без потери в ЗП и сразу работать на интересных проектах.

    • Пишу на Go, но застрял в типовых задачах — хочу расти дальше

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

    • Хочу уверенно проходить собесы и повысить свой грейд и зарплату

      Напишешь реальный проект из 5 микросервисов, разберёшься как всё взаимодействует между собой и сможешь уверенно отвечать на вопросы по архитектуре и технологиям на собесах в топовые компании.
    Вся подкапотная микросервисов в одном обучении
    1. Разработаешь 5 микросервисов, связанных между собой через Kafka и gRPC, с изоляцией от внешнего мира с помощью Envoy Gateway
    2. Обеспечишь мониторинг сервиса по стандарту OpenTelemetry с юнит-тестами, чтобы исключить ошибки в работе
    3. Освоишь кеширование данных с помощью Redis и асинхронное взаимодействие между микросервисами с помощью Kafka
    4. Освоишь работу с PostgreSQL, напишешь свою платформенную библиотеку, упрощающую разработку
    5. Реализуешь межсервисное взаимодействие, систему аутентификации и авторизации
    6. На практике научишься применять архитектурные подходы построения микросервисов
    8 недель. 5 микросервисов. Production-ready стек.

    Неделя 1

    HTTP и gRPC: два протокола, которые должен знать каждый Go-разработчик



    Блок 1: gRPC — язык, на котором говорят микросервисы
    • Protocol Buffers с нуля — описываем контракт сервиса в ".proto"-файле
    • buf — генерируем Go-код одной командой вместо ручной возни с `protoc`
    • Поднимаем gRPC-сервер и клиент — полноценный CRUD для управления данными
    • Интерцепторы: перехватываем каждый запрос — логирование, перехват паник и кастомная логика
    • gRPC-Gateway + Swagger UI — один сервис, два протокола: REST снаружи, gRPC внутри
    • Валидация входных данных — отсекаем невалидные запросы ещё до попадания в бизнес-логику
    Блок 2: HTTP — REST API на промышленном уровне
    • Chi — самый популярный Go-роутер — маршруты, цепочки middleware, таймауты и корректное завершение работы
    • Сначала контракт, потом код — описываем OpenAPI-спецификацию, получаем типизированный сервер с валидацией из коробки через Ogen
    • HTTP вызывает gRPC — связываем сервисы между собой: HTTP-фронтенд обращается к gRPC-бэкенду
    Блок 3: Go Workspace — мультимодульный проект
    • go.work для нескольких сервисов — общие proto-определения, общие зависимости, единый репозиторий
    Домашнее задание
    • Реализовать 3 микросервиса: OrderService (HTTP), InventoryService (gRPC), PaymentService (gRPC). Связать их через gRPC-клиенты — заказ обращается к складу и платёжке.
    Результат недели
    • Ты с нуля напишешь 3 работающих сервиса на двух протоколах, освоишь кодогенерацию API из контрактов и научишься связывать микросервисы между собой. Это фундамент, на котором строится всё остальное.
    Неделя 2

    Clean Architecture и тесты: пишем код, как в BigTech-компаниях



    Блок 4: Слоистая архитектура — структура, которую поймёт любой разработчик
    • API → Service → Repository → Client — чёткое разделение ответственности
    • Три модели данных — модель API, доменная модель, модель хранилища: зачем их разделять и как конвертировать между собой
    • Инверсия зависимостей — интерфейсы определяет тот, кто использует, а не тот, кто реализует
    • Стратегия обработки ошибок — единые ошибки-маркеры на каждом слое, понятная цепочка от базы до клиента
    Блок 5: Unit-тесты — от нуля до полного покрытия за 7 шагов
    • Первый тест на чистом Go** — `testing.T`, никаких фреймворков
    • Табличные тесты — один тест, десять сценариев: описываем входы и ожидаемые результаты
    • testify — читаемые проверки вместо ручных `if err != nil`
    • Стабы: подменяем зависимости вручную — простая реализация в памяти вместо реальной базы
    • mockery — генерируем моки автоматически — задаём ожидания, проверяем вызовы
    • Тесты в Clean Architecture — мокаем репозиторий, тестируем бизнес-логику изолированно
    • Параллельные тесты — запускаем тесты одновременно и не ловим гонки
    Домашнее задание
    • Рефакторинг всех 3 сервисов в Clean Architecture. Unit-тесты с моками на сервисный и API-слой. Покрытие ≥40%.
    Результат недели
    • Код разложен по чётким слоям — бизнес-логика отделена от транспорта и хранилища. Любой новый разработчик откроет проект и сразу поймёт, где что лежит. Тесты с моками ловят баги до продакшена, а не после
    Неделя 3
    Docker и PostgreSQL: сервисы обретают настоящее хранилище



    Блок 6: Docker — упаковываем сервис в контейнер
    • Многоэтапная сборка Docker-образа — 800 МБ Go SDK превращаются в 10 МБ финальный образ
    • Запуск не от root — безопасно, как требуют в продакшене
    • Docker Compose — база данных, миграции и сервис поднимаются одной командой
    • Healthcheck и зависимости — контейнеры стартуют в правильном порядке
    Блок 7: PostgreSQL — SQL на Go без боли
    • pgx — самый быстрый драйвер для PostgreSQL с пулом соединений (переиспользуем подключения, а не создаём новые на каждый запрос)
    • Squirrel — SQL-конструктор — собираем запросы программно, без склейки строк
    • Миграции через Goose — версионируем схему базы, накатываем изменения при деплое
    • Практические приёмы — получаем ID сразу при вставке, работаем с nullable-полями, избегаем SQL-инъекций
    Блок 8: Транзакции — атомарность без компромиссов
    • Transaction Manager — оборачиваем несколько операций в транзакцию, не протаскивая объект транзакции через все слои
    • Прозрачные транзакции — репозиторий даже не знает, что работает внутри транзакции — всё скрыто в контексте
    Домашнее задание
    • Поднять PostgreSQL через Docker Compose для OrderService и InventoryService. Написать миграции, заменить хранение в памяти на реальные SQL-запросы. Интегрировать Transaction Manager для атомарного создания заказа
    Результат недели
    • Хранилище в памяти заменено на PostgreSQL. Ты умеешь поднимать инфраструктуру через Docker Compose, делать миграции, писать запросы и проектировать хранилища. Паттерн Transaction Manager — один из самых частых вопросов на собеседованиях
    Неделя 4
    Конфигурация, DI и Domain-Driven Design



    Блок 9: Конфигурация — параметры сервиса без хардкода
    • YAML + переменные окружения через cleanenv — один конфиг-файл, переопределения через переменные окружения для каждого стенда
    • Профили: local / production / docker — переключаем поведение без изменения кода
    Блок 10: DI-контейнер — управление зависимостями без магии
    • Ручной DI на Go — создаём зависимости лениво: только когда понадобятся
    • Корректное завершение работы — ресурсы закрываются в обратном порядке: что открыли последним — закрываем первым
    • Платформенная библиотека — проверка здоровья сервиса, логгер, менеджер закрытия ресурсов: переиспользуемые компоненты для всех сервисов
    Блок 11: JSONB — гибкие структуры в PostgreSQL
    • JSONB-колонки — храним разнородные данные (характеристики разных типов деталей) в одной колонке без раздувания схемы
    • Индексы по JSON — быстрый поиск внутри JSON-структур
    Блок 12: Domain-Driven Design — бизнес-логика, которая сама себя защищает
    • Сущности с поведением — объекты сами знают свои правила, а не просто хранят данные
    • Value Objects — типизированные значения (например, «прочность корпуса»), которые нельзя создать в невалидном состоянии
    • Агрегаты — группа связанных объектов с единой точкой входа, которая контролирует целостность данных
    • Доменный сервис — проверка совместимости компонентов корабля перед заказом
    • Резервирование деталей — Reserve/Release с защитой от невалидных состояний
    Домашнее задание
    • Внедрить конфигурацию и DI-контейнер во все сервисы. Создать платформенную библиотеку. Реализовать DDD: сущность Part с методами Reserve/Release, Value Objects для свойств компонентов в JSONB, сервис проверки совместимости при заказе
    Результат недели
    • Сервисы конфигурируются через YAML и переменные окружения, зависимости собираются через DI-контейнер, ресурсы корректно освобождаются при завершении. Бизнес-логика защищена доменной моделью — невалидное состояние невозможно создать в принципе. Ты строишь не просто сервисы, а **платформу** — как это делают в BigTech-компаниях
    Неделя 5
    Kafka: асинхронная коммуникация между сервисами



    Блок 13: Apache Kafka — шина событий для микросервисов
    • Синхронный и асинхронный продюсер — гарантия доставки каждого сообщения vs максимальная пропускная способность
    • Консюмер — читаем поток событий — смещения, партиции, чтение с начала или с конца
    • Consumer Groups — горизонтальное масштабирование — несколько экземпляров сервиса делят между собой поток сообщений, автоматически перераспределяя нагрузку
    • Обработка сообщений пачками — накапливаем и обрабатываем группой для производительности
    • Kafka в Clean Architecture — выделяем слои для асинхронных потоков так же, как для HTTP и gRPC
    Блок 14: SELECT FOR UPDATE — блокировки в PostgreSQL
    • Блокировка строк при чтении — «заморозить» запись в базе, пока мы с ней работаем, чтобы другой запрос не изменил её параллельно
    • Правильный порядок блокировок — всегда блокируем строки в одном и том же порядке, чтобы два запроса не заблокировали друг друга навечно
    • Повторная обработка событий без последствий — даже если Kafka доставит сообщение дважды, данные не сломаются
    Домашнее задание
    • Поднять Kafka. Создать AssemblyService — новый микросервис, который слушает событие оплаты, «собирает корабль» и отправляет событие завершения сборки. OrderService публикует событие при оплате и обновляет статус при получении результата сборки. Блокировка строк для безопасного резервирования деталей.
    Результат недели
    • Полная асинхронная цепочка: заказ → оплата → сборка → обновление статуса. Четвёртый микросервис (AssemblyService) работает через Kafka. Ты освоил событийную архитектуру — именно так обрабатывают миллионы событий в BigTech-компаниях вроде OZON, Яндекса и Тинькофф
    Неделя 6
    Аутентификация: IAM-сервис и Redis



    Блок 15: Redis — быстрое key-value хранилище
    • Базовые операции — простые ключи, хеш-таблицы, хранение структур
    • Время жизни ключей (TTL) — данные автоматически удаляются через заданное время: идеально для сессий и кеша
    • Распределённая блокировка через Redis — когда несколько экземпляров сервиса должны по очереди работать с общим ресурсом
    • Защита от лавины запросов — если тысяча пользователей одновременно запросила одно и то же, в базу уходит только один запрос
    • Redis в Clean Architecture — кеширующий слой как отдельный репозиторий
    Блок 16: Аутентификация на сессиях — от логина до защиты API
    • bcrypt — хешируем пароли правильно — почему md5 и sha256 для паролей использовать нельзя
    • Сессии в Redis с временем жизни — создание, проверка, удаление
    • gRPC-интерцептор для проверки сессий — список открытых методов, извлечение токена из заголовка
    • HTTP middleware для аутентификации — проверяем сессию через IAM, пробрасываем ID пользователя в контекст запроса
    • Передача информации о пользователе между сервисами — gRPC metadata для пробрасывания идентификатора через цепочку вызовов
    Домашнее задание
    • Создать IAM Service — пятый микросервис: Register, Login, Logout, Whoami, GetUser. Пользователи в PostgreSQL, сессии в Redis с ограниченным временем жизни. Добавить HTTP middleware в OrderService и gRPC-интерцептор в InventoryService для проверки сессий через IAM.
    Результат недели
    • Пятый микросервис — полноценный IAM с регистрацией, аутентификацией и хранением сессий в Redis. Каждый запрос проходит проверку — API больше не открыт всему миру. Плюс ты освоил распределённые блокировки и защиту от лавинных запросов — паттерны, которые спрашивают на каждом Senior-собеседовании.
    Неделя 7
    Observability: логи, метрики и распределённые трейсы



    Блок 17: Логирование — от println до Kibana
    • Структурированные логи через slog + OpenTelemetry — логи отправляются в единый коллектор телеметрии
    • Запись сразу в два места — одновременно в консоль и в Elasticsearch, чтобы видеть логи и локально, и в централизованном хранилище
    • Kibana — ищем и анализируем логи всех сервисов в одном интерфейсе
    • Устойчивость к сбоям — если Elasticsearch упал, сервис продолжает работать и писать логи в консоль
    Блок 18: Метрики — Prometheus и Grafana
    • Счётчики, гистограммы и другие типы метрик — считаем количество запросов, замеряем время ответа, отслеживаем текущую нагрузку
    • Автоматический сбор метрик gRPC — подключается в одну строку, сразу видим latency и количество ошибок
    • Prometheus — собирает метрики со всех сервисов через единый коллектор
    • Grafana-дашборды — красивые графики бизнес-метрик: заказы, выручка, время сборки
    Блок 19: Распределённый трейсинг — видим путь запроса насквозь
    • Сквозной идентификатор запроса — один trace-id проходит через все сервисы, позволяя восстановить полный путь
    • Автоматический сбор трейсов для gRPC — подключается без изменения бизнес-кода
    • Добавляем бизнес-контекст к трейсам — видим не только «запрос прошёл», но и «какой заказ, какой пользователь»
    • Jaeger — визуализация полного пути запроса через все сервисы на одном таймлайне
    • Инструментация Redis — подключаем трейсы, метрики и логи для каждого вызова кеша через систему хуков
    Домашнее задание
    • Развернуть полный стек наблюдаемости: коллектор телеметрии, Elasticsearch + Kibana, Prometheus + Grafana, Jaeger. Настроить логи всех сервисов в Kibana. Бизнес-метрики (заказы, выручка) в Grafana. Трассировка полного пути запроса через Order → Inventory → Payment. Вынести инструменты наблюдаемости в платформенную библиотеку.
    Результат недели
    • Полноценная система наблюдаемости: Grafana с метриками, Kibana с логами, Jaeger с трейсами. Ты видишь каждый запрос от входа до ответа через все сервисы. Это уровень, который отличает Middle от Senior.
    Неделя 8
    Контейнеризация, балансировка и распределённый Rate Limiting



    Блок 20:Контейнеризация и Nginx — всё в Docker, балансировка нагрузки
    • Многоэтапная сборка Docker-образа для каждого сервиса — сначала компилируем, затем берём только бинарник в минимальный образ
    • Docker Compose для всей системы — 5 сервисов + вся инфраструктура поднимаются одной командой
    • Nginx как балансировщик — запросы равномерно распределяются между репликами OrderService
    • Горизонтальное масштабирование — запускаем несколько копий сервиса, Nginx сам находит их по имени
    Блок 21: Паттерны отказоустойчивости — чтобы сервис выжил в продакшене
    • Rate Limiter — ограничиваем количество запросов в секунду, чтобы сервис не захлебнулся под нагрузкой
    • Retry с нарастающей задержкой — клиент автоматически повторяет запрос при временных сбоях, каждый раз ожидая чуть дольше (плюс случайный разброс, чтобы все клиенты не повторили одновременно)
    • Circuit Breaker — если сервис начал падать, автоматически прекращаем к нему обращаться, даём восстановиться, затем аккуратно проверяем: заработал ли
    • Распределённый Rate Limiter через Redis — единый лимит на все копии сервиса, настройка лимитов отдельно для каждого метода, если Redis недоступен — пропускаем запросы, а не блокируем
    Блок 22: Нагрузочное тестирование — проверяем, что всё работает под давлением
    • vegeta — заливаем HTTP-трафиком, замеряем время ответа и пропускную способность
    • ghz — то же самое для gRPC, проверяем rate limiter под реальной нагрузкой
    Домашнее задание
    • Контейнеризировать все сервисы. Собрать единый Docker Compose со всей инфраструктурой. Настроить Nginx для балансировки OrderService на 3 реплики. Реализовать распределённый Rate Limiter через Redis — единый лимит на все экземпляры. Провести нагрузочное тестирование
    Результат недели
    • Микросервисная система полностью собрана — от API до мониторинга, от аутентификации до балансировки нагрузки. 5 сервисов в Docker-контейнерах за Nginx, распределённый rate limiter защищает от перегрузки, нагрузочные тесты подтверждают работоспособность. Это готовый проект для портфолио и уверенный ответ на любой вопрос собеседования про микросервисы.

    Скрытый текст. Доступен только зарегистрированным пользователям.Нажмите, чтобы раскрыть...
     
  2. Похожие складчины
    Загрузка...
Наверх