shoehorning graphql, step functions and lamdas. aws deployment scripts
This commit is contained in:
@@ -3,13 +3,11 @@ digraph system_overview {
|
||||
node [shape=box, style=rounded, fontname="Helvetica"]
|
||||
edge [fontname="Helvetica", fontsize=10]
|
||||
|
||||
// Title
|
||||
labelloc="t"
|
||||
label="MPR - System Overview"
|
||||
fontsize=16
|
||||
fontname="Helvetica-Bold"
|
||||
|
||||
// Styling
|
||||
graph [splines=ortho, nodesep=0.8, ranksep=0.8]
|
||||
|
||||
// External
|
||||
@@ -18,7 +16,7 @@ digraph system_overview {
|
||||
style=dashed
|
||||
color=gray
|
||||
|
||||
browser [label="Browser\nmpr.local.ar", shape=ellipse]
|
||||
browser [label="Browser\nmpr.local.ar / mpr.mcrn.ar", shape=ellipse]
|
||||
}
|
||||
|
||||
// Nginx reverse proxy
|
||||
@@ -37,7 +35,7 @@ digraph system_overview {
|
||||
fillcolor="#f0f8e8"
|
||||
|
||||
django [label="Django\n/admin\nport 8701"]
|
||||
fastapi [label="FastAPI\n/api\nport 8702"]
|
||||
fastapi [label="FastAPI\n/api + /graphql\nport 8702"]
|
||||
timeline [label="Timeline UI\n/ui\nport 5173"]
|
||||
}
|
||||
|
||||
@@ -48,8 +46,17 @@ digraph system_overview {
|
||||
fillcolor="#fff8e8"
|
||||
|
||||
grpc_server [label="gRPC Server\nport 50051"]
|
||||
celery [label="Celery Worker\n(local)"]
|
||||
lambda [label="Lambda\n(cloud)", style="dashed,rounded"]
|
||||
celery [label="Celery Worker\n(local mode)"]
|
||||
}
|
||||
|
||||
// AWS layer
|
||||
subgraph cluster_aws {
|
||||
label="AWS (lambda mode)"
|
||||
style=filled
|
||||
fillcolor="#fde8d0"
|
||||
|
||||
step_functions [label="Step Functions\nstate machine"]
|
||||
lambda [label="Lambda\nFFmpeg container"]
|
||||
}
|
||||
|
||||
// Data layer
|
||||
@@ -58,48 +65,50 @@ digraph system_overview {
|
||||
style=filled
|
||||
fillcolor="#f8e8f0"
|
||||
|
||||
postgres [label="PostgreSQL\nport 5433", shape=cylinder]
|
||||
redis [label="Redis\nport 6380", shape=cylinder]
|
||||
sqs [label="SQS\n(cloud)", shape=cylinder, style=dashed]
|
||||
postgres [label="PostgreSQL\nport 5436", shape=cylinder]
|
||||
redis [label="Redis\nport 6381", shape=cylinder]
|
||||
}
|
||||
|
||||
// Storage
|
||||
subgraph cluster_storage {
|
||||
label="File Storage"
|
||||
label="S3 Storage"
|
||||
style=filled
|
||||
fillcolor="#f0f0f0"
|
||||
|
||||
local_fs [label="Local FS\n/media", shape=folder]
|
||||
s3 [label="S3\n(cloud)", shape=folder, style=dashed]
|
||||
minio [label="MinIO (local)\nport 9000", shape=folder]
|
||||
s3 [label="AWS S3 (cloud)", shape=folder, style="dashed,rounded"]
|
||||
bucket_in [label="mpr-media-in", shape=note]
|
||||
bucket_out [label="mpr-media-out", shape=note]
|
||||
}
|
||||
|
||||
// Connections
|
||||
browser -> nginx
|
||||
|
||||
nginx -> django [label="/admin"]
|
||||
nginx -> fastapi [label="/api"]
|
||||
nginx -> timeline [label="/ui"]
|
||||
nginx -> django [xlabel="/admin"]
|
||||
nginx -> fastapi [xlabel="/api, /graphql"]
|
||||
nginx -> timeline [xlabel="/ui"]
|
||||
nginx -> minio [xlabel="/media/*"]
|
||||
|
||||
// Django uses FastAPI for operations (single API gateway)
|
||||
django -> fastapi [label="job operations"]
|
||||
django -> postgres [label="CRUD only"]
|
||||
timeline -> fastapi [xlabel="REST API"]
|
||||
|
||||
// Timeline UI uses FastAPI
|
||||
timeline -> fastapi [label="REST API"]
|
||||
|
||||
// FastAPI is the single API gateway
|
||||
fastapi -> postgres
|
||||
fastapi -> redis [label="job status"]
|
||||
fastapi -> grpc_server [label="gRPC\nprogress streaming"]
|
||||
fastapi -> grpc_server [xlabel="gRPC\nprogress"]
|
||||
|
||||
// Worker layer
|
||||
grpc_server -> celery [label="task dispatch"]
|
||||
celery -> redis [label="queue"]
|
||||
celery -> postgres [label="job updates"]
|
||||
celery -> grpc_server [label="progress\ncallbacks", style=dotted]
|
||||
celery -> local_fs [label="read/write"]
|
||||
// Local mode
|
||||
grpc_server -> celery [xlabel="task dispatch"]
|
||||
celery -> redis [xlabel="queue"]
|
||||
celery -> postgres [xlabel="job updates"]
|
||||
celery -> minio [xlabel="S3 API\ndownload/upload"]
|
||||
|
||||
// Cloud (future)
|
||||
lambda -> sqs [label="queue", style=dashed]
|
||||
lambda -> s3 [label="read/write", style=dashed]
|
||||
// Lambda mode
|
||||
fastapi -> step_functions [xlabel="boto3\nstart_execution", style=dashed]
|
||||
step_functions -> lambda [style=dashed]
|
||||
lambda -> s3 [xlabel="download/upload", style=dashed]
|
||||
lambda -> fastapi [xlabel="callback\nPOST /jobs/{id}/callback", style=dashed]
|
||||
|
||||
// Storage details
|
||||
minio -> bucket_in [style=dotted, arrowhead=none]
|
||||
minio -> bucket_out [style=dotted, arrowhead=none]
|
||||
s3 -> bucket_in [style=dotted, arrowhead=none]
|
||||
s3 -> bucket_out [style=dotted, arrowhead=none]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user