Скоро на All-DAR Go: микросервисная архитектура на реальном проекте [Stepik] [Сергей Камянецкий]

ALL DAR Bot

🛡 МОДЕРАТОР 🛡
Регистрация
26 Март 2018
Сообщения
84.312
Название: Go: микросервисная архитектура на реальном проекте [Stepik] [Сергей Камянецкий]

882931bf1d50204e3a64ba6d83f1f647.png


Описание:
Практический курс по созданию микросервисной системы на Go. За время прохождения уроков вы с нуля построите маркетплейс из четырёх сервисов: каталог товаров, корзина с Redis-кэшированием, промоакции через gRPC и оформление заказов через RabbitMQ. Каждый сервис — Clean Architecture, CQRS, PostgreSQL/MySQL. В финале — Prometheus, Grafana, нагрузочные тесты и Docker Compose для продакшена. Никакой воды — только код, архитектура и практика.

Чему вы научитесь

  • Проектировать микросервисную архитектуру на Go с нуля
  • Применять Clean Architecture и CQRS в реальном проекте
  • Разрабатывать REST API с использованием фреймворка Gin
  • Строить gRPC-сервисы и настраивать межсервисное взаимодействие
  • Реализовывать событийную архитектуру через RabbitMQ
  • Внедрять кэширование с Redis (паттерн Decorator)
  • Работать с несколькими СУБД: PostgreSQL и MySQL
  • Применять паттерны DDD: Entity, Value Object, Aggregate
  • Управлять миграциями баз данных через golang-migrate
  • Настраивать мониторинг с Prometheus и визуализацию в Grafana
  • Проводить нагрузочное тестирование с помощью k6
  • Контейнеризировать микросервисы через Docker и Docker Compose
  • Организовывать Dependency Injection без фреймворков
  • Реализовывать валидацию, middleware и централизованную обработку ошибок

О курсе

Важно


Для прохождения этого курса вам потребуется браузер Mozilla Firefox или Safari

Цель курса

Научить вас проектировать и разрабатывать микросервисные системы на Go — не на синтетических примерах, а на реальном проекте, который растёт от пустого репозитория до готовой к продакшену системы с мониторингом.

Почему именно этот курс

Большинство курсов по микросервисам показывают готовый результат и объясняют, как он устроен. Здесь всё наоборот: вы проходите весь путь разработки — от первого go mod init до Grafana-дашбордов. Каждое архитектурное решение появляется в тот момент, когда оно действительно нужно, а не потому что «так принято».

Что вы построите

Микросервисный маркетплейс из четырёх независимых сервисов:

  • Каталог товаров — REST API на Gin, PostgreSQL, пагинация и фильтрация
  • Корзина покупок — Redis-кэширование, gRPC-клиент для скидок, публикация событий в RabbitMQ
  • Промоакции — gRPC-сервер, MySQL, Protocol Buffers
  • Оформление заказов — обработка событий из RabbitMQ, богатая доменная модель с Value Objects и агрегатами

Плюс полная инфраструктура: Docker Compose для dev и prod, Prometheus-метрики, Grafana-дашборды, нагрузочные тесты k6.

Структура курса

Курс состоит из 5 модулей и 128 уроков:

  • Модуль 1. Каталог товаров
  • Модуль 2. Корзина покупок
  • Модуль 3. Промоакции
  • Модуль 4. Оформление заказов
  • Модуль 5. Мониторинг и инфраструктура

Всего более 140 уроков, почти 18 часов видео

Особенности

  • Каждый урок — конкретный шаг разработки: добавили слой, написали код, запустили, проверили
  • Есть задания для самостоятельной работы (ТЗ) с последующим разбором решения
  • Dependency Injection реализован вручную, без магических фреймворков — вы понимаете каждую связь
  • Используются разные СУБД (PostgreSQL и MySQL), разные протоколы (REST, gRPC) и разные способы взаимодействия (синхронный и асинхронный) — чтобы показать реальную картину микросервисной разработки

Спойлер: Подробно Программа курса

  1. Первые шаги

    Go-cтарт

    Что будем делать: Marketplace-Go — обзор проекта

  1. Каталог курсов

    ️ 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 Финал каталога и итоговые правки

    ️ Саморефлексия

  1. Корзина покупок

    ️ 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

    ️ Саморефлексия

  1. Промоакции

    ️ 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 во все сервисы

    ️ Саморефлексия

  1. Оформление заказов

    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

    Саморефлексия

  1. Мониторинг и инфраструктура

    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: управление контейнерами

    Саморефлексия

  1. Окончание

    Итоги

Материал «Go: микросервисная архитектура на реальном проекте [Stepik] [Сергей Камянецкий]», возможно, скоро появится на All-dar.

Пройдите регистрацию и оформите Premium подписку, чтобы первым получить доступ, и воспользуйтесь поиском — может быть, он уже опубликован.

Скрытый контент для пользователей All-dar.
 

Присоединяйтесь, чтобы открыть полный доступ

Комментарии и материалы этой темы доступны только зарегистрированным участникам

Новый участник?

Регистрация занимает меньше минуты

Уже с нами?

Войдите в свой аккаунт

Сверху