Set up a development environment in Azure and deploy two containerized backend applications (one in Python, one in Spring Boot), making both publicly accessible and exposing their respective Swagger UIs.
- Provision a complete DEV environment in Azure.
- Build Docker images for both Python link Spring Boot link backends.
- Deploy both applications to Azure.
- Implement a CI/CD pipeline that fully automates the build and deployment process.
- Ensure that both applications are publicly accessible and that their Swagger documentation is reachable via browser.
- Infrastructure should be provisioned using Infrastructure-as-Code.
- The build and deployment process must be automated.
- Both services should be exposed via public URLs.
- Swagger UIs must be accessible for both services.
Please provide:
- A brief documentation of your architecture and deployment setup (via text, diagram, or code comments)
- Public URLs of both applications
- Optionally: known limitations or potential improvements
- Estimated effort: 3–5 hours
This project deploys a cloud infrastructure on Azure using Terraform and GitHub Actions CI/CD.
- Resource Group (
dev-rg) - Key Vault (
dev-kv-WcuDo123) — stores secrets - Azure Container Registry (
devacr12345) - App Service Plan (Linux B1)
- Two Linux Web Apps:
- Python app: Docker image from ACR
- Spring Boot app: Docker image from ACR
- RBAC Assignments:
- Managed identity → AcrPull
- Managed identity → Key Vault access
- Uses GitHub Actions to automate:
- Terraform init
- Terraform validate
- Terraform plan
- Terraform apply
- Fetches secrets dynamically from Azure Key Vault
- No hardcoded credentials/secrets in code
- Clone repo
- Configure
AZURE_CREDENTIALSsecret in GitHub - Push to
mainbranch → CI/CD pipeline will deploy infra
Terraform will print URLs of deployed apps after terraform apply:
Outputs:
python_app_url = <python app URL>
spring_app_url = <spring app URL>
## Architecture Diagram
