Mission Control

๐ŸŒ Multi-Region Readiness

0 / 20 complete
Overall completion 0%

20 items across 5 categories. Check items as you complete them โ€” progress is saved in sd_multiregion_checklist localStorage.

๐ŸŒ DNS โ€” Route53

โœ… Category complete
Enable Route53 latency-based routing
Configure Route53 latency routing records for the primary API domain so users are automatically routed to the lowest-latency AWS region when a second region becomes active.
DNSMedium effort
Configure Route53 health checks per region
Create Route53 health checks pointing to /beak/system/status (or /beak) for each region endpoint. Routing failover requires a healthy health check in the primary region before traffic is shifted.
DNSLow effort
Validate DNS TTL is ≤60s for failover records
Route53 failover records should have a TTL of 60 seconds or less. Long TTLs cause extended DNS propagation delays during region failover, increasing MTTR for multi-region incidents.
DNSLow effort
Document failover sequence and test DNS cutover
Write a runbook for the manual DNS failover sequence and perform a controlled test to verify traffic shifts correctly when the primary region health check fails.
DNSHigh effort

๐Ÿ—„ DynamoDB

โœ… Category complete
Enable DynamoDB Global Tables for spaceduck-main
Convert spaceduck-main table to a Global Table with replicas in the target secondary region. This enables active-active writes and automatic multi-region replication for the core spaceduck records.
DynamoDBHigh effort
Enable Global Tables for spaceduck-birth-certs and audit-log
Birth certificate and audit log tables require multi-region replication to maintain compliance and traceability across regions. Add replicas to all five platform tables.
DynamoDBHigh effort
Enable PITR cross-region backup copy
Configure DynamoDB Point-in-Time Recovery (PITR) on all tables and enable on-demand backup copies to be replicated to an S3 bucket in the secondary region for disaster recovery.
DynamoDBMedium effort
Verify backup restore procedure for cross-region recovery
Document and test the restore procedure using DynamoDB PITR or S3 backup copies. Establish RTO and RPO targets and confirm a full restore is achievable within the defined window.
DynamoDBMedium effort

โ˜๏ธ CloudFront

โœ… Category complete
Configure CloudFront origin groups for failover
Create an origin group with a primary and secondary origin in CloudFront. Configure the failover criteria (HTTP 5xx errors) so that CloudFront automatically routes requests to the secondary origin if the primary fails.
CloudFrontMedium effort
Review and document geo-restriction policy
Review the current CloudFront geo-restriction configuration. Confirm that the restriction policy is intentional and compatible with multi-region expansion goals. Document any blocked regions that may affect secondary region traffic routing.
CloudFrontLow effort
Validate CloudFront cache behaviour TTLs per distribution
Review both CloudFront distributions (E3HQHA5N284LTS, E1WQP6P5ZWZO5K) for cache TTL settings. Ensure TTLs are appropriate for a multi-region deployment where origin failover requires near-real-time cache invalidation.
CloudFrontLow effort
Test CloudFront origin failover end-to-end
Simulate an origin outage and confirm that CloudFront correctly fails over to the secondary origin, serves content from the backup, and recovers automatically when the primary origin is restored.
CloudFrontHigh effort

ฮป Lambda@Edge

โœ… Category complete
Deploy auth handler to Lambda@Edge
Package the JWT verification and beak-key auth handler as a Lambda@Edge function. Deploy to us-east-1 (required for @Edge) and associate with the CloudFront distribution's viewer-request event.
Lambda@EdgeHigh effort
Deploy redirect rules to Lambda@Edge
Move HTTP redirect rules (e.g., trailing-slash normalisation, legacy URL redirects) to a Lambda@Edge origin-request function to ensure consistent routing behaviour across all CloudFront edge locations.
Lambda@EdgeMedium effort
Validate Lambda@Edge IAM execution role
Lambda@Edge functions require an execution role trusted by both lambda.amazonaws.com and edgelambda.amazonaws.com. Verify the role is correctly configured before deployment.
Lambda@EdgeLow effort
Test edge function latency and cold-start behaviour
Benchmark Lambda@Edge functions for cold-start latency at multiple PoPs. Lambda@Edge has stricter limits (1MB code, 10s timeout, 128MB memory for viewer events) than standard Lambda.
Lambda@EdgeMedium effort

๐Ÿ” Cognito

โœ… Category complete
Create Cognito backup pool in secondary region
Provision a standby Cognito User Pool in the secondary region (e.g., ap-southeast-1) with identical app client configuration, triggers, and attribute schema. Export the pool configuration from us-east-1 as IaC.
CognitoHigh effort
Design Cognito token sync strategy
Cognito User Pools do not natively replicate between regions. Design a token synchronisation or migration strategy: either use DynamoDB-backed custom auth or export/import user records via the Cognito import job API during failover.
CognitoHigh effort
Verify Cognito triggers and app clients match across regions
After provisioning the backup pool, verify that all Lambda triggers (pre-sign-up, post-confirmation, pre-token-generation), app clients, and OAuth settings are identical to the primary pool.
CognitoMedium effort
Test end-to-end auth flow against the backup Cognito pool
Perform a complete signup โ†’ verify โ†’ login โ†’ token refresh flow against the backup pool using test credentials. Confirm all downstream Lambda routes accept tokens from the secondary pool's issuer.
CognitoHigh effort