Что ж, пора сделать примерный дизайн мессенджера.
Давай вместе вспомним блоки, которые изучали:
- Балансировщики нагрузки — L3/L4 и L7.
- Api Gw — для распределения трафика по сервисам.
- L7 — для распределения трафика между инстансами одного приложения.
А еще у нас появляются наши микросервисы:
- Сервис пользователей — сохраняет инфу о пользователях и держит настройки.
- Сервис чатов — принимает запрос на отправку сообщения.
- Message-sender (сервис отправки сообщения) — отправляет сообщение получателю.
- Location-updater (сервис обновления локации пользователя) — получает свежую локацию пользователя. Это нам понадобится дальше, когда мы будем масштабироваться.
Исходя из этого рисуем схему:
Видишь, уже появились блоки и более-менее вырисовываются куски системы. Теперь предлагаю сделать небольшой поворот в сторону надежности. Вот у нас появились сервисы, и их как-то нужно оберегать от потенциального наплыва пользователей или ботов.
И да, именно Api Gateway и LB чаще всего служат защитниками наших сервисов от внешних DoS.