Overview
The Resilient tier targets applications that need high availability and data durability without the compute baseline of Enterprise. It scaffolds 3 Availability Zones with one NAT Gateway each, an Aurora PostgreSQL cluster with two readers, KMS customer-managed keys for storage and Database Insights, RDS Proxy with TLS required, and the resilient backup tier, which sets 30-day database backups, deletion protection on DynamoDB tables and production load balancers, S3 versioning and AWS Backup enrolment.Resilient is a gated tier. Selecting it runs an entitlement check that blocks
with “Resilient tier requires a Pro plan.” when your organisation is on a lower
plan.
Prerequisites
Create a Resilient Application
fjall create app with no flags to pick the tier from a menu instead. The first prompt reads ? Choose your starting point? and lists six options in this order: Standard, Lightweight, Resilient, Enterprise, Tinkerer, Custom. Standard is pre-highlighted unless you passed -t/--type.
Architecture
What’s Included
Database Variants
fjall create app --type resilient scaffolds Aurora. Every other variant is available through fjall add database, and each one carries its own Resilient configuration.
Add a variant by naming both the database type and the tier:
--tier on fjall add database requires --type, because a tier configures each database type differently.
Generated Infrastructure
Creating a Resilient application writes aninfrastructure.ts close to this:
fjall add, fjall modify and fjall remove to change it.
Specifications
Compute (ECS Fargate)
The circuit breaker sets
ResetOnHealthyTask: false, which is stricter than the AWS default. A crash loop that occasionally boots one healthy task still trips the breaker rather than holding the deployment IN_PROGRESS.
Database (Aurora)
Network and security controls
Map these controls onto your own compliance framework. Fjall does not carry an attestation for a tier.
High Availability
Multi-AZ topology
- ECS tasks spread across 3 Availability Zones
- One NAT Gateway per zone, so a zone failure does not strand egress
- Aurora promotes a reader on writer failure
- ALB routes across all three zones
Auto-scaling
Auto-scaling is on by default. Omittingscaling gives a CPU target-tracking policy where minCapacity tracks desiredCount and maxCapacity defaults to Math.max(desiredCount + 1, 3). The Resilient preset sets both explicitly.
scalingType, or turn scaling off with scaling: false:
ScalingType.QUEUE swaps the target-tracking policy for step scaling on SQS backlog, which can wake a service from desiredCount: 0.
Alarms
Compute and database alarms ship on by default and publish to the application’s SNS topic. Override the thresholds on the resource, or passalarms: false to opt out.
Backup and Recovery
Standard enrols too — a daily snapshot kept 90 days. Resilient is the lowest tier that adds continuous backup and a copy outside the region, and the lowest at which S3 buckets are enrolled (AWS Backup requires versioning, which this tier turns on). Continuous backup is what buys second-level restore, and AWS supports it for RDS instances, Aurora clusters and S3 buckets. DynamoDB tables and ClickHouse data volumes are enrolled by the same rule and receive the daily snapshot instead, so their finest granularity is a day.
Resources join the plan through the
fjall:disasterRecovery:tier tag, applied from backup: { tier: "resilient" }. The vault and the plans live in the account infrastructure, not the application stack.
Recovery time depends on which layer you restore from. An Aurora writer failure fails over to a reader in minutes without a restore. A point-in-time restore of the cluster takes as long as Aurora needs to rebuild the volume. Test both paths against your own recovery objectives rather than assuming a figure.
Cost Considerations
Resilient runs at a higher baseline than Standard because of:- 4 Fargate tasks running continuously (1 vCPU and 2 GB each)
- 3 NAT Gateways, one per AZ
- Aurora with 2 readers plus RDS Proxy
- 2 VPC interface endpoints, billed per hour per endpoint per AZ
- KMS customer-managed keys for storage and Database Insights
- AWS Backup storage at 35-day retention
fjall costs against a deployed application for figures from your own account.
Resilient vs Standard
Moving an existing Standard application up means replacing the RDS Instance with an Aurora cluster, which is a data migration rather than a config change. Plan it as one.
When to Use
Resilient suits:- Customer-facing applications that cannot absorb a single-AZ outage
- Workloads that need customer-managed encryption keys without the Enterprise compute baseline
- Applications with a backup and retention obligation beyond the database default
- Teams that want connection pooling and TLS enforcement at the database edge
Next Steps
Deploy Application
Deploy your Resilient application to AWS
Add Resources
Extend with storage, messaging, or CDN
Database Factory
Customise the Aurora configuration
Enterprise Pattern
Compare against the highest-capability tier