This repository provides a production-style reference implementation for migrating a Python/Flask "Enterprise App" from an AWS-based architecture to modernized deployments on Google Cloud Platform (GCP).
The implementation demonstrates:
- An AWS baseline architecture representative of real-world workloads
- A re‑platformed design on GCP Compute Engine (Managed Instance Group)
- A serverless container deployment on Cloud Run with integrated CI/CD
All detailed design, runbooks, and operational procedures are documented under the docs/ folder and in the platform-specific deployment guides.
The same Flask application is deployed in three ways:
- AWS Baseline – EC2 + Application Load Balancer + DynamoDB + S3
- GCP Option 1 – Compute Engine Managed Instance Group + HTTPS Load Balancer + Firestore + Cloud Storage
- GCP Option 2 – Cloud Run (serverless containers) + Artifact Registry + CI/CD with GitHub Actions
Each option is fully described in architecture and deployment docs under docs/ and in the deployment_*.md files in each platform folder.
- Web tier: Flask app served via EC2, Compute Engine, or Cloud Run
- Data tier: DynamoDB (AWS) or Firestore (GCP)
- Object storage: S3 (AWS) or Cloud Storage (GCP)
- Identity: IAM roles (AWS) or service accounts with IAM (GCP)
Detailed diagrams and flows are in docs/architecture.md.
- Language & Framework: Python, Flask, Jinja2
- AWS: EC2, Auto Scaling, ALB, DynamoDB, S3, IAM
- GCP (Compute Engine): Compute Engine, MIG, HTTPS Load Balancer, Firestore (Datastore mode), Cloud Storage, VPC, Cloud NAT, service accounts
- GCP (Cloud Run): Cloud Run, Artifact Registry, Firestore, Cloud Storage, Secret Manager
- Automation & Tooling: Terraform, Google Cloud SDK, AWS CLI, Docker, GitHub Actions
-
Understand the architecture
Read the full architecture and migration story: -
Understand the deployment model
Review common deployment principles (Terraform, environments, CI/CD): -
Pick a deployment path and follow its guide
- AWS baseline (EC2):
AWS/deployment_aws.md - GCP Compute Engine (Option 1):
GCP/deployment_gce.md - GCP Cloud Run (Option 2):
GCP-Cloud-Run/deployment_cloud_run.md
- AWS baseline (EC2):
-
Operate and optimize
- Troubleshooting tips and common errors:
- Cost guidance and efficiency tuning:
/
├── AWS/ # AWS baseline app + Terraform + deployment_aws.md
├── GCP/ # GCE (Option 1) app + Terraform + deployment_gce.md
├── GCP-Cloud-Run/ # Cloud Run (Option 2) Terraform + deployment_cloud_run.md
├── docs/ # Architecture, deployment model, troubleshooting, cost
└── .github/workflows/ # cloud-run-deploy.yml (Cloud Run CI/CD)
For all implementation details and diagrams, start in: