Executive Summary
Migration of the existing SpringBoot-Tomcat-Java application from AWS (EC2/RDS) to Azure using a
containerized architecture (Azure Container Apps),
replacing AWS WAF with Cloudflare for edge security,
and implementing GitHub Actions for CI/CD.
Total Estimated Effort
12-16d
Working days
Phases
6
Sequential phases
Architecture
Container
Azure Container Apps
Edge Security
Cloudflare
Replaces AWS WAF
Proposed Azure Architecture
INTERNET
|
+--------+--------+
| Cloudflare |
| DNS + WAF + |
| DDoS + SSL |
+--------+--------+
|
HTTPS (443)
|
+------------------+-------------------+
| Azure Resource Group |
| |
| +-------------------------------+ |
| | Azure VNet (10.0.0.0/16) | |
| | | |
| | +-------------------------+ | |
| | | Subnet: container-apps | | |
| | | | | |
| | | +---------------------+ | | |
| | | | Container Apps Env | | | |
| | | | | | | |
| | | | +--------+--------+ | | | |
| | | | | SpringBoot API | | | | |
| | | | | (Container App) | | | | |
| | | | +--------+--------+ | | | |
| | | +--------|------------+ | | |
| | +----------|------+-------+ | |
| | | | | |
| | Port 5432 | | |
| | | | | |
| | +----------+---+ | Private | |
| | | Subnet: db | | Endpoint | |
| | | | | | |
| | | +----------+ | | | |
| | | | Postgres | | | | |
| | | | Flexible | | | | |
| | | | Server | | | | |
| | | +----------+ | | | |
| | +--------------+ | | |
| +--------------------+----------+ |
| | |
| +--------------------+----------+ |
| | Azure Key Vault | Azure | |
| | (Secrets + Keys) | Monitor | |
| +-------------------+-----------+ |
+---------------------------------------+
|
+------------------+-------------------+
| GitHub Actions CI/CD |
| Build -> Test -> Push ACR -> Deploy |
+--------------------------------------+
Open Queries (Requires Customer Input)
Q1: Database Size & Migration Window
What is the current PostgreSQL database size? Is there an acceptable downtime window for migration, or do we need near-zero-downtime migration (which would require DMS/logical replication)?
Q2: Application Persistent Storage
Does the SpringBoot application write files to disk (e.g., uploaded files, generated reports, logs to file)? This affects whether we need Azure Files mounted to the container. The 128GB EBS volume on AWS suggests possible file storage usage.
Q3: Existing 18 WAF Rules
The 18 WAF rules are AWS managed rule groups. Can the customer share which specific managed rule groups are enabled (e.g., Core Rule Set, SQL Injection, Known Bad Inputs, etc.) so we can map equivalent protections in Cloudflare?
Q4: API Gateway Usage Pattern
Is the AWS API Gateway used for anything beyond routing (e.g., throttling, API keys, usage plans, request/response transformation, authorizers)? This determines if we need Azure API Management or if Container Apps ingress suffices.
Q5: PostgreSQL Version
What PostgreSQL version is running on AWS RDS? Azure Flexible Server supports 13, 14, 15, 16 - need to confirm compatibility.
Q6: Environment Count
Do we need multiple environments (dev, staging, production) in Azure, or just production for now? This affects infrastructure and CI/CD pipeline design.
Q7: SNS Notification Recipients
Who should receive alerts (email addresses, phone numbers, Slack/Teams channels)? What alert conditions are currently configured in CloudWatch?
Q8: Source Code Repository
Where is the application source code currently hosted? Is it already in GitHub, or does it need to be migrated?
Out of Scope
AWS infrastructure decommissioning - Tearing down existing AWS resources after migration is complete
Application code changes - Any refactoring, bug fixes, or feature changes to the SpringBoot application itself (only containerization config changes)
Multi-region / HA deployment - Active-active or active-passive setup across multiple Azure regions
Database schema changes or optimization - Migration is data-as-is; no schema modifications
Load testing and performance benchmarking - Formal load/stress testing of the new Azure environment
Cloudflare account setup and billing - Customer is expected to have a Cloudflare account with appropriate plan
Azure subscription setup and billing - Customer provides an Azure subscription with Owner/Contributor access
Domain registrar changes - DNS nameserver delegation to Cloudflare is in scope, but domain purchase/transfer is not
End-user training or documentation - Internal team training on Azure/Cloudflare console usage
Backup and disaster recovery strategy - Beyond basic PostgreSQL backup; full DR plan is a separate engagement
Compliance and audit requirements - SOC2, HIPAA, or other compliance certifications for the Azure environment
VPN or ExpressRoute setup - Private connectivity from customer's on-premises network to Azure