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://mp-staging.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/performance.md

Performance Patterns

Asynchronous Request-Reply Pattern

Problem: Client applications expect synchronous responses, but back-end processing is asynchronous.

Solution: Decouple back-end processing from a front-end host where back-end processing must be asynchronous, but the front end requires a clear response.

When to Use:

  • Long-running back-end operations

  • Client applications can't wait for synchronous responses

  • Offloading compute-intensive operations from web tier

Implementation Considerations:

  • Return HTTP 202 (Accepted) with location header for status checking

  • Implement status endpoint for clients to poll

  • Consider webhooks for callback notifications

  • Use correlation IDs to track requests

  • Implement timeouts for long-running operations

Cache-Aside Pattern

Problem: Applications repeatedly access the same data from a data store.

Solution: Load data on demand into a cache from a data store when needed.

When to Use:

  • Frequently accessed, read-heavy data

  • Data that changes infrequently

  • Reducing load on primary data store

Implementation Considerations:

  • Check cache before accessing data store

  • Load data into cache on cache miss (lazy loading)

  • Set appropriate cache expiration policies

  • Implement cache invalidation strategies

  • Handle cache failures gracefully (fallback to data store)

  • Consider cache coherency in distributed scenarios

CQRS (Command Query Responsibility Segregation) Pattern

Problem: Read and write workloads have different requirements and scaling needs.

Solution: Separate operations that read data from those that update data by using distinct interfaces.

When to Use:

  • Read and write workloads have vastly different performance characteristics

  • Different teams work on read and write sides

  • Need to prevent merge conflicts in collaborative scenarios

  • Complex business logic differs between reads and writes

Implementation Considerations:

  • Separate read and write models

  • Use event sourcing to synchronize models

  • Scale read and write sides independently

  • Consider eventual consistency implications

  • Implement appropriate security for commands vs queries

Index Table Pattern

Problem: Queries frequently reference fields that aren't indexed efficiently.

Solution: Create indexes over the fields in data stores that queries frequently reference.

When to Use:

  • Improving query performance

  • Supporting multiple query patterns

  • Working with NoSQL databases without native indexing

Implementation Considerations:

  • Create separate tables/collections optimized for specific queries

  • Maintain indexes asynchronously using events or triggers

  • Consider storage overhead of duplicate data

  • Handle index update failures and inconsistencies

Materialized View Pattern

Problem: Data is poorly formatted for required query operations.

Solution: Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for query operations.

When to Use:

  • Complex queries over normalized data

  • Improving read performance for complex joins/aggregations

  • Supporting multiple query patterns efficiently

Implementation Considerations:

  • Refresh views asynchronously using background jobs or triggers

  • Consider staleness tolerance for materialized data

  • Balance between storage cost and query performance

  • Implement incremental refresh where possible

Priority Queue Pattern

Problem: Some requests need faster processing than others.

Solution: Prioritize requests sent to services so that requests with a higher priority are processed more quickly.

When to Use:

  • Providing different service levels to different customers

  • Processing critical operations before less important ones

  • Managing mixed workloads with varying importance

Implementation Considerations:

  • Use message priority metadata

  • Implement multiple queues for different priority levels

  • Prevent starvation of low-priority messages

  • Monitor queue depths and processing times per priority

Queue-Based Load Leveling Pattern

Problem: Intermittent heavy loads can overwhelm services.

Solution: Use a queue as a buffer between a task and a service to smooth intermittent heavy loads.

When to Use:

  • Protecting services from traffic spikes

  • Decoupling producers and consumers

  • Enabling asynchronous processing

Implementation Considerations:

  • Choose appropriate queue technology (Azure Storage Queue, Service Bus, etc.)

  • Monitor queue length to detect saturation

  • Implement auto-scaling based on queue depth

  • Set appropriate message time-to-live (TTL)

  • Handle poison messages with dead-letter queues

Rate Limiting Pattern

Problem: Service consumption must be controlled to prevent resource exhaustion.

Solution: Control the consumption of resources by applications, tenants, or services to prevent resource exhaustion and throttling.

When to Use:

  • Protecting backend services from overload

  • Implementing fair usage policies

  • Preventing one tenant from monopolizing resources

Implementation Considerations:

  • Implement token bucket, leaky bucket, or fixed window algorithms

  • Return HTTP 429 (Too Many Requests) when limits exceeded

  • Provide Retry-After headers to clients

  • Consider different limits for different clients/tiers

  • Make limits configurable and monitorable

Sharding Pattern

Problem: A single data store may have limitations in storage capacity and performance.

Solution: Divide a data store into a set of horizontal partitions or shards.

When to Use:

  • Scaling beyond single database limits

  • Improving query performance by reducing dataset size

  • Distributing load across multiple databases

Implementation Considerations:

  • Choose appropriate shard key (hash, range, or list-based)

  • Avoid hot partitions by selecting balanced shard keys

  • Handle cross-shard queries carefully

  • Plan for shard rebalancing and splitting

  • Consider operational complexity of managing multiple shards

Throttling Pattern

Problem: Resource consumption must be limited to prevent system overload.

Solution: Control the consumption of resources used by an application, tenant, or service.

When to Use:

  • Ensuring system operates within defined capacity

  • Preventing resource exhaustion during peak load

  • Enforcing SLA-based resource allocation

Implementation Considerations:

  • Implement at API gateway or service level

  • Use different strategies: reject requests, queue, or degrade service

  • Return appropriate HTTP status codes (429, 503)

  • Provide clear feedback to clients about throttling

  • Monitor throttling metrics to adjust capacity

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