Generated banner for Cloud Design Patterns
Generated logo for Cloud Design Patterns

Cloud Design Patterns

GitHubOfficialFirst committed by fatihdurgutDistributed by GitHub

  • Skill
  • Guidelines
  • Software development
  • MIT
  • No issues found

From the author

Cloud design patterns for distributed systems architecture covering 42 industry-standard patterns across reliability, performance, messaging, security, and deployment categories. Use when designing, reviewing, or implementing distributed system architectures.
— the description by fatihdurgut

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Cloud Design Patterns provides a structured collection of architectural solutions designed to address common challenges in distributed systems. It helps architects and developers navigate the complexities of cloud-native design by offering technology-agnostic patterns that mitigate risks associated with distributed computing, such as network latency, reliability, and security. The collection covers seven key categories including reliability, performance, messaging, architecture, deployment, security, and event-driven design, enabling teams to make informed trade-off decisions when building modern applications.

What it does

  • Provides definitions and problem-solution mappings for 42 cloud design patterns.
  • Categorizes patterns by architectural focus such as performance, reliability, and security.
  • Offers guidance on when to apply specific patterns to solve distributed system challenges.
  • Highlights implementation considerations and trade-offs for each architectural pattern.
  • Maps common design patterns to relevant cloud service types.
  • Addresses common fallacies of distributed computing through architectural mitigation strategies.

When to use it

  • When designing the architecture for a new distributed cloud application.
  • During architectural reviews to identify potential weaknesses or optimization opportunities.
  • When evaluating strategies to improve system reliability, performance, or security.
  • When planning the migration or modernization of legacy systems.
  • When seeking standard approaches to common cross-cutting concerns like API management or messaging.

Advantages

  • Technology-agnostic guidance applicable across various cloud and hybrid environments.
  • Focuses on architectural trade-offs rather than specific implementation details.
  • Helps prevent common design flaws by addressing distributed system fallacies.
  • Provides a standardized vocabulary for architectural discussions within development teams.

Usage examples

“What pattern should I use to integrate a legacy system with a new microservices architecture?”
The agent recommends the Anti-Corruption Layer pattern, explaining how to implement a facade to isolate the modern system from legacy constraints.
“How can I improve the performance of my application when clients need data from multiple backend services?”
The agent suggests the Gateway Aggregation pattern to combine multiple backend requests into a single call, reducing chattiness and latency.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/github/cloud-design-patterns/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip cloud-design-patterns.zip -d .agents/skills

Documentation by fatihdurgut

Cloud Design Patterns

Architects design workloads by integrating platform services, functionality, and code to meet both functional and nonfunctional requirements. To design effective workloads, you must understand these requirements and select topologies and methodologies that address the challenges of your workload's constraints. Cloud design patterns provide solutions to many common challenges.

System design heavily relies on established design patterns. You can design infrastructure, code, and distributed systems by using a combination of these patterns. These patterns are crucial for building reliable, highly secure, cost-optimized, operationally efficient, and high-performing applications in the cloud.

The following cloud design patterns are technology-agnostic, which makes them suitable for any distributed system. You can apply these patterns across Azure, other cloud platforms, on-premises setups, and hybrid environments.

How Cloud Design Patterns Enhance the Design Process

Cloud workloads are vulnerable to the fallacies of distributed computing, which are common but incorrect assumptions about how distributed systems operate. Examples of these fallacies include:

  • The network is reliable.

  • Latency is zero.

  • Bandwidth is infinite.

  • The network is secure.

  • Topology doesn't change.

  • There's one administrator.

  • Component versioning is simple.

  • Observability implementation can be delayed.

These misconceptions can result in flawed workload designs. Design patterns don't eliminate these misconceptions but help raise awareness, provide compensation strategies, and provide mitigations. Each cloud design pattern has trade-offs. Focus on why you should choose a specific pattern instead of how to implement it.


References

ReferenceWhen to load
Reliability & Resilience PatternsAmbassador, Bulkhead, Circuit Breaker, Compensating Transaction, Retry, Health Endpoint Monitoring, Leader Election, Saga, Sequential Convoy
Performance PatternsAsync Request-Reply, Cache-Aside, CQRS, Index Table, Materialized View, Priority Queue, Queue-Based Load Leveling, Rate Limiting, Sharding, Throttling
Messaging & Integration PatternsChoreography, Claim Check, Competing Consumers, Messaging Bridge, Pipes and Filters, Publisher-Subscriber, Scheduler Agent Supervisor
Architecture & Design PatternsAnti-Corruption Layer, Backends for Frontends, Gateway Aggregation/Offloading/Routing, Sidecar, Strangler Fig
Deployment & Operational PatternsCompute Resource Consolidation, Deployment Stamps, External Configuration Store, Geode, Static Content Hosting
Security PatternsFederated Identity, Quarantine, Valet Key
Event-Driven Architecture PatternsEvent Sourcing
Best Practices & Pattern SelectionSelecting appropriate patterns, Well-Architected Framework alignment, documentation, monitoring
Azure Service MappingsCommon Azure services for each pattern category

Pattern Categories at a Glance

CategoryPatternsFocus
Reliability & Resilience9 patternsFault tolerance, self-healing, graceful degradation
Performance10 patternsCaching, scaling, load management, data optimization
Messaging & Integration7 patternsDecoupling, event-driven communication, workflow coordination
Architecture & Design7 patternsSystem boundaries, API gateways, migration strategies
Deployment & Operational5 patternsInfrastructure management, geo-distribution, configuration
Security3 patternsIdentity, access control, content validation
Event-Driven Architecture1 patternEvent sourcing and audit trails

Files

references/reliability-resilience.md

Reliability & Resilience Patterns

Ambassador Pattern

Problem: Services need proxy functionality for network requests (logging, monitoring, routing, security).

Solution: Create helper services that send network requests on behalf of a consumer service or application.

When to Use:

  • Offloading common client connectivity tasks (monitoring, logging, routing)

  • Supporting legacy applications that can't be easily modified

  • Implementing retry logic, circuit breakers, or timeout handling for remote services

Implementation Considerations:

  • Deploy ambassador as a sidecar process or container with the application

  • Consider network latency introduced by the proxy layer

  • Ensure ambassador doesn't become a single point of failure

Bulkhead Pattern

Problem: A failure in one component can cascade and affect the entire system.

Solution: Isolate elements of an application into pools so that if one fails, the others continue to function.

When to Use:

  • Isolating critical resources from less critical ones

  • Preventing resource exhaustion in one area from affecting others

  • Partitioning consumers and resources to improve availability

Implementation Considerations:

  • Separate connection pools for different backends

  • Partition service instances across different groups

  • Use resource limits (CPU, memory, threads) per partition

  • Monitor bulkhead health and capacity

Circuit Breaker Pattern

Problem: Applications can waste resources attempting operations that are likely to fail.

Solution: Prevent an application from repeatedly trying to execute an operation that's likely to fail, allowing it to continue without waiting for the fault to be fixed.

When to Use:

  • Protecting against cascading failures

  • Failing fast when a remote service is unavailable

  • Providing fallback behavior when services are down

Implementation Considerations:

  • Define threshold for triggering circuit breaker (failures/time window)

  • Implement three states: Closed, Open, Half-Open

  • Set appropriate timeout values for operations

  • Log state transitions and failures for diagnostics

  • Provide meaningful error messages to clients

Compensating Transaction Pattern

Problem: Distributed transactions are difficult to implement and may not be supported.

Solution: Undo the work performed by a sequence of steps that collectively form an eventually consistent operation.

When to Use:

  • Implementing eventual consistency in distributed systems

  • Rolling back multi-step business processes that fail partway through

  • Handling long-running transactions that can't use 2PC

Implementation Considerations:

  • Define compensating logic for each step in transaction

  • Store enough state to undo operations

  • Handle idempotency for compensation operations

  • Consider ordering dependencies between compensating actions

Retry Pattern

Problem: Transient failures are common in distributed systems.

Solution: Enable applications to handle anticipated temporary failures by retrying failed operations.

When to Use:

  • Handling transient faults (network glitches, temporary unavailability)

  • Operations expected to succeed after a brief delay

  • Non-idempotent operations with careful consideration

Implementation Considerations:

  • Implement exponential backoff between retries

  • Set maximum retry count to avoid infinite loops

  • Distinguish between transient and permanent failures

  • Ensure operations are idempotent or track retry attempts

  • Consider jitter to avoid thundering herd problem

Health Endpoint Monitoring Pattern

Problem: External tools need to verify system health and availability.

Solution: Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.

When to Use:

  • Monitoring web applications and back-end services

  • Implementing readiness and liveness probes

  • Providing detailed health information to orchestrators

Implementation Considerations:

  • Expose health endpoints (e.g., /health, /ready, /live)

  • Check critical dependencies (databases, queues, external services)

  • Return appropriate HTTP status codes (200, 503)

  • Implement authentication/authorization for sensitive health data

  • Provide different levels of detail based on security context

Leader Election Pattern

Problem: Distributed tasks need coordination through a single instance.

Solution: Coordinate actions in a distributed application by electing one instance as the leader that manages collaborating task instances.

When to Use:

  • Coordinating distributed tasks

  • Managing shared resources in a cluster

  • Ensuring single-instance execution of critical tasks

Implementation Considerations:

  • Use distributed locking mechanisms (Redis, etcd, ZooKeeper)

  • Handle leader failures with automatic re-election

  • Implement heartbeats to detect leader health

  • Ensure followers can become leaders quickly

Saga Pattern

Problem: Maintaining data consistency across microservices without distributed transactions.

Solution: Manage data consistency across microservices in distributed transaction scenarios using a sequence of local transactions.

When to Use:

  • Long-running business processes spanning multiple services

  • Distributed transactions without 2PC support

  • Eventual consistency requirements across microservices

Implementation Considerations:

  • Choose between orchestration (centralized) or choreography (event-based)

  • Define compensating transactions for rollback scenarios

  • Handle partial failures and rollback logic

  • Implement idempotency for all saga steps

  • Provide clear audit trails and monitoring

Sequential Convoy Pattern

Problem: Process related messages in order without blocking independent message groups.

Solution: Process a set of related messages in a defined order without blocking other message groups.

When to Use:

  • Message processing requires strict ordering within groups

  • Independent message groups can be processed in parallel

  • Implementing session-based message processing

Implementation Considerations:

  • Use session IDs or partition keys to group related messages

  • Process each group sequentially but process groups in parallel

  • Handle message failures within a session appropriately

Requirements and compatibility

Written for: GitHub Copilot

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

First committed by
GitHub avatar of fatihdurgutfatihdurgut
Publisher
GitHub (Official)
Distributed by
GitHub
Source
github/awesome-copilot · skills/cloud-design-patterns · commit 797337f
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
fatihdurgut

AutoGineer is not affiliated with or endorsed by fatihdurgut or GitHub.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download cloud-design-patterns.zip