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