Golang - микросервисная архитектура, проектирование API

Вы научитесь делить систему на Go-сервисы с явными контрактами: новая версия API выходит рядом со старой, и старые клиенты продолжают работать. Без этого один зависший сосед утаскивает за собой весь сервис, а клиент получает голое 500 с пустым телом. Решение вы сдаёте прямо на странице шага: платформа собирает Go и гоняет скрытые тесты, а для лабораторных поднимает настоящие nginx, Redis, PostgreSQL и Kubernetes.

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

Готовый результат: заказ проходит шлюз и сервисы

Клиент создаёт заказ на /v2 и получает 200 с payment_id. За этим ответом стоят шлюз на nginx, order-service с отдельной базой, вызов payment-service по HTTP, gRPC к user-service и событие в брокер.

Старый клиент на /v1 получает заголовки Deprecation и Sunset. Такой контур вы научитесь проектировать и проверять: от шлюза с nginx до событий и контрактов.

Для кого

Go-разработчикам, которые уже пишут сервисы и упираются в связи между ними: версии API, ретраи, дубли событий

Бэкенд-разработчикам с монолитом, которым предстоит резать его на сервисы

DevOps- и SRE-инженерам, которым нужно понимать код сервисов: трейсы, пробы здоровья, конфиг из окружения

Что нужно знать

Базовый Go: переменные, функции, структуры, срезы, ошибки

Глубокий опыт в бэкенде или DevOps не нужен: сети, контейнеры и оркестрацию курс разбирает с нуля

Go 1.26 и Docker пригодятся, если захотите запускать решения у себя; сдача и проверка идут на платформе

Как собираем: заказ и событие, которые не потеряются

Событие записывается в таблицу outbox в одной транзакции с заказом. Relay читает неотправленные записи и отправляет их в брокер. Если он упадёт до отметки, событие уйдёт повторно, поэтому консьюмер дедуплицирует по ключу.

Так же защищают платёжный POST: заголовок Idempotency-Key возвращает сохранённый ответ вместо второго списания.

Какие условия он обязан выдержать: контракт переживает правки

Новое поле можно выкатить в текущую версию, а переименование или смену типа нельзя: старый клиент получит пустое значение или ошибку. В gRPC поле на проводе узнают по номеру тега, поэтому имя менять можно, а выведенный номер закрывают через reserved.

Старую версию выводят не молча: сначала заголовки Deprecation и Sunset, потом отключение.

Как принимаем работу: ожидание против фактического состояния

Приёмка сверяет ожидание с фактом: ответ клиенту, конечное состояние данных, повтор по ключу, время ответа. На картинке пример такого сценария на стенде: по trace видно, что таймаут 300 ms, пауза и повторная попытка не уложились в бюджет.

В курсе работу принимает платформа. Код-задачи собираются на раннере golang:1.26 и проходят скрытые тесты с крайними случаями. Лабораторные идут в настоящих контейнерах: конфиг шлюза должен пройти nginx -t, подписчик Redis должен получить ваше событие, kubectl get deployment web должен показать 2/2 в READY. Кластер и Redis к запуску решения уже подняты.

Поддержка

Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support

Программа курса

Модулей: 13, уроков: 79. Задачи с кодом проверяются автоматически.

  1. Введение

  2. Разбираем основные сетевые протоколы

  3. Разработка веб-сервисов на Go

  4. Основы микросервисной архитектуры

  5. Принципы SOLID

  6. Проектирование API

  7. Взаимодействие микросервисов

  8. Работа с базами данных

  9. Тестирование и отладка

  10. Безопасность микросервисов

  11. Контейнеризация и оркестрация

  12. Мониторинг и логирование

  13. Оптимизация и масштабирование

Стоимость курса: 12990 ₽

Открыть курс на Mentorix · Все курсы