Startup
Startup: Python Monolith on VM
A cost-effective, simple deployment for early-stage startups. Runs a Pythonweb application (Django/FastAPI) behind Nginx on a single Virtual Machine.
Architecture Diagram
%% Autogenerated startup-vm-python
graph TD
classDef standard fill:#1e293b,stroke:#38bdf8,stroke-width:1px,color:#e5e7eb;
classDef c-actor fill:#1e293b,stroke:#e5e7eb,stroke-width:1px,stroke-dasharray: 5 5,color:#e5e7eb;
classDef c-compute fill:#422006,stroke:#fb923c,stroke-width:1px,color:#fed7aa;
classDef c-database fill:#064e3b,stroke:#34d399,stroke-width:1px,color:#d1fae5;
classDef c-network fill:#2e1065,stroke:#a855f7,stroke-width:1px,color:#f3e8ff;
classDef c-storage fill:#450a0a,stroke:#f87171,stroke-width:1px,color:#fee2e2;
classDef c-security fill:#450a0a,stroke:#f87171,stroke-width:1px,color:#fee2e2;
classDef c-gateway fill:#2e1065,stroke:#a855f7,stroke-width:1px,color:#f3e8ff;
classDef c-container fill:#422006,stroke:#facc15,stroke-width:1px,color:#fef9c3;
subgraph vm-layer ["VM-LAYER"]
direction TB
nginx(("Nginx
gateway
Reverse Proxy & SSL")) class nginx c-network app("Python App (Gunicorn)
service") class app c-compute db[("PostgreSQL
database
Local or Managed")] class db c-database redis("Redis
cache
Cache & Broker") class redis standard end %% Orphans user(("User / Client
actor")) class user c-actor host("Virtual Machine (Linux)
compute
Ubuntu / Debian") class host c-compute %% Edges nginx -.-> app app -.-> db app -.-> redis
gateway
Reverse Proxy & SSL")) class nginx c-network app("Python App (Gunicorn)
service") class app c-compute db[("PostgreSQL
database
Local or Managed")] class db c-database redis("Redis
cache
Cache & Broker") class redis standard end %% Orphans user(("User / Client
actor")) class user c-actor host("Virtual Machine (Linux)
compute
Ubuntu / Debian") class host c-compute %% Edges nginx -.-> app app -.-> db app -.-> redis
Description
This architecture is optimized for speed of iteration and simplicity. It avoids complex orchestration frameworks in favor of a reliable, well-understood “Monolith on a Box” pattern.
Core Components:
- Virtual Machine: A single compute instance (AWS EC2, Google Compute, Azure VM, or DigitalOcean Droplet) hosts the entire stack.
- Nginx: Acts as the reverse proxy, handling SSL termination, static file serving, and forwarding traffic to the application server.
- Application Server: Runs the Python code (e.g., Gunicorn for Django/FastAPI).
- Database: A local or managed PostgreSQL instance provides relational data storage.
- Redis: Used for caching and background tasks (e.g., Celery) to keep the main thread responsive.
Why this stack? For a new project, “boring” technology is a competitive advantage. This stack scales vertically for a long time before needing horizontal breakdown.
Tech Stack
| Component | Technology |
|---|---|
| Segment | startup |
| Deployment | vm-monolith |
| Language | python |
| Web Server | nginx |
| Database | postgres |
| Cache | redis |
System Components
The following distinct entities are defined in this architecture:
| Component | Type | Notes |
|---|---|---|
| User / Client | actor | - |
| Virtual Machine (Linux) | compute | Ubuntu / Debian |
| Nginx | gateway | Reverse Proxy & SSL |
| Python App (Gunicorn) | service | - |
| PostgreSQL | database | Local or Managed |
| Redis | cache | Cache & Broker |
Interested in this architecture?
Let's discuss how to adapt the Startup: Python Monolith on VM stack for your specific needs.
Contact Us