Application
FastAPI REST API with typed Pydantic models, SQLAlchemy persistence, CRUD endpoints, process health checks, database readiness checks, Swagger, and ReDoc.
A production-inspired FastAPI workload designed to demonstrate the complete cloud engineering lifecycle: application development, containerization, Infrastructure as Code, secure delivery, database migrations, observability, reliability controls, and cost-aware operations.
API documentation is available when the cost-controlled AWS environment is running.
The project uses a small task-management API as the workload while concentrating on the engineering platform required to deploy and operate it securely and repeatably.
Internet traffic terminates over HTTPS at the load balancer. ECS tasks accept traffic only from the ALB security group, and PostgreSQL accepts traffic only from the ECS security group.
I designed and implemented the application, cloud infrastructure, secure deployment workflow, operational controls, and supporting documentation.
FastAPI REST API with typed Pydantic models, SQLAlchemy persistence, CRUD endpoints, process health checks, database readiness checks, Swagger, and ReDoc.
Python 3.12 slim image with dependency-layer caching, a non-root runtime user, container health checks, and Amazon ECR image storage.
Reusable Terraform modules for networking, security, database, load balancing, ECS, and monitoring, with environment-specific composition and remote state.
The deployment workflow avoids persistent AWS access keys and creates traceable application revisions from each commit.
The controls focus on identity, network isolation, secrets handling, encrypted transport, safe container execution, and automated deployment verification.
The environment is deliberately cost-controlled while preserving meaningful cloud architecture and security boundaries.
ECS tasks run in public subnets with assigned public IPs to avoid NAT Gateway cost. They remain unreachable directly because inbound access is restricted to the ALB security group.
Terraform manages persistent infrastructure and the baseline task definition. GitHub Actions owns later application revisions so infrastructure applies do not roll the service back to its bootstrap image.
Alembic migrations run before the rolling ECS update, so schema changes must remain compatible with the currently running application until the rollout completes.
The AWS runtime can be started for demonstrations and stopped afterward without destroying the persistent infrastructure.
A PowerShell script starts RDS, waits until the database becomes available, and scales the ECS service to one running task.
A companion script scales ECS compute to zero and temporarily stops RDS. Networking, ALB, ECR, IAM, logs, Terraform state, and database storage remain provisioned.
The project is production-inspired rather than presented as fully production-ready. The limitations are documented as explicit next steps.