Scaling

Scale RouteMQ applications to handle increased load through horizontal and vertical scaling strategies.

Scaling Overview

RouteMQ supports multiple scaling approaches:

  • Horizontal Scaling: Add more application instances

  • Vertical Scaling: Increase resources per instance

  • Database Scaling: Scale database layer independently

  • MQTT Broker Scaling: Scale message broker infrastructure

  • Auto-scaling: Automatic scaling based on metrics

Horizontal Scaling

Shared Subscription Scaling

RouteMQ's built-in shared subscription support enables horizontal scaling:

# Enable shared subscriptions in your routes
from core.router import Router

router = Router()

# Scale with multiple workers for high-throughput routes
router.on("sensors/{device_id}/data", 
          SensorController.process_data,
          shared=True, 
          worker_count=5)  # 5 workers for this route

# Different scaling for different routes
router.on("alerts/{device_id}", 
          AlertController.handle_alert,
          shared=True,
          worker_count=2)  # 2 workers for alerts

# Non-shared for order-dependent processing
router.on("commands/{device_id}", 
          CommandController.execute_command,
          shared=False)  # Single worker maintains order

Container-Based Horizontal Scaling

Docker Swarm Scaling

Deploy with Docker Swarm:

Kubernetes Horizontal Scaling

Scale Kubernetes deployment:

Multi-Instance Configuration

Instance Coordination

Load Distribution Strategies

Vertical Scaling

Resource Optimization

CPU Scaling

Memory Scaling

Worker Process Scaling

Dynamic Worker Adjustment

Database Scaling

Read Replicas

Connection Pool Scaling

Auto-scaling

Kubernetes Horizontal Pod Autoscaler

Custom Metrics for Auto-scaling

Cloud Auto-scaling

AWS ECS Auto-scaling

AWS Lambda Auto-scaling

Performance Monitoring for Scaling

Scaling Metrics Dashboard

Load Testing for Scaling Validation

Scaling Best Practices

Guidelines

  1. Start Small: Begin with minimal resources and scale up based on actual load

  2. Monitor Continuously: Use comprehensive monitoring to understand scaling needs

  3. Test Scaling: Regularly test scaling scenarios under load

  4. Plan for Peak Load: Consider peak usage patterns and seasonal variations

  5. Automate Scaling: Use auto-scaling to respond quickly to load changes

Common Pitfalls

  • Over-provisioning: Wasting resources on unused capacity

  • Under-provisioning: Causing performance issues during peak load

  • Ignoring Dependencies: Scaling application without considering database/MQTT broker limits

  • Missing Monitoring: Scaling without proper metrics and alerting

  • State Management: Not considering stateful operations when scaling horizontally

Resource Planning

Next Steps

Last updated