rfd--order-history
Overview
- Namespace:
rfd--order-history - Purpose: Referring Doctor Order History Backend - PRODUCTION
- Age: ~2 years 335 days (since December 2022)
- Status: Active - Doctor order tracking and history
- Workloads: 5 deployments (all active)
- Environment: PRODUCTION - Order management and tracking
Architecture
Order history system handling order creation, updates, and account synchronization:
- Main Application: REST API backend (7 replicas) - Excellent HA with HPA
- Event Consumers: Order creation, updates, account sync (3 deployments)
- Worker: Background job processing (2 replicas)
Auto-Scaling Configuration
Excellent Auto-Scaling Setup:
- 1 Standard HPA: Main API (1-10 replicas, CPU + Memory based)
- 2 KEDA HPAs: Queue-based consumer scaling
- consumer-update-order (1-10 replicas)
- consumer-cs-account-update-order (1-3 replicas)
Workload Categories
Main Application (1 deployment with HPA)
| Name | Replicas | HPA Status | Purpose |
|---|---|---|---|
| rfd--order-history--be--app--prod | 7/7 | HPA Active (1-10, CPU+Memory) | Main order history API |
Event Consumers (3 deployments - 2 with KEDA)
| Name | Replicas | KEDA Status | Purpose |
|---|---|---|---|
| consumer-update-order | 1/1 | KEDA (1-10, queue depth: 3/20) | Order update processing |
| consumer-cs-account-update-order | 1/1 | KEDA (1-3, queue depth: 0/20) | Account order updates |
| consumer-create-booking | 1/1 | No scaling | Booking creation from orders |
Workers (1 deployment)
| Name | Replicas | Status | Purpose |
|---|---|---|---|
| wrk--default | 2/2 | Running | Default worker queue (HA) |
HPAs & KEDA Details
Standard HPA - Main API
Name: rfd--order-history--be--app--prod
Current: 7 replicas
Min: 1 replica
Max: 10 replicas
Metrics: CPU (7%) + Memory (191298998857m/200Mi)
Status: Scaling actively based on load
KEDA HPA #1 - Order Updates
Name: keda-hpa-rfd--order-history--be--consumer-update-order--prod
Current: 1 replica
Min: 1 replica
Max: 10 replicas
Queue Depth: 3/20 (avg)
Status: Active, ready to scale
KEDA HPA #2 - Account Updates
Name: keda-hpa-rfd--order-history--be--consumer-cs-account-update-order--prod
Current: 1 replica
Min: 1 replica
Max: 3 replicas
Queue Depth: 0/20 (avg)
Status: Active, no current load
Services
| Name | Type | Cluster IP | Ports | NodePort | Purpose |
|---|---|---|---|---|---|
| rfd--order-history--be--app--prod | NodePort | 10.8.31.50 | 80 | 32616 | Main order history API |
Access & Management
View all resources:
kubectl get all -n rfd--order-history
Check HPAs:
# All HPAs
kubectl get hpa -n rfd--order-history
# Main API HPA
kubectl describe hpa rfd--order-history--be--app--prod -n rfd--order-history
# KEDA HPAs
kubectl get scaledobjects -n rfd--order-history
Check main application:
# View app pods (7 replicas with HPA)
kubectl get pods -n rfd--order-history | grep "app--prod"
# View logs from all replicas
kubectl logs -f deployment/rfd--order-history--be--app--prod -n rfd--order-history
Check consumers:
# All consumers
kubectl get pods -n rfd--order-history | grep consumer
# Order update consumer (KEDA scaled)
kubectl logs -f deployment/rfd--order-history--be--consumer-update-order--prod -n rfd--order-history
# Account update consumer (KEDA scaled)
kubectl logs -f deployment/rfd--order-history--be--consumer-cs-account-update-order--prod -n rfd--order-history
Restart services:
# Restart main app (HPA will maintain replicas)
kubectl rollout restart deployment/rfd--order-history--be--app--prod -n rfd--order-history
# Restart all consumers
kubectl get deployments -n rfd--order-history | grep consumer | awk '{print $1}' | xargs -I {} kubectl rollout restart deployment/{} -n rfd--order-history
Monitoring
Resource usage:
kubectl top pods -n rfd--order-history --sort-by=memory
kubectl top pods -n rfd--order-history --sort-by=cpu
HPA Status:
# Watch HPA scaling
kubectl get hpa -n rfd--order-history -w
# Detailed HPA info
kubectl describe hpa -n rfd--order-history
Events:
kubectl get events -n rfd--order-history --sort-by='.lastTimestamp' | head -20
Data Flow
Doctor Order Request
↓
rfd--order-history--be--app--prod (NodePort 32616)
↓
Main Order History API (7 replicas - HPA scaling 1-10)
↓
Database (external)
↓
Events Published to Message Queue
↓
Consumers Process Events (KEDA auto-scaling)
├─ Order Updates → consumer-update-order (KEDA: 1-10 replicas)
├─ Account Updates → consumer-cs-account-update-order (KEDA: 1-3 replicas)
└─ Booking Creation → consumer-create-booking
↓
Workers Process Background Jobs (2 replicas)
↓
Order history, tracking, doctor notifications
Order History Workflow
1. Order History API (Excellent Scaling)
- 7 replicas currently active (HPA managing)
- HPA scales 1-10 based on CPU + Memory
- Doctor order queries
- Historical order views
- Order status tracking
- Report generation
2. Order Update Processing (KEDA Scaled)
consumer-update-orderwith KEDA auto-scaling- Scales 1-10 based on queue depth
- Currently at 1 replica (low load)
- Ready to scale up during peak times
3. Account Update Processing (KEDA Scaled)
consumer-cs-account-update-orderwith KEDA auto-scaling- Scales 1-3 based on queue depth
- Currently at 1 replica (no load)
- Customer service account order updates
4. Booking Creation
consumer-create-bookinghandles booking from orders- Fixed at 1 replica (no auto-scaling)
- Consider adding KEDA if volume increases
5. Background Workers (HA)
- 2 replicas for redundancy
- General background processing
- Order notifications
Production Considerations
High Availability
Excellent Configuration:
- Main API: 7 replicas with HPA (1-10) - excellent HA and scaling
- Workers: 2 replicas for redundancy
- KEDA auto-scaling on 2 critical consumers
- Very mature namespace (~2 years)
Auto-Scaling Strengths:
- Standard HPA for API (CPU + Memory based)
- KEDA for queue-based consumer scaling
- Proven setup (running 207 days)
Minor Recommendations:
- consumer-create-booking: No auto-scaling (consider KEDA)
Recommendations
-
Maintain Current Setup (Already Excellent):
- HPA for main API: Working well (7/10 replicas)
- KEDA for consumers: Active and ready
- Workers at 2 replicas: Good redundancy
-
Consider KEDA for Booking Consumer:
- consumer-create-booking currently fixed at 1
- Add KEDA if booking volume increases
- Monitor queue depth
-
HPA Tuning (Optional):
- Current max: 10 replicas
- Consider increasing if needed during peak times
- Monitor CPU/Memory thresholds
-
Monitoring Priorities:
- HPA scaling events (API currently at 7/10)
- KEDA queue depths
- Consumer lag (especially KEDA-scaled consumers)
- Worker queue depth
-
Recent Activity:
- Very active: Pods restarted 6-16 days ago
- Regular updates and maintenance
- HPA been active for 207 days
Troubleshooting
HPA issues:
# Check HPA status
kubectl get hpa -n rfd--order-history
# HPA events
kubectl describe hpa rfd--order-history--be--app--prod -n rfd--order-history | grep -A 20 "Events:"
# Check if HPA is scaling correctly
kubectl get hpa rfd--order-history--be--app--prod -n rfd--order-history -w
KEDA scaling issues:
# Check KEDA scaled objects
kubectl get scaledobjects -n rfd--order-history
# Detailed KEDA status
kubectl describe scaledobjects -n rfd--order-history
# Check KEDA triggers
kubectl get scaledobjects -n rfd--order-history -o yaml
Main API issues:
# Check all 7 API pods
kubectl get pods -n rfd--order-history | grep "app--prod"
# Check logs from scaled replicas
kubectl logs deployment/rfd--order-history--be--app--prod -n rfd--order-history --all-containers=true --tail=100
# Test API endpoint
kubectl port-forward -n rfd--order-history service/rfd--order-history--be--app--prod 8080:80
Consumer scaling issues:
# Check KEDA-scaled consumers
kubectl get pods -n rfd--order-history | grep consumer
# Check order update consumer (KEDA 1-10)
kubectl logs deployment/rfd--order-history--be--consumer-update-order--prod -n rfd--order-history --tail=100
# Check account update consumer (KEDA 1-3)
kubectl logs deployment/rfd--order-history--be--consumer-cs-account-update-order--prod -n rfd--order-history --tail=100
# Force KEDA scaling (check queue depth)
kubectl describe scaledobject -n rfd--order-history
Performance Metrics
Current Scale
- Main API: 7/10 replicas (HPA active, CPU+Memory based)
- Consumer Update Order: 1/10 replicas (KEDA active, queue: 3/20)
- Consumer Account Update: 1/3 replicas (KEDA active, queue: 0/20)
- Consumer Booking: 1 replica (no scaling)
- Workers: 2 replicas (HA)
- Total Active Pods: ~12 pods
Stability
- Namespace Age: ~2 years (very mature)
- HPA Age: 207 days (proven scaling setup)
- Recent Updates: 6-16 days ago (active maintenance)
- Auto-Scaling: Excellent (Standard HPA + KEDA)