Designing Fault-Tolerant Cloud Architecture on AWS, GCP, and Azure: 15 Prompts That Cut Costs and Keep You Online
Every cloud architect eventually faces the same uncomfortable moment: a service goes down at 3 a.m., the on-call engineer opens the AWS console, and nobody can answer a simple question — why did we choose a single-AZ RDS instance in production? The answer is usually buried in a Slack thread from eighteen months ago, in a Terraform PR that three people approved without reading, or in a cost-cutting decision that saved $400 a month and cost six hours of downtime.
Designing fault-tolerant architecture is not about memorizing SLA tables. It is about asking the right questions before you provision anything: What is the actual recovery objective? What does a region failure cost us? Where does the data live, and what happens when the primary node disappears? These are architectural decisions, and language models are surprisingly good at forcing you to confront them — provided you ask precisely.
This collection is a practical working set I use when designing, reviewing, and migrating cloud infrastructure. Each prompt is a small tool: it does one thing, produces something you can act on, and includes a real example of what comes back. The numbers I cite (SLA percentages, latency budgets, egress prices) come from official provider documentation and should be verified against current pricing pages, because cloud vendors change them constantly.
Before we start, one framing note. FinOps and reliability are not opposites — they are the same conversation held at different moments. A multi-AZ deployment of PostgreSQL on AWS costs roughly twice a single-AZ one, but a single-AZ outage in us-east-1 has historically taken down a non-trivial slice of the internet. The prompts below help you quantify that trade-off instead of arguing about it.
How to Use These Prompts
Treat every prompt as a template with placeholders in {{curly braces}}. Always include: your provider, the workload's criticality tier, the target SLA, the monthly budget ceiling, and any compliance constraints. LLMs default to generic advice when you omit context — and generic advice is how you end up with a t3.micro running a payment service.
Tier 1: Foundations — Getting the Requirements Right
1. Translating Business Requirements into SLIs, SLOs, and Error Budgets
Task: Turn a vague business statement ("the checkout must always work") into measurable service level indicators, objectives, and an error budget you can actually monitor.
Prompt:
You are a Site Reliability Engineer. Convert the following business requirement
into a formal SLO specification.
Business requirement: {{requirement}}
System: {{system description}}
User-facing or internal: {{type}}
Traffic profile: {{requests per day, peak multiplier}}
Produce:
1. 2-3 SLIs with exact measurement definitions (numerator/denominator).
2. SLO targets as percentages with a 28-day rolling window.
3. The implied error budget in minutes of allowed unavailability per month.
4. Two alerting thresholds: fast burn (2% budget in 1h) and slow burn (5% in 6h).
5. One sentence explaining what the team must STOP doing when the budget is exhausted.
Do not propose an SLO of 100%. Explain why that is unachievable.
Example result: For a checkout flow handling 40,000 requests/day, the model returned an availability SLI (successful HTTP 2xx or 3xx on /checkout/* divided by all requests), a latency SLI (proportion of requests under 800 ms), and a 99.9% availability target. That translates to roughly 43 minutes of allowed downtime per 28-day window. It correctly flagged that 99.99% (about 4.3 minutes) would require multi-region active-active and would roughly double infrastructure spend.
Why it works: Forcing the model to compute the error budget in minutes makes the cost of reliability tangible. Teams argue less when the number is on the whiteboard.
2. Mapping a Workload to a Criticality Tier
Task: Classify each service in your system so you stop paying for five-nines reliability on an internal admin panel.
Prompt:
Classify the following services into tiers 0-3 based on business impact.
Services:
{{list of services with one-line descriptions}}
Tier definitions:
- Tier 0: revenue or safety critical, target 99.99%+, multi-region
- Tier 1: customer-facing, target 99.9%, multi-AZ
- Tier 2: internal, target 99.5%, single-AZ acceptable
- Tier 3: batch/experimental, best-effort
For each service output: tier, target SLA, required redundancy pattern,
and the single most expensive mistake a team could make with it.
Example result: A CRM's PDF export service was correctly placed in Tier 3, saving the team from the multi-AZ setup they had almost deployed. Meanwhile, the authentication service was flagged as Tier 0 — a misclassification that had left it on a single-AZ ElastiCache cluster.
Tier 2: Architecture Design — Region, Zone, and Data
3. Choosing Between Multi-AZ and Multi-Region
Task: Get a decision with explicit cost and latency trade-offs, not a marketing answer.
Prompt:
Compare multi-AZ vs multi-region deployment for this workload.
Workload: {{description}}
Provider: {{AWS
| GCP | Azure}}
Current monthly spend: {{amount}}
Target availability: {{SLO}}
RTO: {{recovery time objective}}
RPO: {{recovery point objective}}
Data residency constraints: {{constraints}}
Output a Markdown table with rows: availability ceiling, added monthly cost,
added p99 latency, operational complexity, data consistency risk.
Then give a recommendation with the RTO/RPO math that justifies it.
Example result: For a SaaS app at $12,000/month targeting 99.95% with RTO of 15 minutes, the model recommended multi-AZ with automated cross-region backups rather than active-active. Reasoning: multi-region would add roughly 60-80% to the bill and introduce write-conflict resolution complexity, while a tested restore path could meet a 15-minute RTO for a stateless API fronted by a global load balancer.
4. Designing the Data Layer for Failure
Task: Decide replication topology, failover behavior, and the split-brain strategy before you write a line of Terraform.
Prompt:
Design the data layer for this system.
Database engine: {{PostgreSQL
| MySQL | DynamoDB | Spanner | Cosmos DB}}
Provider: {{provider}}
Read/write ratio: {{ratio}}
Peak writes per second: {{number}}
Consistency requirement: {{strong
| eventual | read-your-writes}}
RPO: {{value}}
Specify:
1. Primary/replica topology with concrete instance classes.
2. Failover mechanism and expected failover time.
3. How the application handles a replica lag of up to {{N}} seconds.
4. Backup strategy: frequency, retention, cross-region copy, restore drill cadence.
5. The exact failure mode that would cause data loss, and how to detect it.
Example result: For a PostgreSQL workload on AWS, the model proposed a Multi-AZ RDS primary with two read replicas in different AZs, automatic failover typically completing in 60-120 seconds, and a logical replication slot for downstream analytics. It explicitly called out that async read replicas can serve stale data and recommended routing only analytics queries to them — a detail many teams learn the hard way.
5. Designing a Queue-Based Decoupling Layer
Task: Replace synchronous service-to-service calls with a durable buffer that absorbs traffic spikes.
Prompt:
Design an asynchronous decoupling layer for this flow.
Producer: {{service}}
Consumer: {{service}}
Peak message rate: {{messages/sec}}
Average processing time: {{ms}}
Tolerance for delay: {{seconds}}
Provider: {{provider}}
Recommend a queue or stream service (SQS, Pub/Sub, Service Bus, Kafka, Kinesis),
with: visibility timeout, dead-letter queue policy, max retries, idempotency key design,
and an alert for consumer lag. Justify the choice against at least one alternative.
Example result: For a 3,000 msg/s image-processing pipeline, the model recommended SQS with a visibility timeout of six times the p99 processing time and a DLQ after three receives. It rejected Kinesis because the team needed per-message retry semantics rather than ordered replay — a distinction that matters when you are debugging at 2 a.m.
Tier 3: FinOps — Making Reliability Affordable
6. Building a Cost Model Before You Build the System
Task: Estimate monthly spend from architecture primitives instead of guessing from a calculator screenshot.
Prompt:
Build a monthly cost model for this architecture on {{provider}}.
Components:
{{list: compute, storage, database, egress, load balancer, NAT, etc.}}
Region: {{region}}
Expected traffic: {{requests/day, GB egress/month}}
Growth assumption: {{% per quarter}}
Output a Markdown table: component, unit price source, quantity, monthly cost.
Then show three scenarios: current, 3x traffic, 10x traffic.
Flag which line item grows non-linearly and why.
Example result: For a containerized API on AWS in eu-central-1, the model produced a table showing that NAT Gateway data processing, not compute, was the fastest-growing line item under load — a well-known trap where per-GB NAT charges quietly overtake EC2 costs. Recommendation: VPC endpoints for S3 and ECR traffic.
7. Hunting Idle and Over-Provisioned Resources
Task: Turn a billing export into an actionable rightsizing list.
Prompt:
Analyze this resource inventory and find waste.
Inventory:
{{paste: instance type, avg CPU %, avg memory %, monthly cost}}
For each resource output: verdict (keep / rightsize / terminate / schedule),
suggested target configuration, estimated monthly saving, and risk of the change.
Sort by saving descending. Assume a 30% safety margin on CPU and 20% on memory.
Example result: A fleet of 40 m5.2xlarge instances averaging 9% CPU was consolidated to m5.large with an autoscaling group, cutting compute spend by roughly two-thirds. One instance running a legacy license server was flagged as "keep" because its memory profile was misleading — the model caught that a rightsize would break a stateful workload.
8. Choosing Commitment Discounts Without Locking Yourself In
Task: Decide between on-demand, savings plans, and reserved capacity per workload, accounting for uncertainty.
Prompt:
Recommend a commitment strategy for this workload.
Provider: {{provider}}
Stable baseline usage: {{vCPU-hours/month}}
Volatile usage: {{vCPU-hours/month}}
Expected lifetime of the workload: {{months}}
Probability the architecture changes within 12 months: {{low
| medium | high}}
Compare on-demand, 1-year, and 3-year commitments with break-even math.
State explicitly how much capacity to cover with commitments (as a % of baseline)
and what to leave on-demand. Include the risk of over-committing.
Example result: For a medium-uncertainty workload, the model recommended covering 60-70% of the baseline with a 1-year compute savings plan and leaving the rest on-demand. It showed that a 3-year commitment would break even only if the workload's shape stayed stable — and noted that a migration to Graviton-style ARM instances would invalidate the commitment's value.
Tier 4: Migration and Multi-Cloud
9. Planning a Provider Migration Without a Big Bang
Task: Sequence a migration so that each step is independently reversible.
Prompt:
Create a phased migration plan from {{source provider}} to {{target provider}}.
Workloads: {{list with dependencies}}
Data volume: {{TB}}
Downtime tolerance: {{minutes}}
Team size: {{N engineers}}
Produce 5-7 phases. Each phase must state: goal, entry criteria, exit criteria,
rollback method, and the metric that proves success.
Do not propose a cutover that requires simultaneous downtime of more than {{X}} minutes.
Example result: The model produced a strangler-fig plan: replicate data first with continuous sync, dual-write to both providers behind a feature flag, shift read traffic, then writes, then decommission. Each phase had a measurable exit criterion (e.g., "p99 read latency from the new provider under 120 ms for 72 hours").
10. Writing a Portability Checklist Before You Commit
Task: Identify provider-specific lock-in early, while it is still cheap to avoid.
Prompt:
List lock-in risks in this architecture for a future migration off {{provider}}.
Services used: {{list}}
For each service output: lock-in severity (low/medium/high), the specific
proprietary feature creating the lock-in, an open-standard alternative,
and the migration effort estimate in engineer-weeks.
Example result: Managed Kubernetes was rated low lock-in; a proprietary serverless database with a custom query dialect was rated high, with an estimated 8-12 engineer-weeks to migrate. The model suggested abstracting that access behind a repository layer now, which costs almost nothing today.
Tier 5: Operations, Testing, and Drills
11. Designing a Chaos Experiment
Task: Test whether your failover actually works before a real incident tests it for you.
Prompt:
Design a chaos experiment for this system.
System: {{description}}
Provider: {{provider}}
Hypothesis: the system survives {{failure}} with {{impact}}.
Blast radius limit: {{scope}}
Output: steady-state definition, exact fault injection method, abort conditions,
monitoring signals to watch, and the post-experiment report template.
Example result: For a hypothesis that "the API survives the loss of one AZ," the model specified terminating all instances in a single AZ, watching error rate and p99 latency for 10 minutes, and aborting if error rate exceeded 1%. The report template forced the team to record actual failover time versus the SLO assumption.
12. Building a Runbook for a Database Failover
Task: Turn tribal knowledge into a document a tired engineer can follow at 3 a.m.
Prompt:
Write a runbook for {{failure scenario}} on {{provider}}.
Audience: on-call engineer with basic provider knowledge.
Include: detection signal, first 5 minutes checklist, exact console/CLI steps,
verification commands, rollback, and escalation criteria.
No step may require more than one person to complete.
Example result: The runbook opened with a single command to check cluster status, then a numbered sequence with expected outputs at each step. It included a "do not do this" section — for example, do not force a failover if replica lag exceeds a threshold, because you will promote a stale node.
13. Setting Up Cost Anomaly Alerts
Task: Catch a runaway resource the day it happens, not at the end of the month.
Prompt:
Design a cost anomaly detection policy for a {{size}} cloud account.
Provider: {{provider}}
Normal monthly spend: {{amount}}
Spend volatility: {{low
| medium | high}}
Define: alert threshold formula, notification channels, who is on the hook,
and a triage decision tree for the top 5 causes of unexpected spend.
Example result: The model proposed alerting on day-over-day spend exceeding 20% above the trailing 7-day average, with a triage tree covering forgotten test environments, egress spikes, NAT charges, orphaned load balancers, and logging volume. It noted that logging ingestion is a frequent silent cost driver.
14. Reviewing a Terraform Plan for Reliability Gaps
Task: Get a second pair of eyes on infrastructure-as-code before it reaches production.
Prompt:
Review this Terraform plan for reliability and cost issues.
{{paste relevant resource blocks}}
Check for: missing multi-AZ configuration, single points of failure,
absent backup policies, overly permissive security groups, hardcoded instance types,
missing tags for cost allocation, and resources without lifecycle rules.
Output findings as a table with severity and a suggested patch.
Example result: A review caught an S3 bucket without a lifecycle policy accumulating terabytes of logs, a security group open to 0.0.0.0/0 on port 22, and an RDS instance without multi_az = true. Each finding came with a one-line fix, which the engineer applied directly.
15. Writing the Architecture Decision Record
Task: Capture why a decision was made so the next engineer does not reverse it blindly.
Prompt:
Write an Architecture Decision Record.
Decision: {{what was decided}}
Context: {{constraints, requirements}}
Alternatives considered: {{list}}
Consequences: {{known trade-offs}}
Use the standard ADR format: Title, Status, Context, Decision, Consequences.
Keep it under 400 words. Be explicit about what we are giving up.
Example result: An ADR documenting "use single-region multi-AZ for the MVP" explicitly stated the accepted risk: a full region outage would cause hours of downtime, and the team committed to revisiting the decision when monthly revenue crossed a defined threshold. Six months later, that threshold triggered the multi-region review — on schedule, not in a panic.
A Quick Reference Table
| Goal | Prompt # | Typical Output |
|---|---|---|
| Define reliability targets | 1, 2 | SLO spec, error budget in minutes |
| Choose redundancy pattern | 3, 4 | Multi-AZ vs multi-region decision with cost |
| Decouple services | 5 | Queue config with DLQ and retries |
| Control spend | 6, 7, 8, 13 | Cost model, rightsizing list, commitment plan |
| Migrate safely | 9, 10 | Phased plan, lock-in checklist |
| Prove it works | 11, 12, 14, 15 | Chaos experiment, runbook, review, ADR |
What These Prompts Will Not Do
They will not tell you your business's true RTO — only your stakeholders can. They will not validate that a proposed instance class exists in your region and is available for your account; always confirm against the provider's official documentation for AWS, Google Cloud, and Microsoft Azure. And they will not replace a restore drill: a backup you have never restored from is a hypothesis, not a backup.
The pattern across all fifteen prompts is the same. Make the model state assumptions explicitly, force it to produce numbers you can check, and ask it what would have to be true for the recommendation to be wrong. That last question is where the real value lives — because in cloud architecture, the expensive mistakes are never the ones you debated, they are the ones nobody thought to question.
Start with prompts 1 and 6 on your current system. You will likely discover that your stated SLA and your actual architecture are two different stories. Closing that gap is the entire job.
Comments