LocalzDocs/Development-Setup-Resources-and-Capacity
Development Setup Resources and Capacity
PostgreSQL (marketplace-postgres)
Current Setup: PostgreSQL 15 Alpine, default configuration
Capacity:
- Data Storage: 10-100GB easily (limited by your disk space)
- Rows/Records: Millions of records per table
- Concurrent Connections: 20-100 connections (default is 100)
- Throughput: 1,000-5,000 queries/second for simple queries
- Users: Can handle 100-500 concurrent users for typical CRUD operations
Bottlenecks:
- Docker memory allocation (default ~2GB)
- No connection pooling configured
- Single instance (no replication)
- Local disk I/O on SSD vs HDD
Redis (marketplace-redis)
Current Setup: Redis 7 Alpine, default configuration
Capacity:
- Data Storage: 100MB-10GB (depends on your RAM allocation)
- Keys: 10-100 million keys easily
- Throughput: 100,000-500,000 operations/second
- Concurrent Connections: 10,000+ connections
Bottlenecks:
- Redis is in-memory, limited by Docker memory allocation
- Single instance (no clustering)
- Persistence (AOF) enabled, slightly slower writes
MinIO (marketplace-minio)
Current Setup: MinIO latest, local file storage
Capacity:
- Storage: Limited only by disk space (100GB-1TB+)
- Files: Millions of objects
- Throughput: 100-500 MB/s (depends on disk speed)
- Concurrent Uploads: 50-200 simultaneous uploads
Bottlenecks:
- Local disk I/O
- Single instance (no distributed setup)
- Network bandwidth to Docker containers
Keycloak (marketplace-keycloak)
Current Setup: Keycloak latest, dev mode
Capacity:
- Users: 10,000-100,000 users
- Sessions: 1,000-5,000 active sessions
- Login Throughput: 50-200 logins/second
- Concurrent Users: 500-2,000 active users
Bottlenecks:
- Running in dev mode (not production optimized)
- Shares database with main app
- No caching configured
- Single instance (no clustering)
Overall System Capacity
For Development/Testing:
- ✅ 10-50 concurrent users: Excellent performance
- ✅ 100-500 concurrent users: Good performance
- ⚠️ 500-1,000 concurrent users: Acceptable, may see slowdowns
- ❌ 1,000+ concurrent users: Will struggle, need production setup
Typical Development Data:
- ✅ 1,000-10,000 users
- ✅ 10,000-100,000 products
- ✅ 100,000-1M orders
- ✅ 1-10GB total data
When to Scale Up
You'll need a production setup when:
- Users: > 500 concurrent users or > 50,000 total users
- Data: > 50GB database size or > 1M active records
- Traffic: > 1,000 requests/second
- Uptime: Need 99.9% availability
- Geography: Need multi-region deployment
Production improvements would include:
- PostgreSQL: Connection pooling (PgBouncer), read replicas, partitioning
- Redis: Clustering, Redis Sentinel for HA
- MinIO: Distributed mode with erasure coding
- Keycloak: Clustering, separate database, CDN for static assets
- Load balancing and horizontal scaling
- Dedicated hardware/cloud instances (not Docker)
Your current setup is perfect for:
- Development and testing
- Demos and prototypes
- Small internal tools (< 100 users)
- Learning and experimentation