Skip to main content

designing-multi-cloud-architecture

Selects cloud services and a multi-cloud topology using an explicit decision framework: which of the six multi-cloud patterns fits the actual driver, how AWS, Azure and GCP services map onto each other, where a cloud-agnostic abstraction pays for itself and where it costs more than lock-in, and how to phase a migration. Use when choosing cloud services for a workload, planning a cross-cloud or DR topology, or evaluating a move between providers.

Source facts

Repository
TheSoftwareHouse/agentic-collections
Last source activity
October 2, 2026 at 09:37
Detected SKILL.md language
English
Stars
12
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
4 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
designing-multi-cloud-architecture
description
Selects cloud services and a multi-cloud topology using an explicit decision framework: which of the six multi-cloud patterns fits the actual driver, how AWS, Azure and GCP services map onto each other, where a cloud-agnostic abstraction pays for itself and where it costs more than lock-in, and how to phase a migration. Use when choosing cloud services for a workload, planning a cross-cloud or DR topology, or evaluating a move between providers.
when_to_use
Trigger on: selecting a cloud provider or service for a workload, 'what's the AWS equivalent of' a GCP or Azure service, designing disaster recovery in a second cloud, avoiding or evaluating vendor lock-in, data-sovereignty-driven regional topology, planning a migration between providers, cloud bursting, or deciding whether to abstract over providers with Kubernetes and Terraform.
# Designing Multi-Cloud Architecture Start from the driver, not the pattern. Multi-cloud has a real operational cost — two control planes, two skill sets, egress between them — so a topology that no stated requirement forces is a liability rather than a hedge. ## Applicability and Precedence Read `${CLAUDE_PLUGIN_ROOT}/shared/discovering-infrastructure-context.md` first. A provider already in production, or a decision record in `docs/decisions/`, settles the question — do not re-open a recorded provider choice as part of an unrelated change. Conversely, a topology or provider choice made here **is** a decision record: it is expensive to reverse, and the reasoning is what a future reader needs. Propose recording it with `/tsh-core:managing-decision-records` once the choice is made. ## Non-negotiable Rules | Severity | Rule | | --- | --- | | MUST | Name the driver — disaster recovery, compliance or data sovereignty, best-of-breed capability, or cost — before proposing a multi-cloud topology. No driver means single-cloud. | | MUST | Cost every design, including cross-cloud data transfer. Egress between providers is the line item that turns a sensible-looking topology into an expensive one. | | MUST | Present portability as a trade-off with its price, never as a free property. Abstraction costs managed-service capability and engineering time. | | MUST | Verify service availability in the specific target regions before designing around a service — regional availability differs and is a common late-stage surprise. | | NEVER | Design cross-cloud failover without saying how it is tested. Untested failover is documentation, not resilience. | | NEVER | Duplicate a workload into a second cloud without a stated reason for that specific workload. | ## Reference Loading | Reference | Load when | Covers | | --- | --- | --- | | [Decision framework](./references/decision-framework.md) | Choosing between topologies, or handling identity, networking, observability and cost across clouds | Pattern selection criteria, cross-cutting concerns every pattern shares | | [Multi-cloud patterns](./references/patterns.md) | A pattern has been selected and needs designing | Six patterns in full — DR, best-of-breed, geographic, agnostic abstraction, bursting, data mesh | | [Service comparison](./references/service-comparison.md) | Mapping a service to its equivalent in another provider | Compute, storage, database, networking, security, messaging, AI/ML, analytics, observability equivalents | Read [decision-framework.md](./references/decision-framework.md) before proposing any topology — selecting a pattern by familiarity is the failure this skill exists to prevent. ## The six patterns | Pattern | Driver it serves | | :-- | :-- | | Single provider with DR | Recovery objectives a single provider cannot meet | | Best-of-breed (polycloud) | A capability genuinely better on another provider | | Geographic distribution | Latency, or data sovereignty | | Cloud-agnostic abstraction | Portability as a hard requirement, usually contractual | | Cloud bursting | Sustained baseline plus rare, large peaks | | Data mesh / analytics on best provider | Analytics or ML capability, with a bounded data flow | Full designs in [patterns.md](./references/patterns.md). ## Service selection Common equivalents, with the full matrix in [service-comparison.md](./references/service-comparison.md): | Purpose | AWS | Azure | GCP | | :-- | :-- | :-- | :-- | | IaaS VMs | EC2 | Virtual Machines | Compute Engine | | Managed containers | Fargate / ECS | Container Apps | Cloud Run | | Kubernetes | EKS | AKS | GKE | | Serverless functions | Lambda | Functions | Cloud Functions | | Object storage | S3 | Blob Storage | Cloud Storage | | Managed SQL | RDS | SQL Database | Cloud SQL | | NoSQL | DynamoDB | Cosmos DB | Firestore | | Cache | ElastiCache | Cache for Redis | Memorystore | Verify the current generation and regional availability with `context7` before committing to any specific service or tier. ## Cloud-agnostic building blocks Where portability is the actual requirement, these carry across providers: Kubernetes for compute, PostgreSQL or MySQL for relational data, Kafka for streaming, Redis for cache, S3-compatible APIs for objects, Prometheus and Grafana for observability, Istio or Linkerd for service mesh, Terraform for provisioning. The trade-off is explicit: portable choices give up managed-service capability and add operational work. Take it only when portability is required, not by default. ## Procedure 1. **Establish the driver.** DR, compliance, capability, or cost — named, and tied to a requirement. No driver → single cloud, and say so. 2. **Select the pattern** using [decision-framework.md](./references/decision-framework.md). 3. **Map services** with [service-comparison.md](./references/service-comparison.md), verifying current tiers and regional availability. 4. **Choose the abstraction level** — Kubernetes, Terraform, both, or neither — and state what it costs. 5. **Design cross-cloud networking** — VPN or interconnect, address planning, and the egress cost that follows from where data lives relative to where it is processed. 6. **Federate identity** to a single source of truth. Two independent identity systems is the failure mode that outlives the project. 7. **Unify observability** so one query answers a question about either cloud. 8. **Plan the phases** — assessment, pilot with one workload, incremental migration with a dual-run period, then optimization. 9. **Define and schedule failover tests.** ## Checklist - [ ] Multi-cloud driver documented, per workload - [ ] Pattern selected against the framework, not by familiarity - [ ] Service equivalents mapped and regional availability verified - [ ] Abstraction level chosen, with its cost stated - [ ] Cross-cloud networking designed and secured - [ ] Identity federated to one source of truth - [ ] Unified monitoring and logging - [ ] Cost allocation across providers, including egress - [ ] Failover procedure documented and its test scheduled - [ ] Team competent in every provider in the design ## Anti-Patterns | Don't | Do | | :-- | :-- | | Adopt multi-cloud as a hedge with no driver | Name the requirement, or stay single-cloud | | Use proprietary services where portability is required | Choose agnostic building blocks, knowingly | | Duplicate everything across clouds | Be deliberate about what runs where | | Manage each cloud with its own tooling | One IaC and one observability surface | | Ignore inter-cloud transfer cost | Design to keep processing next to data | | Claim failover works because it is configured | Test it on a schedule | ## Related skills in this plugin - [Implementing Terraform modules](../implementing-terraform-modules/SKILL.md) — the provisioning layer for any of these patterns - [Optimizing cloud cost](../optimizing-cloud-cost/SKILL.md) — pricing models and cross-cloud cost tracking - [Deploying to Kubernetes](../deploying-to-kubernetes/SKILL.md) — the agnostic compute layer in practice
View on GitHub