Skip to main content

rfd--webapp

Overview

  • Namespace: rfd--webapp
  • Purpose: Referring Doctor Web Applications - PRODUCTION
  • Age: ~3 years 112 days (since July 2022)
  • Status: Active - Frontend web applications with micro-frontend architecture
  • Workloads: 7 deployments (all active) - All at 2 replicas
  • Environment: PRODUCTION - Doctor-facing web frontends

Architecture

Doctor web application frontends served via NGINX with micro-frontend architecture:

  • Container App Frontend: Main doctor portal NGINX (2 replicas) - Good HA
  • Micro-Frontends: 6 specialized micro-frontends (all at 2 replicas) - Excellent HA
    • Doctor KYC micro-frontend
    • Doctor statement micro-frontend
    • Homepage micro-frontend
    • Order list micro-frontend
    • Patient management micro-frontend
    • User management micro-frontend

Auto-Scaling Configuration

No Auto-Scaling Configured:

  • No HorizontalPodAutoscalers (HPAs)
  • No KEDA scaled objects
  • Fixed replica counts (all at 2 replicas)

Workload Categories

Frontend Applications (7 deployments - ALL at 2 replicas)

NameReplicasStatusPurpose
rfd--container-app--fe--nginx--prod2/2RunningMain doctor portal (NGINX) - Good HA
rfd--doctor-kyc-micro--fe--nginx--prod2/2RunningKYC micro-frontend - Good HA
rfd--doctor-statement-micro--fe--nginx--prod2/2RunningStatement micro-frontend - Good HA
rfd--homepage-micro--fe--nginx--prod2/2RunningHomepage micro-frontend - Good HA
rfd--order-list-micro--fe--nginx--prod2/2RunningOrder list micro-frontend - Good HA
rfd--patient-mgt-micro--fe--nginx--prod2/2RunningPatient mgmt micro-frontend - Good HA
rfd--user-mgt-micro--fe--nginx--prod2/2RunningUser mgmt micro-frontend - Good HA

Services

NameTypeCluster IPPortsNodePortPurpose
rfd--container-app--fe--nginx--prodNodePort10.8.30.1198030429Main doctor portal
rfd--doctor-kyc-micro--fe--nginx--prodNodePort10.8.18.548031274KYC micro-frontend
rfd--doctor-statement-micro--fe--nginx--prodNodePort10.8.23.1648030785Statement micro-frontend
rfd--homepage-micro--fe--nginx--prodNodePort10.8.26.2548031466Homepage micro-frontend
rfd--order-list-micro--fe--nginx--prodNodePort10.8.27.1578030915Order list micro-frontend
rfd--patient-mgt-micro--fe--nginx--prodNodePort10.8.24.2338031287Patient mgmt micro-frontend
rfd--user-mgt-micro--fe--nginx--prodNodePort10.8.19.728031332User mgmt micro-frontend

Access & Management

View all resources:

kubectl get all -n rfd--webapp

Check frontend applications:

# Main portal
kubectl get pods -n rfd--webapp | grep container-app
kubectl logs -f deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp

# Doctor KYC micro-frontend
kubectl logs -f deployment/rfd--doctor-kyc-micro--fe--nginx--prod -n rfd--webapp

# Doctor statement micro-frontend
kubectl logs -f deployment/rfd--doctor-statement-micro--fe--nginx--prod -n rfd--webapp

# Homepage micro-frontend
kubectl logs -f deployment/rfd--homepage-micro--fe--nginx--prod -n rfd--webapp

# Order list micro-frontend
kubectl logs -f deployment/rfd--order-list-micro--fe--nginx--prod -n rfd--webapp

# Patient management micro-frontend
kubectl logs -f deployment/rfd--patient-mgt-micro--fe--nginx--prod -n rfd--webapp

# User management micro-frontend
kubectl logs -f deployment/rfd--user-mgt-micro--fe--nginx--prod -n rfd--webapp

Restart services:

# Restart main portal
kubectl rollout restart deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp

# Restart specific micro-frontend
kubectl rollout restart deployment/rfd--order-list-micro--fe--nginx--prod -n rfd--webapp

# Restart all
kubectl rollout restart deployment --all -n rfd--webapp

Access applications:

# Port forward main portal
kubectl port-forward -n rfd--webapp service/rfd--container-app--fe--nginx--prod 8080:80
# Access http://localhost:8080

# Port forward specific micro-frontend
kubectl port-forward -n rfd--webapp service/rfd--order-list-micro--fe--nginx--prod 8081:80
# Access http://localhost:8081

Monitoring

Resource usage:

kubectl top pods -n rfd--webapp --sort-by=memory
kubectl top pods -n rfd--webapp --sort-by=cpu

Events:

kubectl get events -n rfd--webapp --sort-by='.lastTimestamp' | head -20

Application Flow

Doctor Browser Request

Load Balancer / Ingress

NGINX Micro-Frontend Services (2 replicas each)
├─ Main Portal → rfd--container-app--fe--nginx--prod (NodePort 30429)
├─ KYC → rfd--doctor-kyc-micro--fe--nginx--prod (NodePort 31274)
├─ Statement → rfd--doctor-statement-micro--fe--nginx--prod (NodePort 30785)
├─ Homepage → rfd--homepage-micro--fe--nginx--prod (NodePort 31466)
├─ Order List → rfd--order-list-micro--fe--nginx--prod (NodePort 30915)
├─ Patient Mgmt → rfd--patient-mgt-micro--fe--nginx--prod (NodePort 31287)
└─ User Mgmt → rfd--user-mgt-micro--fe--nginx--prod (NodePort 31332)

Static Assets Served (HTML, JS, CSS)

Browser API Calls → Backend Services

Doctor Portal Applications

1. Main Doctor Portal (Container App)

  • NGINX frontend with 2 replicas - Good HA
  • React/Vue/Angular application (static assets)
  • Container app orchestrating micro-frontends
  • Doctor authentication and routing
  • Main navigation and layout

2. Doctor KYC Micro-Frontend

  • NGINX frontend with 2 replicas - Good HA
  • Micro-frontend for doctor KYC verification
  • Registration and verification UI
  • Document upload interface
  • KYC status tracking

3. Doctor Statement Micro-Frontend

  • NGINX frontend with 2 replicas - Good HA
  • Micro-frontend for financial statements
  • Statement viewing and download
  • Payment history
  • Commission tracking
  • Most stable: 382 days since update

4. Homepage Micro-Frontend

  • NGINX frontend with 2 replicas - Good HA
  • Doctor portal homepage
  • Dashboard and overview
  • Quick access navigation
  • Recent activity

5. Order List Micro-Frontend

  • NGINX frontend with 2 replicas - Good HA
  • Order management interface
  • Order history and tracking
  • Order details and status
  • Most active: Updated 150 minutes ago

6. Patient Management Micro-Frontend

  • NGINX frontend with 2 replicas - Good HA
  • Patient information management
  • Patient search and lookup
  • Test result access for patients
  • Patient history

7. User Management Micro-Frontend

  • NGINX frontend with 2 replicas - Good HA
  • Doctor profile management
  • Account settings
  • User preferences
  • Profile updates

Production Considerations

High Availability

EXCELLENT Configuration:

  • All 7 frontends at 2 replicas - excellent redundancy
  • Micro-frontend architecture allows independent scaling
  • Very mature namespace (~3 years)
  • Good balance of stability and active development

Recommendations

  1. Maintain Current HA (Already Excellent):

    • All frontends: 2 replicas Excellent
    • Micro-frontend architecture Good separation
    • Independent deployment per feature Good practice
  2. Consider Auto-Scaling (Optional):

    • Add HPA to highly trafficked micro-frontends
    • order-list-micro: Very active (150m ago), consider HPA
    • homepage-micro: High traffic expected, consider HPA
    • Target: 2-5 replicas based on traffic patterns
  3. Micro-Frontend Strategy:

    • Good separation of concerns
    • Each feature deployed independently
    • Different update frequencies (statement: 382d vs order-list: 150m)
    • Allows targeted scaling and updates
  4. Update Patterns:

    • order-list-micro: Very active (150 minutes ago)
    • homepage-micro: Active (10 days ago)
    • patient-mgt-micro: Active (10 days ago)
    • doctor-statement-micro: Very stable (382 days)
    • user-mgt-micro: Stable (101 days)
  5. Monitoring Priorities:

    • Response times per micro-frontend
    • Error rates (4xx, 5xx) per service
    • Static asset delivery performance
    • Traffic patterns by feature
    • Browser errors and console logs

Troubleshooting

Main portal issues:

# Check main portal pods
kubectl get pods -n rfd--webapp | grep container-app

# Check NGINX logs
kubectl logs -f deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp

# Check NGINX config
kubectl exec -it deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp -- cat /etc/nginx/nginx.conf

# Test locally
kubectl port-forward -n rfd--webapp service/rfd--container-app--fe--nginx--prod 8080:80
curl http://localhost:8080

Micro-frontend issues:

# Check specific micro-frontend
kubectl get pods -n rfd--webapp | grep order-list

# Check NGINX logs
kubectl logs -f deployment/rfd--order-list-micro--fe--nginx--prod -n rfd--webapp

# Check for errors
kubectl logs deployment/rfd--order-list-micro--fe--nginx--prod -n rfd--webapp --tail=100 | grep -i "error\|fail"

# Test locally
kubectl port-forward -n rfd--webapp service/rfd--order-list-micro--fe--nginx--prod 8081:80
curl http://localhost:8081

Static asset issues:

# Check if assets are being served
kubectl exec -it deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp -- ls -la /usr/share/nginx/html

# Check NGINX access logs
kubectl logs deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp | grep -v "kube-probe"

# Restart to clear any caching issues
kubectl rollout restart deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp

Performance issues:

# Check resource usage
kubectl top pods -n rfd--webapp

# Check NGINX worker processes
kubectl exec -it deployment/rfd--container-app--fe--nginx--prod -n rfd--webapp -- ps aux | grep nginx

# Check connections per micro-frontend
for deploy in $(kubectl get deployments -n rfd--webapp -o name); do
echo "=== $deploy ==="
kubectl exec -it $deploy -n rfd--webapp -- netstat -an | grep ESTABLISHED | wc -l
done

Performance Metrics

Current Scale

  • Main Portal: 2 replicas - Good HA
  • All Micro-Frontends: 2 replicas each - Excellent HA
  • Total Active Pods: 14 pods (7 × 2 replicas)

Stability

  • Namespace Age: ~3 years (very mature)
  • Most Active: order-list-micro (150 minutes ago)
  • Most Stable: doctor-statement-micro (382 days)
  • Architecture: Excellent micro-frontend pattern
  • High Availability: All frontends at 2 replicas

Architecture Notes

  • Micro-Frontend Pattern: Excellent separation by feature
  • NGINX: Static asset serving, efficient and scalable
  • No Backend Logic: Pure frontend deployments
  • API Calls: Frontend calls backend services directly
  • Independent Deployment: Each feature can be updated separately
  • Independent Scaling: Each micro-frontend can be scaled based on its traffic