Архитектура мессенджера: базовая версия

Очень важный момент: в примере ниже мы разберем одну из версий архитектуры мессенджера. Далее в курсе мы посмотрим на более сложные реализации

И вот она, наша система!

Давай соберем наши компоненты в одну табличку

Компонент Назначение Технологии (предполагаемые)
DNS-балансировщик Роутинг в ближайший ЦОД AWS Route53, Cloudflare
L3 & L7-балансировщик Распределение трафика внутри ЦОДа Nginx, HAProxy
API Gateway Маршрутизация запросов, управление подключениями Envoy, Spring Cloud Gateway
Сервис пользователей Хранение данных профилей PostgreSQL
Сервис чатов Управление чатами и метаданными PostgreSQL
Очередь сообщений Асинхронная обработка входящих сообщений Kafka
Сервис отправки Доставка сообщений через WebSocket -
KV-БД (маппинг) Сопоставление user-id → подключение Redis, DynamoDB

На самом деле здесь можно много чего еще улучшать. Более подробно будем рассматривать это в следующих неделях курса:

  • Проектирование API
  • Правильное партицирование и шардирование БД
  • Использование кэшей и грамотная работа с ними
  • Применение паттернов для отказоустойчивости системы
  • Observability
  • Работа с SLA