Go: микросервисная архитектура на реальном проекте

18 участников

О чём курс

Данный курс представляет собой интенсивную практическую программу по проектированию и разработке микросервисной архитектуры на языке программирования Go. В отличие от теоретических курсов, которые предлагают изучение готовых решений, этот проект построен на принципе «обучение через создание»: вы пройдете полный путь разработки маркетплейса с нуля, превращая пустой репозиторий в полноценную, готовую к продакшену систему. Программа ориентирована на разработчиков, желающих освоить современные подходы к построению высоконагруженных систем, используя Clean Architecture, CQRS и принципы DDD (Domain-Driven Design).

В процессе обучения вы создадите четыре независимых микросервиса: каталог товаров, корзину покупок, сервис промоакций и систему оформления заказов. Каждый из них решает специфические задачи: от работы с REST API на фреймворке Gin и реализации gRPC-взаимодействия до сложной обработки событий через RabbitMQ и кэширования данных в Redis. Вы научитесь работать с различными типами баз данных (PostgreSQL и MySQL), управлять миграциями, реализовывать Dependency Injection вручную без использования сторонних фреймворков, а также обеспечивать централизованную обработку ошибок и валидацию данных.

Особое внимание в курсе уделено инфраструктурной части и эксплуатации. Вы не просто напишете код, но и упакуете сервисы в Docker-контейнеры, настроите оркестрацию через Docker Compose, внедрите систему мониторинга на базе Prometheus и визуализацию данных в Grafana. Финальным этапом станет проведение нагрузочного тестирования с помощью инструмента k6, что позволит увидеть, как спроектированная архитектура ведет себя под реальной нагрузкой. Курс максимально сфокусирован на практике: каждый урок — это конкретный шаг разработки, сопровождаемый написанием кода, его запуском и проверкой. Вы получите глубокое понимание того, как принимаются архитектурные решения, почему они необходимы в конкретный момент и как обеспечить надежность межсервисного взаимодействия в распределенной системе. Это идеальный выбор для тех, кто хочет перестать использовать «магические» инструменты и начать понимать каждый аспект работы своего приложения, от уровня доменных сущностей до дашбордов мониторинга.

Программа обучения

Первые шаги Go-cтарт Что будем делать: Marketplace-Go — обзор проекта Каталог курсов 001 Введение в проект 002 Инициализация Go-модуля и Gin-сервер 003 Доменные сущности: BaseEntity, Brand, Category, CatalogI 004 Docker Compose и PostgreSQL 005 SQL-миграции и seed-данные 006 Репозиторий брендов (PostgreSQL) 007 Query handler: получение брендов 008 HTTP handler: эндпоинт брендов 009 Маршрутизация API v1: /brands 010 Конфигурация через .env и godotenv 011.1 [ТЗ] Самостоятельная работа 012 Репозиторий товаров с JOIN 013 Query handler: список товаров 014 HTTP handler: список товаров 015 Маршрут /catalog-items 016 Рефакторинг SQL-запросов 017 Репозиторий: получение товара по ID 018 Query handler: товар по ID 019 HTTP handler: товар по ID 020 Маршрут /catalog-items/ 021 Поиск по названию (ILIKE) 022 Query handler: поиск по названию 023 HTTP handler: поиск по названию 024 Маршрут /catalog-items/title/:title 025 Репозиторий: создание товара (INSERT) 026 Command handler: создание товара 027 HTTP handler: POST-запрос 028 Маршрут POST /catalog-items 029 Репозиторий: обновление товара (UPDATE) 030 Command handler: обновление товара 031 HTTP handler: PUT-запрос 032 Маршрут PUT /catalog-items 033 [ТЗ] Удаление товара 034 [ТЗ] Поиск по бренду 035 Пагинация: Pagination и QueryArgs 036 Фильтрация и сортировка: введение 037 Query handler: пагинация (V2) 038 HTTP handler: пагинация (V2) 039 Маршрут GET /v2/catalog-items, тестирование пагинации 040 Автомиграции при старте (golang-migrate) 041 Финал каталога и итоговые правки Саморефлексия Корзина покупок 042 PostgreSQL для Basket в Docker Compose 043 Gin-сервер и health-check для Basket 044 Миграции Basket и автозапуск 045 Доменные модели: ShoppingCart, ShoppingCartItem 046 Репозиторий: сохранение корзины (транзакция) 047 Command handler: сохранение корзины 048 HTTP handler: POST /cart 049 Маршрутизация API v1: /cart 050 Инициализация слоёв и DI 051 Валидация моделей (go-playground/validator) 052 Middleware: централизованная обработка ошибок 053 Интеграция ErrorHandlerMiddleware 054 Репозиторий: получение корзины 055 Query handler: получение корзины 056 HTTP handler: GET /cart/:accountName 057 Маршрут GET /cart/:accountName 058 Кастомный тип NotFoundError 059 [ТЗ] Удаление корзины 060 Redis-контейнер для кэширования 061 RedisCartRepository 062 Интеграция Redis 063 Dockerfile и compose-prod для Basket Саморефлексия Промоакции 064 MySQL-контейнер для Promotion 065 Подключение к MySQL и автомиграции 066 Миграция: таблица promos и seed-данные 067 Protocol Buffers: greet.proto и кодогенерация 068 Реализация GreeterService (gRPC) 069 gRPC-сервер с graceful shutdown 070 gRPC Reflection и тестирование 071.1 gRPC метод Add (практика) 071.2 Proto-контракт 072 Доменная модель 073 Интерфейс PromotionRepository 074 Реализация FindByCatalogItem 075 Реализация обработчика promotion/queries 076 gRPC-сервис PromoService: заглушка 077 Реализация GetPromoByCatalogItem 078 Интеграция PromoService в main 079 Proto: CreatePromo RPC 080 Репозиторий: вставка промоакции 081 Command handler: создание промоакции 082 gRPC эндпоинт CreatePromo 083 Интеграция CreatePromoHandler и DI 084 Unique-ограничение и обработка дубликатов 085 UpdatePromo: полный цикл 086 [ТЗ] Удаление промоакции 087 gRPC-клиент в SaveCartHandler: применение скидок 088 Интеграция gRPC-клиента в Basket 089 Dockerfile и compose-prod для Promotion 090.1 Проблема: БД не готова при старте 090.2 Утилита WaitForDB с retry-логикой 091 Интеграция WaitForDB во все сервисы Саморефлексия Оформление заказов 092 PostgreSQL для Checkout и миграции 093 Конфигурация и запуск миграций 094 Gin-сервер и health-check для Checkout 095 Доменная модель: Order, Value Objects, Enums 096 Интерфейс и реализация OrderRepository 097 Репозиторий: получение заказа с позициями 098 Репозиторий: поиск заказов по аккаунту 099 Репозиторий: создание заказа (транзакция) 100 Query handler: заказ по ID 101 HTTP handler: GET /orders/:id 103 [ТЗ] Заказы по аккаунту 104 RabbitMQ-контейнер в Docker Compose 105 Структура messaging: заготовки 107 RabbitMQ Publisher: exchange, queue, publish 108 Command handler: CheckoutCart и публикация события 109 HTTP handler: POST /cart/checkout 110 Маршрут checkout и интеграция RabbitMQ 112 ProcessOrderSubmissionHandler: создание заказа 113 OrderSubmittedConsumer: маппинг события в команду 114 Интеграция consumer в Checkout с graceful shutdown 115 Dockerfile и compose-prod для Checkout Саморефлексия Мониторинг и инфраструктура 116.1 Введение в Prometheus и Grafana 116.2 Пакет metrics: HTTP, gRPC, DB, RabbitMQ 117 Gin Middleware для Prometheus-метрик 118 gRPC-интерцепторы метрик 119 Метрики в Catalog-сервисе 120 Метрики в Promotion-сервисе 121 Конфигурация Prometheus (prometheus.yml) 122 Datasource Grafana для Prometheus 123 Prometheus и Grafana в compose-prod 124.1 Демо: дашборды Prometheus и Grafana 124.2 Grafana-дашборды: Catalog и Promotion 125 Нагрузочное тестирование с k6 (HTTP) 126 Тюнинг пула соединений PostgreSQL 127 k6: нагрузочный тест gRPC 128 Portainer: управление контейнерами Саморефлексия Окончание Итоги

Складчина создана 10 апреля 2026 г. · описание обновлено 23 апреля 2026 г.

Теги курса

Профессии
Инструменты

Другие материалы автора 6

СК Сергей Камянецкий Все материалы
269 ₽ 7 900 ₽