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