Container platform
ECS on Fargate.
Why. Least operational overhead for teams that do not need Kubernetes features.
Trade-off. Less ecosystem tooling than EKS and higher unit price than well-packed EC2 at steady high load.

Cloud platforms · AWS
The workhorse for line-of-business web apps: public load balancer, containers across three Availability Zones, a private Aurora PostgreSQL cluster, ElastiCache for sessions and S3 for files.
A reference architecture from EITSAA, not a named client system. Service limits, prices and product features change, so confirm current details before you commit to a design.
Users reach CloudFront, which terminates TLS and applies WAF managed rules and rate limits.
CloudFront forwards to the ALB over HTTPS with a custom header that the ALB listener rule requires, and the ALB security group only allows the CloudFront managed prefix list.
The ALB distributes to healthy tasks in all three Availability Zones, with connection draining on deployments.
The application reads and writes Aurora through RDS Proxy or a pooled connection over TLS. Credentials come from Secrets Manager with rotation.
Sessions and hot reads use ElastiCache so tasks stay stateless and can be replaced at any time.
Image pulls, logs, secrets and KMS calls go through VPC endpoints, so the tasks need no route to the internet for AWS services.
Uploads go straight from the browser to S3 with presigned URLs, then are virus-scanned before being made available to the app.
| Component | What it does | Why this choice |
|---|---|---|
| Application Load Balancer | Layer 7 routing, health checks, TLS and WAF association. | Path routing and native ECS integration with slow-start and draining. |
| Amazon ECS on Fargate | Runs containers without managing hosts, one task per replica with a task role. | No node patching and per-task isolation. EKS is preferred only when Kubernetes is a requirement. |
| Amazon Aurora PostgreSQL | Multi-AZ relational database with shared storage, fast failover and up to 15 readers. | Failover is typically faster than classic Multi-AZ RDS and storage grows automatically. |
| Amazon ElastiCache (Valkey or Redis OSS) | In-memory cache for sessions and read-heavy lookups. | Keeps the app tier stateless and protects the database from hot keys. |
| Amazon S3 | Uploads and generated documents, versioned and encrypted. | Takes file traffic off the app and the database. |
| Amazon ECR | Private image registry with scan on push. | Immutable tags and vulnerability findings in the pipeline. |
| VPC endpoints | Private access to S3, ECR, CloudWatch Logs, KMS and Secrets Manager. | Removes NAT cost and exposure for AWS traffic. |
| AWS Backup | Policy-based backups with cross-account copy. | Gives a backup the application account cannot delete. |
Container platform
Why. Least operational overhead for teams that do not need Kubernetes features.
Trade-off. Less ecosystem tooling than EKS and higher unit price than well-packed EC2 at steady high load.
Database
Why. Fast failover, read scaling and managed backups.
Trade-off. Aurora I/O pricing needs checking against Aurora I/O-Optimized for heavy workloads, and it is not portable to another cloud.
Connection management
Why. Prevents connection storms during scaling or failover.
Trade-off. An extra component and cost.
Egress
Why. Reduces cost and blast radius.
Trade-off. More endpoints to manage in Terraform.
Three subnet tiers, security-group-to-security-group rules, no public IPs on tasks, WAF, KMS and Secrets Manager rotation.
Three AZs for tasks and database, health-checked rollouts with circuit breaker, automated backups and tested restores.
Autoscaling on request count and CPU, read replicas for reporting, cache for hot reads, CloudFront for static assets.
Fargate vCPU and memory, Aurora instances and I/O, NAT and data transfer. Savings Plans cover the steady baseline.
Blue/green deployments with CodeDeploy or ECS rolling updates, Terraform for the platform, runbooks for failover and restore.
Right-size tasks, scale in at night for non-production, use Graviton, and stop dev databases out of hours.
A /16 VPC with three tiers per AZ. Public subnets hold only the ALB and NAT. App subnets route to NAT or endpoints. Data subnets have no internet route at all. Flow Logs go to the central log account.
Task execution role (pull images, write logs) is separate from the task role (application permissions). Database access uses IAM database authentication or Secrets Manager rotation. Administrators use Identity Center with break-glass roles.
Classify per table and column. Aurora, ElastiCache and S3 encrypted with customer-managed KMS keys, TLS enforced everywhere, and snapshots shared only to the backup account.
| Control | How this design addresses it |
|---|---|
| Application control | Immutable container images from a scanned registry, only the pipeline can deploy. Essential Eight application control approach for cloud workloads. |
| Patch applications and operating systems | Rebuild images on a schedule and on critical advisories, Fargate platform patched by AWS. Essential Eight. |
| Multi-factor authentication | MFA for administrators and the application's users. Essential Eight. |
| Regular backups | AWS Backup with cross-account copy and restore tests. Essential Eight. |
| Privacy and security of personal information | Encryption, access logging and least privilege support APP 11 expectations. |
Mappings show how the design supports each control. They are not certifications, and EITSAA does not claim IRAP assessment or compliance for any reference architecture.
| Failure mode | Mitigation |
|---|---|
| AZ failure | Tasks and the database span three AZs. ALB removes unhealthy targets. Aurora promotes a reader. |
| Bad release | Deployment circuit breaker rolls back automatically. Blue/green with traffic shifting for riskier changes. |
| Connection exhaustion | RDS Proxy, pool limits sized to the max task count, alarms on database connections. |
| Region failure | Pilot light or warm standby pattern from the DR page, with a cross-Region Aurora replica if the RTO demands it. |
Fargate compute, Aurora instance hours and I/O, NAT data processing, CloudFront and WAF.
Azure
The Azure equivalent of the three-tier pattern: Front Door with WAF, Container Apps or App Service on a private network, Azure SQL, Entra ID for identity and Key Vault for secrets.
AWS and Azure
The foundation every other pattern sits on: separate accounts or subscriptions for blast-radius control, preventive guardrails, central identity, central logging and a security account that workloads cannot switch off.
AWS and Azure
A delivery pipeline with no long-lived credentials: pull requests plan, merges apply, images are scanned and signed, and releases shift traffic gradually with automatic rollback.
Tell us your systems, constraints and timeline. We reply within one business day, and the initial conversation is free.