Схема взаимодействия компонент
Time состоит из нескольких сервисов, а также требует установки ряда инфраструктурных сервисов. Взаимодействие пользователя и компонент представлено на схеме:
- PostgreSQL (Master) — используется как основная база данных, здесь хранятся пользователи, каналы, посты, а также конфигурация Time.
- PostgreSQL (Replica) — приложение может использовать read-реплики, таким образом достигается масштабирование базы данных и отказоустойчивость.
- S3 — хранение загружаемых в Time файлов
- Redis — используется как распределенный кеш, а так же позволяет реализовать возможность работать в режиме кластера (механизм Leader Election) при использовании приложения в режиме высокой доступности (High Availability).
- Elasticsearch/OpenSearch — используется как бэкенд для поискового движка.
- Kafka — используется для обмена сообщениями между инстансами time-server.
- Push Notification Server — сервис для отправки push-нотификаций на моб. устройства.
- Slack-Time Proxy — упрощенный прокси-сервер, который проксирует входящие вызовы Slack API в формат Time.
- time-front — веб-приложение Time.