pat--webapp
Overview
- Namespace:
pat--webapp - Purpose: Patient Portal Web Applications - PRODUCTION
- Age: ~2 years 340 days (since November 2022)
- Status: Active - Frontend web applications
- Workloads: 2 deployments (all active)
- Environment: PRODUCTION - Patient-facing web frontends
Architecture
Patient web application frontends served via NGINX:
- Container App Frontend: Main patient portal NGINX (1 replica)
- Micro Test Result Frontend: Test result micro-frontend NGINX (1 replica)
Auto-Scaling Configuration
No Auto-Scaling Configured:
- No HorizontalPodAutoscalers (HPAs)
- No KEDA scaled objects
- Fixed replica counts (all at 1 replica)
Workload Categories
Frontend Applications (2 deployments)
| Name | Replicas | Status | Purpose |
|---|---|---|---|
| pat--container-app--fe--nginx--prod | 1/1 | Running | Main patient portal frontend (NGINX) |
| pat-micro-test-result--nginx--prod | 1/1 | Running | Test result micro-frontend (NGINX) |
Services
| Name | Type | Cluster IP | Ports | NodePort | Purpose |
|---|---|---|---|---|---|
| pat--container-app--fe--nginx--prod | NodePort | 10.8.29.11 | 80 | 32083 | Main patient portal |
| pat-micro-test-result--nginx--prod | NodePort | 10.8.28.181 | 80 | 32606 | Test result micro-frontend |
Access & Management
View all resources:
kubectl get all -n pat--webapp
Check frontend applications:
# Main patient portal
kubectl get pods -n pat--webapp | grep container-app
kubectl logs -f deployment/pat--container-app--fe--nginx--prod -n pat--webapp
# Test result micro-frontend
kubectl get pods -n pat--webapp | grep test-result
kubectl logs -f deployment/pat-micro-test-result--nginx--prod -n pat--webapp
Restart services:
# Restart main portal
kubectl rollout restart deployment/pat--container-app--fe--nginx--prod -n pat--webapp
# Restart test result frontend
kubectl rollout restart deployment/pat-micro-test-result--nginx--prod -n pat--webapp
# Restart all
kubectl rollout restart deployment --all -n pat--webapp
Access applications:
# Port forward main portal
kubectl port-forward -n pat--webapp service/pat--container-app--fe--nginx--prod 8080:80
# Access http://localhost:8080
# Port forward test result frontend
kubectl port-forward -n pat--webapp service/pat-micro-test-result--nginx--prod 8081:80
# Access http://localhost:8081
Monitoring
Resource usage:
kubectl top pods -n pat--webapp --sort-by=memory
kubectl top pods -n pat--webapp --sort-by=cpu
Events:
kubectl get events -n pat--webapp --sort-by='.lastTimestamp' | head -20
Application Flow
Patient Browser Request
↓
Load Balancer / Ingress
↓
NGINX Frontend Services
├─ Main Portal → pat--container-app--fe--nginx--prod (NodePort 32083)
└─ Test Results → pat-micro-test-result--nginx--prod (NodePort 32606)
↓
Static Assets Served (HTML, JS, CSS)
↓
Browser API Calls → Backend Services
Patient Portal Applications
1. Main Patient Portal (Container App)
- NGINX frontend serving main patient portal
- React/Vue/Angular application (static assets)
- Patient authentication and profile
- Appointment booking
- Test result viewing
- General patient services
2. Test Result Micro-Frontend
- NGINX frontend for test result specific UI
- Micro-frontend architecture
- Dedicated test result viewing interface
- May be embedded in main portal
- Isolated deployment for test result features
Production Considerations
High Availability
Single Points of Failure:
- Main portal: 1 replica (no HA)
- Test result frontend: 1 replica (no HA)
- No redundancy for patient-facing frontends
Recommendations
-
Frontend Resilience:
- Both frontends at 1 replica (single point of failure)
- Increase to 2+ replicas or add HPA
- Critical patient-facing applications
- NGINX can handle high concurrency but needs redundancy
-
Add Auto-Scaling:
- Consider HPA for both frontends
- Scale based on CPU/Memory
- Target: 2-5 replicas based on traffic
- Static content scales well horizontally
-
Micro-Frontend Strategy:
- pat-micro-test-result is separate deployment
- Consider if this should scale independently
- May have different traffic patterns than main portal
-
Recent Updates:
- Main portal: 29 days ago
- Test result: 301 days ago (very stable)
- Regular maintenance on main portal
-
Monitoring Priorities:
- Response times
- Error rates (4xx, 5xx)
- Static asset delivery
- Traffic patterns
- Browser errors
Troubleshooting
Main portal issues:
# Check main portal pod
kubectl get pods -n pat--webapp | grep container-app
# Check NGINX logs
kubectl logs -f deployment/pat--container-app--fe--nginx--prod -n pat--webapp
# Check NGINX config
kubectl exec -it deployment/pat--container-app--fe--nginx--prod -n pat--webapp -- cat /etc/nginx/nginx.conf
# Test locally
kubectl port-forward -n pat--webapp service/pat--container-app--fe--nginx--prod 8080:80
curl http://localhost:8080
Test result micro-frontend issues:
# Check test result pod
kubectl get pods -n pat--webapp | grep test-result
# Check NGINX logs
kubectl logs -f deployment/pat-micro-test-result--nginx--prod -n pat--webapp
# Check for errors
kubectl logs deployment/pat-micro-test-result--nginx--prod -n pat--webapp --tail=100 | grep -i "error\|fail"
# Test locally
kubectl port-forward -n pat--webapp service/pat-micro-test-result--nginx--prod 8081:80
curl http://localhost:8081
Static asset issues:
# Check if assets are being served
kubectl exec -it deployment/pat--container-app--fe--nginx--prod -n pat--webapp -- ls -la /usr/share/nginx/html
# Check NGINX access logs
kubectl logs deployment/pat--container-app--fe--nginx--prod -n pat--webapp | grep -v "kube-probe"
# Restart to clear any caching issues
kubectl rollout restart deployment/pat--container-app--fe--nginx--prod -n pat--webapp
Performance issues:
# Check resource usage
kubectl top pods -n pat--webapp
# Check NGINX worker processes
kubectl exec -it deployment/pat--container-app--fe--nginx--prod -n pat--webapp -- ps aux | grep nginx
# Check connections
kubectl exec -it deployment/pat--container-app--fe--nginx--prod -n pat--webapp -- netstat -an | grep ESTABLISHED | wc -l
Performance Metrics
Current Scale
- Main Portal: 1 replica (no HA)
- Test Result Frontend: 1 replica (no HA)
- Total Active Pods: 2 pods
Stability
- Main Portal Age: ~2 years (very mature)
- Main Portal Update: 29 days ago (regular maintenance)
- Test Result Age: ~2 years (very mature)
- Test Result Update: 301 days ago (extremely stable)
- All Single Replicas: No redundancy configured
Architecture Notes
- Micro-Frontend Pattern: Test results separated from main portal
- NGINX: Static asset serving, efficient and scalable
- No Backend Logic: Pure frontend deployments
- API Calls: Frontend calls backend services directly