Skip to main content

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

NameReplicasStatusPurpose
pat--container-app--fe--nginx--prod1/1RunningMain patient portal frontend (NGINX)
pat-micro-test-result--nginx--prod1/1RunningTest result micro-frontend (NGINX)

Services​

NameTypeCluster IPPortsNodePortPurpose
pat--container-app--fe--nginx--prodNodePort10.8.29.118032083Main patient portal
pat-micro-test-result--nginx--prodNodePort10.8.28.1818032606Test 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​

  1. 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
  2. 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
  3. Micro-Frontend Strategy:

    • pat-micro-test-result is separate deployment
    • Consider if this should scale independently
    • May have different traffic patterns than main portal
  4. Recent Updates:

    • Main portal: 29 days ago
    • Test result: 301 days ago (very stable)
    • Regular maintenance on main portal
  5. 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