106 lines
7.0 KiB
Markdown
106 lines
7.0 KiB
Markdown
# La Suite Conversations – System & Requirements (2025-06)
|
||
|
||
## 1. Quick-Reference Matrix (single VM / laptop)
|
||
|
||
| Scenario | RAM | vCPU | SSD | Notes |
|
||
|---------------------------|-------|------|---------|---------------------------|
|
||
| **Solo dev** | 8 GB | 4 | 15 GB | Hot-reload + one IDE |
|
||
| **Team QA** | 16 GB | 6 | 30 GB | Runs integration tests |
|
||
| **Prod ≤ 100 live users** | 32 GB | 8 + | 50 GB + | Scale linearly above this |
|
||
|
||
Memory is the first bottleneck; CPU matters only when Celery or the Next.js build is saturated.
|
||
|
||
> **Note:** Memory consumption varies by operating system. Windows tends to be more memory-hungry than Linux, so consider adding 10-20% extra RAM when running on Windows compared to Linux-based systems.
|
||
|
||
## 2. Development Environment Memory Requirements
|
||
|
||
| Service | Typical use | Rationale / source |
|
||
|------------------|-------------------------------|-----------------------------------------------------------------------------------------|
|
||
| PostgreSQL | **1 – 2 GB** | `shared_buffers` starting point ≈ 25% RAM ([postgresql.org][1]) |
|
||
| Keycloak | **≈ 1.3 GB** | 70% of limit for heap + ~300 MB non-heap ([keycloak.org][2]) |
|
||
| Redis | **≤ 256 MB** | Empty instance ≈ 3 MB; budget 256 MB to allow small datasets ([stackoverflow.com][3]) |
|
||
| MinIO | **2 GB (dev) / 32 GB (prod)** | Pre-allocates 1–2 GiB; docs recommend 32 GB per host for ≤ 100 Ti storage ([min.io][4]) |
|
||
| Django API | **0.8 – 1.5 GB** | Empirical in-house metrics |
|
||
| Next.js frontend | **0.5 – 1 GB** | Dev build chain |
|
||
| Nginx | **< 100 MB** | Static reverse-proxy footprint |
|
||
|
||
[1]: https://www.postgresql.org/docs/9.1/runtime-config-resource.html "PostgreSQL: Documentation: 9.1: Resource Consumption"
|
||
[2]: https://www.keycloak.org/high-availability/concepts-memory-and-cpu-sizing "Concepts for sizing CPU and memory resources - Keycloak"
|
||
[3]: https://stackoverflow.com/questions/45233052/memory-footprint-for-redis-empty-instance "Memory footprint for Redis empty instance - Stack Overflow"
|
||
[4]: https://min.io/docs/minio/kubernetes/upstream/operations/checklists/hardware.html "Hardware Checklist — MinIO Object Storage for Kubernetes"
|
||
|
||
> **Rule of thumb:** add 2 GB for OS/overhead, then sum only the rows you actually run.
|
||
|
||
## 3. Production Environment Memory Requirements
|
||
|
||
Production deployments differ significantly from development environments. The table below shows typical memory usage for production services:
|
||
|
||
| Service | Typical use | Rationale / notes |
|
||
|---------------------------|-----------------------------|------------------------------------------------------------------------------------------|
|
||
| PostgreSQL | **2 – 8 GB** | Higher `shared_buffers` and connection pooling for concurrent users |
|
||
| OIDC Provider (optional) | **Variable** | Any OIDC-compatible provider (Keycloak, Auth0, Azure AD, etc.) - external or self-hosted |
|
||
| Redis | **256 MB – 2 GB** | Session storage and caching; scales with active user sessions |
|
||
| Object Storage (optional) | **External or self-hosted** | Can use AWS S3, Azure Blob, Google Cloud Storage, or self-hosted MinIO |
|
||
| Django API (+ Celery) | **1 – 3 GB** | Production workloads with background tasks and higher concurrency |
|
||
| Static Files (Nginx) | **< 200 MB** | Serves Next.js build output and static assets; no development overhead |
|
||
| Nginx (Load Balancer) | **< 200 MB** | Reverse proxy, SSL termination, static file serving |
|
||
|
||
### Production Architecture Notes
|
||
|
||
- **Frontend**: Uses pre-built Next.js static assets served by Nginx (no Node.js runtime needed)
|
||
- **Authentication**: Any OIDC-compatible provider can be used instead of self-hosted Keycloak
|
||
- **Object Storage**: External services (S3, Azure Blob) or self-hosted solutions (MinIO) are both viable
|
||
- **Database**: Consider PostgreSQL clustering or managed database services for high availability
|
||
- **Scaling**: Horizontal scaling is recommended for Django API service
|
||
|
||
### Minimal Production Setup (Core Services Only)
|
||
|
||
| Service | Memory | Notes |
|
||
|----------------------------------|------------|----------------------------------------|
|
||
| PostgreSQL | **2 GB** | Core database |
|
||
| Django API | **1.5 GB** | Backend services |
|
||
| Nginx | **100 MB** | Static files + reverse proxy |
|
||
| Redis | **256 MB** | Session storage |
|
||
| **Total (without auth/storage)** | **≈ 4 GB** | External OIDC + object storage assumed |
|
||
|
||
## 4. Recommended Software Versions
|
||
|
||
| Tool | Minimum |
|
||
|-------------------------|---------|
|
||
| Docker Engine / Desktop | 24.0 |
|
||
| Docker Compose | v2 |
|
||
| Git | 2.40 |
|
||
| **Node.js** | 22+ |
|
||
| **Python** | 3.13+ |
|
||
| GNU Make | 4.4 |
|
||
| Kind | 0.22 |
|
||
| Helm | 3.14 |
|
||
| kubectl | 1.29 |
|
||
| mkcert | 1.4 |
|
||
|
||
|
||
## 5. Ports (dev defaults)
|
||
|
||
| Port | Service |
|
||
|-----------|----------------------------|
|
||
| 3000 | Next.js |
|
||
| 8071 | Django |
|
||
| 8080 | Keycloak |
|
||
| 8083 | Nginx proxy |
|
||
| 9000/9001 | MinIO |
|
||
| 15432 | PostgreSQL (main) |
|
||
| 5433 | PostgreSQL (Keycloak) |
|
||
| 1081 | Maildev (currently unused) |
|
||
|
||
## 6. Sizing Guidelines
|
||
|
||
**RAM** – start at 8 GB dev / 16 GB staging / 32 GB prod. Postgres and Keycloak are the first to OOM; scale them first.
|
||
|
||
> **OS considerations:** Windows systems typically require 10-20% more RAM than Linux due to higher OS overhead. Docker Desktop on Windows also uses additional memory compared to native Linux Docker.
|
||
|
||
**CPU** – budget one vCPU per busy container until Celery or Next.js builds saturate.
|
||
|
||
**Disk** – SSD; add 10 GB extra for the Docker layer cache.
|
||
|
||
**MinIO** – for demos, mount a local folder instead of running MinIO to save 2 GB+ of RAM.
|