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¶
-
High-level component diagram and system design rationale.
-
API Gateway, Search, Booking, Availability, Practitioner, Patient, Notification.
-
Search, booking, and cancellation flows with sequence diagrams.
-
EKS, RDS Aurora, ElastiCache, OpenSearch, MSK, VPC layout.
-
Launch checklist, data residency, and GDPR regional strategy.
-
GitHub Actions service and Terraform pipelines with security gates.
-
Helm chart structure, canary strategy, Docker build, node group layout.
-
CloudWatch, Prometheus, Grafana, Fluent Bit, X-Ray/OpenTelemetry.
-
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 |