Hermes Wiki
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:

  1. Users: > 500 concurrent users or > 50,000 total users
  2. Data: > 50GB database size or > 1M active records
  3. Traffic: > 1,000 requests/second
  4. Uptime: Need 99.9% availability
  5. 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
Hermes Wiki