Skip to main content

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)​

NameReplicasHPA StatusPurpose
rfd--order-history--be--app--prod7/7HPA Active (1-10, CPU+Memory)Main order history API

Event Consumers (3 deployments - 2 with KEDA)​

NameReplicasKEDA StatusPurpose
consumer-update-order1/1KEDA (1-10, queue depth: 3/20)Order update processing
consumer-cs-account-update-order1/1KEDA (1-3, queue depth: 0/20)Account order updates
consumer-create-booking1/1No scalingBooking creation from orders

Workers (1 deployment)​

NameReplicasStatusPurpose
wrk--default2/2RunningDefault 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​

NameTypeCluster IPPortsNodePortPurpose
rfd--order-history--be--app--prodNodePort10.8.31.508032616Main 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-order with 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-order with 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-booking handles 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​

  1. 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
  2. Consider KEDA for Booking Consumer:

    • consumer-create-booking currently fixed at 1
    • Add KEDA if booking volume increases
    • Monitor queue depth
  3. HPA Tuning (Optional):

    • Current max: 10 replicas
    • Consider increasing if needed during peak times
    • Monitor CPU/Memory thresholds
  4. Monitoring Priorities:

    • HPA scaling events (API currently at 7/10)
    • KEDA queue depths
    • Consumer lag (especially KEDA-scaled consumers)
    • Worker queue depth
  5. 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)