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/architecture-design.md

Architecture & Design Patterns

Anti-Corruption Layer Pattern

Problem: New systems must integrate with legacy systems that use outdated models or technologies.

Solution: Implement a façade or adapter layer between a modern application and a legacy system to prevent legacy constraints from affecting new design.

When to Use:

  • Migrating from legacy systems incrementally

  • Integrating with third-party systems with different domain models

  • Protecting modern architectures from legacy constraints

Implementation Considerations:

  • Create translation layer between domain models

  • Map between legacy and modern data structures

  • Isolate legacy system interfaces behind abstractions

  • Consider performance impact of translation

  • Plan for eventual removal if migration is complete

Backends for Frontends (BFF) Pattern

Problem: A single backend may not optimally serve different client types.

Solution: Create separate backend services to serve specific frontend applications or interfaces.

When to Use:

  • Different client types (web, mobile, IoT) have different needs

  • Optimizing payload size and shape per client

  • Reducing coupling between frontend and shared backend

Implementation Considerations:

  • Create one BFF per user experience or client type

  • Tailor API contracts to frontend needs

  • Avoid duplicating business logic across BFFs

  • Share common services between BFFs

  • Manage increased number of services

Gateway Aggregation Pattern

Problem: Clients need data from multiple backend services.

Solution: Use a gateway to aggregate multiple individual requests into a single request.

When to Use:

  • Reducing chattiness between clients and backends

  • Combining data from multiple sources for a single view

  • Reducing latency by parallelizing backend calls

Implementation Considerations:

  • API gateway aggregates responses from multiple services

  • Execute backend calls in parallel where possible

  • Handle partial failures appropriately

  • Consider caching of aggregated responses

  • Avoid creating a monolithic gateway

Gateway Offloading Pattern

Problem: Shared functionality is duplicated across multiple services.

Solution: Offload shared or specialized service functionality to a gateway proxy.

When to Use:

  • Centralizing cross-cutting concerns (SSL, authentication, logging)

  • Simplifying service implementation

  • Standardizing shared functionality

Implementation Considerations:

  • Offload SSL termination to gateway

  • Implement authentication and authorization at gateway

  • Handle rate limiting and throttling

  • Provide request/response logging

  • Avoid making gateway a bottleneck

Gateway Routing Pattern

Problem: Clients need to access multiple services through a single endpoint.

Solution: Route requests to multiple services using a single endpoint.

When to Use:

  • Providing a single entry point for multiple services

  • Abstracting backend service topology from clients

  • Enabling service versioning and migration strategies

Implementation Considerations:

  • Route based on URL path, headers, or query parameters

  • Support URL rewriting and transformation

  • Enable A/B testing and canary deployments

  • Implement health checks for backend services

  • Monitor routing performance

Sidecar Pattern

Problem: Applications need auxiliary functionality without coupling.

Solution: Deploy components of an application into a separate process or container to provide isolation and encapsulation.

When to Use:

  • Adding functionality to applications without modifying them

  • Implementing cross-cutting concerns (logging, monitoring, security)

  • Supporting heterogeneous environments

Implementation Considerations:

  • Deploy sidecar alongside main application

  • Share lifecycle, resources, and network with main application

  • Use for proxying, logging, configuration, or monitoring

  • Consider resource overhead of additional containers

  • Standardize sidecar implementations across services

Strangler Fig Pattern

Problem: Legacy systems are risky to replace all at once.

Solution: Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.

When to Use:

  • Modernizing legacy applications

  • Reducing risk of big-bang migrations

  • Enabling incremental business value delivery

Implementation Considerations:

  • Identify functionality to migrate incrementally

  • Use facade or proxy to route between old and new

  • Migrate less risky components first

  • Run old and new systems in parallel initially

  • Plan for eventual decommissioning of legacy system

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