SA
1. Backend API - отвечает за основную CRUD логику находится позади всех. За одно является хранилищем сообщений.
2. Live chat service - отвечает за "живой" чат по websocket-у или ещё каким нибудь протоколам.
3. Client frontend
Когда пользователь заходит на сайт клиент подключает его к чат сервису. В ответ на что сервис возвращает ему последние N сообщений. На начальном этапе сервис может брать историю напрямую из API. Но в будущем конечно лучше прикрутить какое нибудь inmemory кэш хранилище.
Когда пользователь отправляет сообщение, сервис делает запрос в API для сохранения его в базе. После чего пересылает сообщение дальше подключённым пользователям. (запрос в API и пересылка сообщения пользователям может быть ассинхронной).



