740fd2d7bd
repository map zavoz
29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
@startuml
|
|
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
|
|
|
|
LAYOUT_LEFT_RIGHT()
|
|
|
|
title LOTTY - C4 Container
|
|
|
|
Person(product_client, "Product Client", "Web/Mobile app")
|
|
Person(ops_user, "Experimenter/Approver/Admin/Viewer")
|
|
|
|
System_Boundary(lotty_boundary, "LOTTY Backend") {
|
|
Container(api, "Backend API", "Django + Ninja", "REST endpoints: flags, experiments, decide, events, reports, guardrails, notifications, conflicts, metrics, learnings, reviews, users, auth")
|
|
ContainerDb(db, "PostgreSQL / SQLite", "Relational DB", "Experiments, variants, decisions, events, exposures, outcomes, guardrails, notifications, conflicts, logs")
|
|
Container(cache, "Valkey / Redis / LocMem Cache", "Cache + Celery broker", "Flag/experiment/decide-result cache, Celery task broker")
|
|
Container(worker, "Celery Worker / Beat", "Background worker", "Periodic jobs + async decision persistence")
|
|
}
|
|
|
|
System_Ext(notifications, "Notification Channels", "Telegram / SMTP")
|
|
|
|
Rel(product_client, api, "Gets flag decisions, sends events", "HTTP/JSON")
|
|
Rel(ops_user, api, "Admin/experiment/review calls", "HTTP/JSON")
|
|
Rel(api, db, "Read/write application state", "SQL")
|
|
Rel(api, cache, "Read/write cache, enqueue async tasks", "Redis protocol")
|
|
Rel(worker, db, "Read/write application state", "SQL")
|
|
Rel(worker, cache, "Consumes tasks, reads cached state", "Redis protocol")
|
|
Rel(worker, notifications, "Delivers queued notifications", "HTTP / SMTP")
|
|
|
|
@enduml
|