DevOps Strategy
Objectives
- Reproducible local and cloud environments.
- Automated quality checks.
- Controlled deployments.
- Infrastructure changes reviewed as code.
- Observable and cost-aware production operation.
Target flow
flowchart LR
Dev[Developer]
Branch[Short-lived branch]
PR[Pull Request]
CI[CI: build/test/scan]
Main[main]
Stage[Staging]
Approval[Production approval]
Prod[Production]
Dev --> Branch --> PR --> CI
CI --> Main
Main --> Stage
Stage --> Approval --> Prod
- GitHub Actions: CI/CD orchestration.
- Docker: reproducible application packaging.
- Terraform: Azure IaC.
- Azure-managed runtime: selected after cost/technical spike.
- Puppet: host configuration only where a VM/host actually exists and justifies configuration management.
Environment strategy
- Local: Docker-based dependencies where useful.
- Staging: integration/acceptance environment.
- Production: real building use.
Do not represent environments with permanent dev, staging and production Git branches.
Delivery status
Implemented now:
- restore dependencies;
- compile backend;
- backend unit/integration tests;
- build client;
- client tests;
- production API/client container builds;
- Terraform format/init/validate without cloud credentials;
- manual Azure OIDC workflow for Terraform plan/apply;
- ACR image builds and Container App revision updates after an approved apply;
- public client + proxied API smoke check.
Still to add after the first real staging deployment:
- dependency/container security scanning;
- Azure budget/alerts;
- environment-specific payment secrets;
- a production migration strategy that does not rely on startup migrations;
- gated production deployment after staging acceptance.