- Регистрация
- 1 Мар 2015
- Сообщения
- 1,481
- Баллы
- 155
Deploying full-stack applications on AWS doesn’t have to be overwhelming.
In this article, I’ll show how I built a basic Clinic Appointment Management System using Docker, FastAPI, and a few core AWS services. The app lets patients book appointments online, sends real-time notifications, and provides a secure way for admins to manage data - all in a lightweight and scalable setup.
If you're looking to get hands-on experience with deploying microservices on AWS, this beginner-friendly project is a great place to start!
Project Overview
This system enables:
With its lightweight and modular setup, this architecture is well-suited for beginners and rapid prototyping.
AWS Architecture Overview
1. VPC Setup
Application Load Balancer (ALB)
This is where the core application logic lives - isolated from the internet.
Dockerized Microservices
Deployed on an EC2 instance using Docker Compose, the system includes:
Each service uses a lightweight python3.12-slim base with FastAPI + Uvicorn for rapid performance.
PostgreSQL Database
Security is built-in, not bolted on:
This helps in performance tuning and alerting.
9. Designed for Scalability
Here’s what’s next on the roadmap to make this production-ready:
This project taught me how to combine infrastructure best practices with microservices architecture, all while staying secure and scalable. It’s a solid base for health tech applications, appointment systems, and even e-commerce platforms.
If you're starting your journey with AWS, Docker, or cloud security, this architecture offers a hands-on example with real-world value.
Let me know what you think - and I’d love to hear how you would extend or improve this setup!
In this article, I’ll show how I built a basic Clinic Appointment Management System using Docker, FastAPI, and a few core AWS services. The app lets patients book appointments online, sends real-time notifications, and provides a secure way for admins to manage data - all in a lightweight and scalable setup.
If you're looking to get hands-on experience with deploying microservices on AWS, this beginner-friendly project is a great place to start!
Project Overview
This system enables:
- Patients to book appointments via a simple web UI.
- Real-time SMS/email notifications using AWS SNS.
- Admins to access the backend securely through OpenVPN.
With its lightweight and modular setup, this architecture is well-suited for beginners and rapid prototyping.
AWS Architecture Overview
1. VPC Setup
- CIDR Block: 12.0.0.0/16
- Split into Public and Private subnets for better isolation and control.
- Internet Gateway for public services.
- NAT Gateway to allow private instances to access the internet securely (for updates, etc.).
Application Load Balancer (ALB)
- Routes incoming traffic (HTTP/HTTPS) to backend services.
- Secured via security groups that limit access to only web ports.
- Deployed on an EC2 instance with an Elastic IP.
- Allows secure, encrypted access to internal services.
- Only accessible on UDP Port 1194.
This is where the core application logic lives - isolated from the internet.
Dockerized Microservices
Deployed on an EC2 instance using Docker Compose, the system includes:
| Service | Port | Description |
|---|---|---|
| Frontend | 8000 | Public-facing web UI |
| Patient Service | 8001 | Manages patient registration/data |
| Doctor Service | 8002 | Manages doctors and schedules |
| Appointment Service | 8003 | Handles bookings and availability |
| Notification Service | 8004 | Sends confirmations via SNS |
Each service uses a lightweight python3.12-slim base with FastAPI + Uvicorn for rapid performance.
PostgreSQL Database
- Dockerized inside the private subnet.
- Stores patient, doctor, and appointment records.
- Only accessible from within the VPC.
- Admins connect via a VPN client to access the private network.
- Once authenticated, the admin accesses the PostgreSQL instance within the private subnet using a SQL client.
- No direct database exposure to the internet - ever.
- The Application Load Balancer provides a DNS endpoint for the frontend.
- Services are deployed across multiple Availability Zones (us-east-1a & us-east-1b) to increase resilience.
The Notification Service integrates with AWS SNS to send:
- SMS messages
- Email confirmations
SNS scales automatically and ensures reliable message delivery.
Security is built-in, not bolted on:
- IAM Roles & Policies: Restrict and manage AWS access.
- Security Groups: Only necessary ports are open.
- Private Subnets: Critical services are not internet-facing.
- OpenVPN: Admins can only access internal systems after authentication.
AWS CloudWatch tracks:
- EC2 metrics
- SNS delivery logs
- Application logs from microservices
This helps in performance tuning and alerting.
9. Designed for Scalability
- Load Balancer enables horizontal scaling of services.
- Docker Microservices can be updated independently.
- SNS automatically handles messaging load increases.
Here’s what’s next on the roadmap to make this production-ready:
Add HTTPS support using SSL on the Load Balancer.
Use AWS RDS for managed PostgreSQL.
Build a CI/CD pipeline (AWS CodePipeline).
Migrate to ECS or EKS for better container orchestration.
Use Route 53 for domain-level routing.
Enable WAF, GuardDuty, Inspector for advanced security.
Set up alerting for downtime or intrusions.
This project taught me how to combine infrastructure best practices with microservices architecture, all while staying secure and scalable. It’s a solid base for health tech applications, appointment systems, and even e-commerce platforms.
If you're starting your journey with AWS, Docker, or cloud security, this architecture offers a hands-on example with real-world value.
Let me know what you think - and I’d love to hear how you would extend or improve this setup!