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)
| Name | Replicas | Status | Purpose |
|---|---|---|---|
| rfd--container-app--fe--nginx--prod | 2/2 | Running | Main doctor portal (NGINX) - Good HA |
| rfd--doctor-kyc-micro--fe--nginx--prod | 2/2 | Running | KYC micro-frontend - Good HA |
| rfd--doctor-statement-micro--fe--nginx--prod | 2/2 | Running | Statement micro-frontend - Good HA |
| rfd--homepage-micro--fe--nginx--prod | 2/2 | Running | Homepage micro-frontend - Good HA |
| rfd--order-list-micro--fe--nginx--prod | 2/2 | Running | Order list micro-frontend - Good HA |
| rfd--patient-mgt-micro--fe--nginx--prod | 2/2 | Running | Patient mgmt micro-frontend - Good HA |
| rfd--user-mgt-micro--fe--nginx--prod | 2/2 | Running | User mgmt micro-frontend - Good HA |
Services
| Name | Type | Cluster IP | Ports | NodePort | Purpose |
|---|---|---|---|---|---|
| rfd--container-app--fe--nginx--prod | NodePort | 10.8.30.119 | 80 | 30429 | Main doctor portal |
| rfd--doctor-kyc-micro--fe--nginx--prod | NodePort | 10.8.18.54 | 80 | 31274 | KYC micro-frontend |
| rfd--doctor-statement-micro--fe--nginx--prod | NodePort | 10.8.23.164 | 80 | 30785 | Statement micro-frontend |
| rfd--homepage-micro--fe--nginx--prod | NodePort | 10.8.26.254 | 80 | 31466 | Homepage micro-frontend |
| rfd--order-list-micro--fe--nginx--prod | NodePort | 10.8.27.157 | 80 | 30915 | Order list micro-frontend |
| rfd--patient-mgt-micro--fe--nginx--prod | NodePort | 10.8.24.233 | 80 | 31287 | Patient mgmt micro-frontend |
| rfd--user-mgt-micro--fe--nginx--prod | NodePort | 10.8.19.72 | 80 | 31332 | User 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
-
Maintain Current HA (Already Excellent):
- All frontends: 2 replicas Excellent
- Micro-frontend architecture Good separation
- Independent deployment per feature Good practice
-
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
-
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
-
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)
-
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