ЛентаСтатьиЗаметкиКурсы
Рецепты
← Все курсы

Мессенджер как микросервисы: шина, event-service и независимые деплои

GoMicroservicesRedis StreamsWebSocketJWTJWKSDDDPostgreSQLDockerSLO

Второй курс трека: курс 1 довёл монолит до продакшена — этот учит его правильно ломать. Не «микросервисы ради микросервисов»: каждый этап переезда привязан к конкретной боли стадии 1, у каждого есть проверка и откат, а границы проведены по bounded contexts, а не по моде.

Целевая топология — четыре сервиса:

  • user-service — Identity & Access: аккаунты, RS256 + JWKS, контакты;
  • messenger-service — ядро домена: диалоги (direct + group в одном сервисе), сообщения, участники, outbox;
  • event-service ×N — Realtime Delivery: WebSocket-соединения, fan-out, presence, насыщение кадров (enrichment);
  • notification-worker — своя consumer group, правила «кого будить», Web Push.

Между ними — Redis Streams и версионированный конверт событий; на пути клиента нет ни одной распределённой транзакции.

Формат. Каждый модуль — работающий инкремент переезда: решение, контракт, код, проверки и откат. Теория границ (DDD-лайт) — только в первом модуле, дальше — инженерия. Восемь модулей, ~4–6 ч каждый; финал — защита ADR переезда.

Предусловия: курс «Мессенджер: P2P, группы и продакшен» целиком — стадия-1 монолит задеплоен, бойлерплейт развёрнут. Полезно, но не обязательно: модуль про консьюмеров Kafka — consumer group и лаг там те же, шина другая.

Boilerplate. Тот же монорепозиторий трека (boilerplate/): Go-бэкенд с интерфейсом брокера events.Broker и outbox — именно этот шов станет первым этапом переезда. Новый код курса — три новых сервиса и nginx-роутинг рядом с монолитом; фронтенд не меняется вовсе, и это часть замысла: клиент не должен заметить переезд.

Маршрут

#МодульЧто делаем
1Когда монолиту пораболи стадии 1, bounded contexts, тест границы
2Целевая топологиячетыре сервиса, nginx, владение данными, матрица вызовов
3user-service и JWKSRS256, офлайн-валидация, каталог, миграция токенов
4Конверт событияPublished Language, recipients, версии, гарантии
5event-service ×NStreams + группа на реплику, presence, насыщение кадров
6notification-workerconsumer group, правила пуша, идемпотентность, агрегация
7Отказоустойчивость и нагрузкарестарты, деградация Redis, SLO на лаги, 10k коннектов
8Переезд по этапамstrangler: этапы 0–3, expand→contract, откат, ADR-защита

Результат: вы умеете резать монолит по доменным границам, проектировать событийный контракт, который переживёт рост, держать realtime на N репликах — и проводить переезд так, что клиент его не замечает, а продакшен не замечает аварий.

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

1

Модуль 1. Когда монолиту пора: границы, а не мода

→
2

Модуль 2. Целевая топология: четыре сервиса и ни одной распределённой транзакции

→
3

Модуль 3. user-service: RS256 + JWKS и офлайн-валидация

→
4

Модуль 4. Конверт события: контракт, который переживёт рост

→
5

Модуль 5. event-service ×N: fan-out на репликах и насыщение кадров

→
6

Модуль 6. notification-worker: своя группа, правила пуша, идемпотентность

→
7

Модуль 7. Отказоустойчивость и нагрузка: 10k соединений без сюрпризов

→
8

Модуль 8. Переезд по этапам: strangler, откат и защита ADR

→
Начать обучение