Перейти до вмісту

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
ЗвідкиКудиЩо передається
Abitly WebAbitly APIbus-data (REST), JWT в cookie
Abitly WebStrapiконтент (REST/GraphQL)
Abitly WebStudsearch backendcross-product search
Abitly WebAnalyticstrack() події через POST на Lambda
Mini AppAbitly APIте ж + Telegram init data
Telegram botAbitly APIuser actions з Telegram (notifications, payments init)
Studsearch backendAbitly APIcross-product дані (env abitly_url)
Abitly APIValkeyBullMQ-черги, кеш, rate-limit
Abitly APITypesensesearch index queries
Abitly APIPostgresосновні дані
StrapiPostgresконтент
StrapiS3медіа
  • Studsearch Telegram bot — host та зв’язки (підтверджено: НЕ у studsearch-backend-v2; де живе — TODO:).
  • Mini App ↔ Telegram WebApp init data validation flow (показати окремо).

Інфраструктурна мапа → infrastructure. Sequence-діаграми ключових flow → data-flows.