AWS platform infrastructure
Backbone is deployed into AWS accounts owned by the operator. Infrastructure is defined as code (AWS CDK in TypeScript), provisioned deterministically per environment, and designed for container-native workloads on ECS Fargate.
Backbone is not a hosted SaaS control plane. The operator owns the account, networking, data, and runtime configuration.
This guide is for architecture review, procurement, and technical due diligence. Day-to-day CDK commands live in Operations and Runbook documentation.
Design goals
The infrastructure model prioritizes:
- Predictable deployments — repeatable stacks per environment (DEV, INT, STAGE, PROD)
- Horizontal scale — stateless ECS services behind load balancers
- Private-by-default — datastores and tasks in private subnets; controlled public edge
- Least privilege — scoped IAM, security groups, and secret access
- Progressive hardening — baseline suitable for mature deployments; room to add enterprise controls
Backbone intentionally avoids mandating a specific AWS Organizations layout. Operators can integrate the platform into existing landing zones.
Single region today: Each environment deploys to one AWS region with multi-AZ patterns inside that region. Multi-region failover is a roadmap consideration, not the current baseline.
High-level architecture
Browser traffic hits CloudFront at the environment apex hostname. Static UI is served from S3. API paths forward to a regional internet-facing ALB (CloudFront origin only) with origin verification. Application tasks run in private subnets and reach datastores over internal networking.
Environment composition
Each Backbone environment (e.g. INT, PROD) is a set of coordinated CDK stacks:
| Stack (conceptual) | Purpose |
|---|---|
| Network | VPC, public/private subnets, optional NAT, VPC endpoints |
| Domain & DNS | Route 53 hosted zone, certificates, email domain identity |
| Static edge (global) | CloudFront certificate and edge WAF (us-east-1) |
| Static edge (regional) | S3 UI bucket, CloudFront distribution, API origin to ALB |
| Identity | Cognito user pools (human + service accounts) |
| Datastores | RDS PostgreSQL, DynamoDB, S3 buckets, ElastiCache Redis |
| Security | WAF on ALB where applicable, security groups, IAM roles, secrets integration |
| Runtime | ECS cluster, Fargate services, load balancers, routing rules |
| CI/CD role (INT) | GitHub Actions OIDC role for prescribed integration environment |
Stateful resources run inside private networking boundaries. Stateless application services scale horizontally by adding ECS tasks.
Container and release model
- One shared container registry per account/region holds versioned/tagged images for all services and environments.
- Immutable build tags trace each deployment to source; mutable service tags reference what ECS runs.
- Native or JVM runtime — operators can switch ECS task runtime mode (GraalVM native vs JVM) via deployment configuration without infrastructure redesign. See Runbook.
Images are built and published through GitHub Actions; deployment workflows update ECS task definitions.
Shared platform services
| Service | Role |
|---|---|
| PostgreSQL (RDS) | Relational data — actors, notifications, audit events |
| DynamoDB | Document metadata, notification templates, delivery state |
| S3 | Document objects, static UI assets, access logs |
| Redis (ElastiCache) | Distributed cache and rate-limit counters across ECS tasks |
| Cognito | Human and service identity |
| SES | Outbound email (via notification service) |
See Application caching and distributed scale and Rate limiting for how Redis is used.
Networking and security
- Public edge: CloudFront with WAF (hostname allowlist, rate limits, geo controls).
- Origin protection: CloudFront-to-ALB verification header; ALB security groups restrict source to CloudFront edge ranges.
- Internal traffic: Service-to-service calls use an internal load balancer; JWT validation at the application layer (not network trust alone).
- Optional internal TLS: Enterprise-tier opt-in via platform configuration.
Full edge and IAM posture: Platform security posture.
Baseline cost expectations (non-production)
Representative idle monthly cost in us-west-2 for a single-replica, minimal-endpoint footprint is on the order of ~USD 150/month, dominated by Fargate tasks, interface VPC endpoints, and load balancers. Actual costs vary with traffic, NAT usage, RDS storage, and endpoint AZ mode.
| Component (indicative) | Approx. monthly |
|---|---|
| Fargate workloads (6 small tasks) | ~$54 |
| Interface VPC endpoints | ~$50 |
| Two ALBs | ~$32 |
| Edge WAF + CloudFront + S3 (idle) | ~$9 |
| Logging, secrets, DNS | ~$4 |
Validate production assumptions with the AWS Pricing Calculator. Gateway endpoints (S3, DynamoDB) do not incur hourly charges; interface endpoint AZ spread is often the largest hidden cost lever in smaller environments.
Availability posture
| Model | Indicative availability | Notes |
|---|---|---|
| Single AZ footprint | ~99.5–99.7% | Lower cost; limited fault tolerance |
| Multi-AZ Fargate + managed datastores | ~99.99% | Aligns with AWS managed service SLAs |
| Multi-region | Roadmap | Requires explicit cross-region design |
Backbone supports progressive hardening without redesigning application services.
Operator expectations
| Topic | Expectation |
|---|---|
| Account ownership | Operator provisions and pays for all AWS resources |
| Environments | DEV / INT / STAGE / PROD are isolated deployments within operator control |
| Configuration | Domain, capacity, VPC topology, and feature toggles are operator-maintained |
| Extensibility | New deployable services follow the platform service registry pattern in the private codebase |
| Operations | CDK deploy/destroy, runtime switching, and self-hosted CI runners documented in Runbook |
Further reading
Updated 12 days ago