Skip to content

Distributed Appointment Booking System

A microservices-based platform enabling 50 million patients to search for and book appointments with 500,000 practitioners. The system is designed to sustain 700 searches/sec and 90 bookings/sec at peak load, with a clear path to multi-country expansion.

At a Glance

Dimension Detail
Compute Amazon EKS (Kubernetes), 2 node groups
Databases Amazon RDS Aurora PostgreSQL — 3 independent clusters
Cache Amazon ElastiCache Redis — cluster mode, 3 shards
Search Amazon OpenSearch — 3 data nodes, per-country indices
Event Bus Amazon MSK (Managed Kafka) — 3 brokers, 3 topics
Notifications Amazon SES (email) + Amazon SNS (SMS/push)
Infrastructure Terraform — S3/DynamoDB remote state, 7 modules
Deployment GitHub Actions + Helm — canary for critical services, rolling for stateless
Region eu-west-1 (primary); isolated regional stacks for GDPR expansion

Documentation Map

  • Architecture Overview

    High-level component diagram and system design rationale.

  • Services

    API Gateway, Search, Booking, Availability, Practitioner, Patient, Notification.

  • Data Flow

    Search, booking, and cancellation flows with sequence diagrams.

  • Infrastructure

    EKS, RDS Aurora, ElastiCache, OpenSearch, MSK, VPC layout.

  • Multi-Country Expansion

    Launch checklist, data residency, and GDPR regional strategy.

  • CI/CD Pipelines

    GitHub Actions service and Terraform pipelines with security gates.

  • Deployment

    Helm chart structure, canary strategy, Docker build, node group layout.

  • Monitoring

    CloudWatch, Prometheus, Grafana, Fluent Bit, X-Ray/OpenTelemetry.

  • Fault Tolerance

    Failure modes and mitigations for every major component.

Architecture Decision Records

ADR Decision
ADR-001 PostgreSQL over NoSQL for appointment bookings
ADR-002 OpenSearch for practitioner search
ADR-003 Kafka (MSK) for async event propagation
ADR-004 DB unique constraint over distributed locks for double-booking prevention