ðïļ DEPLOYMENT_ARCHITECTURE.md - Deployment Architecture (āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļēāļĢāļāļķāđāļāļāļīāļāļāļąāđāļāļĢāļ°āļāļ)
This document describes the physical and container deployment topology of the SplitDee platform.
āđāļāļāļŠāļēāļĢāļāļāļąāļāļāļĩāđāļŠāļĢāļļāļāļ āļēāļāļĢāļ§āļĄāđāļĨāļ°āļāļąāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāļēāļĢāļāļąāļāļŠāđāļāļĢāļ°āļāļ (Deployment) āđāļāļāļēāļĢāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļĢāļīāļāļāļ Docker āļāļāļāđāļāļāđāļāļāļĢāđ
ðđð āļ āļēāļĐāļēāđāļāļĒ (āļŠāļģāļŦāļĢāļąāļāļāļđāđāđāļāđāļāļēāļ)
ð āļŠāļĢāļļāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāļēāļĢāļāļąāļāļ§āļēāļāļĢāļ°āļāļ (Deployment Topology)
- āļāđāļēāļāļŦāļāđāļēāđāļ§āđāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ (Nginx Ingress Proxy):
- āļāļđāđāļāļĢāļīāļāļēāļĢ:
splitdee-nginx - āļāļāļĢāđāļāđāļāļīāļāļĢāļąāļ: āļāļāļĢāđāļ 80 (HTTP āļāļģāļāļēāļĢāļŠāļĨāļąāļāđāļāđāļāđāļŠāđāļāļāļēāļāđāļ 443 āļāļąāļāđāļāļĄāļąāļāļī) āđāļĨāļ°āļāļāļĢāđāļ 443 (HTTPS)
- āļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠ: āļāļąāļāļāļąāđāļāđāļāļĢāļąāļāļĢāļāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļĩāļĒāđāļĨāļąāļ SSL āļāđāļēāļ Certbot Letâs Encrypt āđāļĨāļ°āļāļąāļāļŠāđāļāļāđāļāđāļāļŦāļēāđāļāļāļŦāļĨāļąāļāļāđāļēāļāļāļāļĢāđāļ 8000
- āļāļđāđāļāļĢāļīāļāļēāļĢ:
- āđāļāļāļāļĨāļīāđāļāļāļąāļāđāļ§āļāļĢāđāđāļ§āļāļĢāđāļŦāļĨāļąāļāļāđāļēāļ (FastAPI backend server):
- āļāļđāđāļāļĢāļīāļāļēāļĢ:
splitdee-backend - āļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄ: āļĢāļąāļāļāļāļ āļēāļāļāļģāļĨāļāļāđāļāļāļāļ 3.12 (Python 3.12) āļāļđāđāļāļąāļ Uvicorn ASGI server āļŦāļĨāļēāļĒāđāļ§āļīāļĢāđāļāđāļāļāļĢāđāđāļĒāļāđāļāļĢāļ
- āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒ: āļāļīāļāļāļąāđāļāļāļāļĢāđāļāļ āļēāļĒāļāļāļ āļĢāļąāļāļŠāļēāļĒāļāđāļāļāļĢāļāļāļēāļāļāļđāđ Nginx Proxy āļāđāļēāļāđāļāđāļāđāļāđāļ§āļīāļĢāđāļāļ āļēāļĒāđāļāđāļāđāļēāļāļąāđāļ
- āļāļđāđāļāļĢāļīāļāļēāļĢ:
- āļŦāļĄāļ§āļāļāļēāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āđāļāļāļāđāļ§āļ (Storage Layer):
- āļāļđāđāļāļĢāļīāļāļēāļĢ:
splitdee-db(PostgreSQL) āđāļĨāļ°splitdee-redis(Redis Cache) - āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒ: āļāļīāļāļāđāļāļāđāļāļ·āđāļāļĄāļāļēāļāļāļīāļāđāļāļāļĢāđāđāļāđāļāļ āļēāļĒāļāļāļ 100% āđāļāļ·āđāļāļĄāļāđāļāļāļĢāļāđāļāđāđāļāļāļēāļ°āđāļāļāļŦāļĨāļąāļāļāđāļēāļāļ āļēāļĒāđāļ Docker network āđāļāđāļēāļāļąāđāļ
- āļāļēāļĢāļĢāļąāļāļĐāļēāļāđāļāļĄāļđāļĨ: āđāļāđāļāļĨāđāļ mounts āļāļāļāđāļāļĨāļāđāļēāđāļ§āļĨāļĨāļļāđāļĄāļŦāļĨāļąāļāđāļŪāļŠāļāđāđāļŪāļĄāđāļāļĢāļ·āđāļāļ (
pgdataāđāļĨāļ°media) āļāđāļāļāļāļąāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āļŦāļĨāļąāļāļāļēāļāļĢāļđāļāļ āļēāļāļŠāļĨāļīāļāđāļāđāļŠāļĢāđāļāļŠāļđāļāļŦāļēāļĒ
- āļāļđāđāļāļĢāļīāļāļēāļĢ:
ðŽð§ English (For AI Agents)
ðšïļ Deployment Diagram
graph TD UserClient[Mobile App Client] Internet((Internet)) subgraph LinuxVPS [Production Linux VPS Server] subgraph DockerNetwork [Isolated Docker Bridge Network] Nginx[Nginx Reverse Proxy Container] FastAPI[FastAPI App Container] Postgres[PostgreSQL DB Container] Redis[Redis Cache Container] end subgraph LocalDisk [Local Host Disk Storage] PGVolume[(pgdata volume)] MediaVolume[(media volume)] end end subgraph ExternalCloud [Third-Party Cloud Services] S3Bucket[AWS S3 Secure Storage] BankAPI[Bank Slip Verification API] FCMService[Firebase Cloud Messaging] end UserClient -- HTTPS (443) / WSS --> Internet Internet --> Nginx Nginx -- Proxy Pass (8000) --> FastAPI FastAPI --> Postgres FastAPI --> Redis Postgres -- Mounts --> PGVolume FastAPI -- Mounts --> MediaVolume FastAPI -- Secure Upload --> S3Bucket FastAPI -- HTTPS Web Request --> BankAPI FastAPI -- Admin SDK push --> FCMService
ð Topology Details
- 1. Ingress Proxy (Nginx)
- Container Name:
splitdee-nginx - Ports: Exposes port
80(redirects to 443) and port443(SSL). - SSL: Terminated via Certbot Letâs Encrypt. Routes
/api/v1calls to FastAPI backend container port8000.
- Container Name:
- 2. Application Server (FastAPI)
- Container Name:
splitdee-backend - Runtime: Python 3.12 multi-worker process running under Uvicorn ASGI server.
- Security: Isolated behind the Nginx reverse proxy. Exposes no public ports.
- Container Name:
- 3. Storage Layer (PostgreSQL & Redis)
- Container Names:
splitdee-db,splitdee-redis - Security: Private inside the Docker network. Strictly inaccessible from the public internet.
- Persistence: Mounted host directory volumes
pgdatafor Postgres andmediafor static slip uploads.
- Container Names: