Давай сделаем шаг к более целостной архитектуре

Что ж, пора сделать примерный дизайн мессенджера.

Давай вместе вспомним блоки, которые изучали:

  1. Балансировщики нагрузки — L3/L4 и L7.
  2. Api Gw — для распределения трафика по сервисам.
  3. L7 — для распределения трафика между инстансами одного приложения.

А еще у нас появляются наши микросервисы:

  1. Сервис пользователей — сохраняет инфу о пользователях и держит настройки.
  2. Сервис чатов — принимает запрос на отправку сообщения.
  3. Message-sender (сервис отправки сообщения) — отправляет сообщение получателю.
  4. Location-updater (сервис обновления локации пользователя) — получает свежую локацию пользователя. Это нам понадобится дальше, когда мы будем масштабироваться.

Исходя из этого рисуем схему:

Видишь, уже появились блоки и более-менее вырисовываются куски системы. Теперь предлагаю сделать небольшой поворот в сторону надежности. Вот у нас появились сервисы, и их как-то нужно оберегать от потенциального наплыва пользователей или ботов. 

И да, именно Api Gateway и LB чаще всего служат защитниками наших сервисов от внешних DoS.