Containers (C4 рівень 2)
Деталізація — які сервіси, бази та сховища існують, як пов’язані.
flowchart LR
subgraph abitly[Abitly.org]
direction TB
a_web[Web · Next.js<br/>ECS Fargate / Amplify dev]
a_mini[Mini App · Next.js<br/>Railway]
a_bot[Telegram bot · Telegraf<br/>Railway]
a_cms[Strapi v5<br/>EC2]
a_api[NestJS API<br/>ECS Fargate]
a_analytics[Analytics Lambda<br/>+ Firehose + S3]
end
subgraph studsearch[Studsearch.org]
direction TB
s_web[Web · Next.js<br/>Amplify]
s_api[NestJS Backend<br/>Elastic Beanstalk]
s_bot[Telegram bot<br/>TODO host]
end
subgraph data[Дані]
direction TB
pg[(Postgres 17.9<br/>RDS · t4g.small<br/>SHARED INSTANCE)]
valkey[(Valkey 8.0.1<br/>ElastiCache)]
ts[(Typesense<br/>EC2)]
s3_media[(S3<br/>strapi-media)]
s3_lake[(S3 Iceberg<br/>analytics)]
end
a_web --> a_api
a_web --> a_cms
a_web -- cross-product --> s_api
a_web -- track() --> a_analytics
a_mini --> a_api
a_bot --> a_api
a_api -- "schema: abitly" --> pg
a_api --> valkey
a_api --> ts
a_cms -- "schema: public" --> pg
a_cms --> s3_media
a_bot -- "schema: abitly" --> pg
a_analytics --> s3_lake
s_web --> s_api
s_api -- "schema: studsearch" --> pg
s_api -- cross-product --> a_api
s_bot -.-> s_api
Ключові зв’язки
Section titled “Ключові зв’язки”| Звідки | Куди | Що передається |
|---|---|---|
| Abitly Web | Abitly API | bus-data (REST), JWT в cookie |
| Abitly Web | Strapi | контент (REST/GraphQL) |
| Abitly Web | Studsearch backend | cross-product search |
| Abitly Web | Analytics | track() події через POST на Lambda |
| Mini App | Abitly API | те ж + Telegram init data |
| Telegram bot | Abitly API | user actions з Telegram (notifications, payments init) |
| Studsearch backend | Abitly API | cross-product дані (env abitly_url) |
| Abitly API | Valkey | BullMQ-черги, кеш, rate-limit |
| Abitly API | Typesense | search index queries |
| Abitly API | Postgres | основні дані |
| Strapi | Postgres | контент |
| Strapi | S3 | медіа |
TODO в діаграмі
Section titled “TODO в діаграмі”- Studsearch Telegram bot — host та зв’язки (підтверджено: НЕ у
studsearch-backend-v2; де живе —TODO:). - Mini App ↔ Telegram WebApp init data validation flow (показати окремо).
Інфраструктурна мапа → infrastructure. Sequence-діаграми ключових flow → data-flows.