9 parts · reading order ↓
Managing APIs across web, mobile, and multiple consumer types creates tight coupling that slows modernisation and makes versioning painful. In this episode, Chris Reddington is joined by Peter Piper to explore the Backend for Frontends (BFF) pattern — creating dedicated backends tailored to each consumer — alongside the Strangler Fig pattern for incrementally migrating legacy monoliths without disrupting existing clients. The Façade pattern also features as a key decoupling mechanism for smooth API migrations. Part of the "Architecting for the Cloud, One Pattern at a Time" series.
How do you protect your infrastructure from traffic spikes, safeguard multi-tenant workloads from noisy neighbours, and handle transient failures gracefully? Chris and John Downs walk through three essential cloud resilience patterns: Throttling (protecting services from excess load via rate limiting and HTTP 429), Retry (handling transient faults with exponential backoff), and Circuit Breaker (preventing cascade failures). Part of the "Architecting for the Cloud, One Pattern at a Time" series — essential viewing for any developer building on Azure.
You may know patterns like Retry, Circuit Breaker, or Deployment Stamps — but have you heard of the Geode pattern? In this Architecting for the Cloud episode, Chris and Will Eastbury (who contributed to the original Azure Architecture Center documentation for this pattern) explore how Geodes enable planet-scale, active-active applications where every node can serve any user from any region. Unlike Deployment Stamps (which are tenant-scoped), Geodes replicate data across all regions, eliminating active-passive compute wastage and delivering consistent low-latency experiences globally. The session covers key trade-offs around data sovereignty, replication costs, and the evolution toward intelligent edge deployments — and includes a walkthrough of a globally distributed real-time voting app built with Azure Functions, Cosmos DB, and SignalR.
Peter Piper joins Chris Reddington for another episode in the Architecting for the Cloud, One Pattern at a Time series. Building on the Façade and Strangler patterns, they explore three related cloud design patterns: the Anti-Corruption Layer (translating between legacy and modern domain models), Gateway Aggregation (collapsing multiple backend calls into a single client response), and Gateway Routing (layer-7 routing to decouple consumers from versioned backend services). Real Azure service examples — including API Management, Application Gateway, and Azure Front Door — are used throughout.
Do you have an application with specific scalability and continuity-of-service requirements? What happens when traffic spikes dramatically — think a major concert or FIFA World Cup ticket sale crashing a site? In this Architecting for the Cloud episode, Chris and Will Eastbury walk through three closely related patterns: Queue-Based Load Levelling, Competing Consumers, and the Asynchronous Request-Reply pattern. They explore how message queues act as shock absorbers for traffic spikes, how competing consumers enable elastic horizontal scaling, and how async request-reply lets you retrofit these patterns into existing architectures with minimal disruption. Key trade-offs covered include queue depth limits, Azure Service Bus configuration, distributed tracing with Application Insights, and when the added complexity genuinely justifies reaching for these patterns.
Continuing the 'Architecting for the Cloud, one pattern at a time' series, Chris and Peter Piper explore two closely related cloud design patterns for securing APIs and backend resources. The Gatekeeper pattern positions a dedicated host between untrusted clients and trusted backend services — handling authentication, authorization, request validation, protocol translation, and rate limiting. The Valet Key pattern complements it by issuing short-lived, scope-restricted tokens (such as Azure SAS tokens) so clients can access specific resources directly, reducing load on central services without sacrificing security. The episode covers practical implementation options on Azure including API Management, Azure Key Vault, and Azure App Configuration.
Chris Reddington and Will Eastbury cover three closely related messaging patterns in one packed episode. They start with the Publish-Subscribe (Pub/Sub) pattern — arguably the most transformative shift in enterprise messaging — where a single producer broadcasts to multiple isolated subscribers via Azure Service Bus topics or Azure Event Grid. Real-world use cases include insurance aggregators, credit check pipelines, and bank account sign-up workflows. From there they move to the Priority Queue pattern, which ensures high-priority messages are processed before lower-priority ones even when consumers are under load. Finally, the Pipes and Filters pattern decomposes complex message processing into a chain of discrete, reusable transformation steps — reducing complexity and enabling independent scaling of each stage. The episode also connects these patterns back to earlier topics like Competing Consumers and Queue-Based Load Leveling, and flags related patterns including Choreography and Compensating Transactions.
Are you running dedicated compute for every tenant, microservice, or application instance — and paying for it? The Compute Resource Consolidation pattern shows you how to consolidate tasks onto shared infrastructure, such as a single AKS cluster with namespace isolation or an Azure SQL elastic pool, to reduce costs and management overhead. This episode explores the key trade-offs: blast radius containment, noisy neighbour contention, scalability profiles, and multi-tenancy strategies. Part of the "Architecting for the Cloud, One Pattern at a Time" series.
When modernising a legacy application, rewriting everything from scratch is rarely feasible. The Sidecar and Ambassador cloud design patterns offer a pragmatic alternative — attach a companion process to offload cross-cutting concerns like retry logic, circuit breaking, and protocol translation without modifying the application itself. Chris and Peter explore both patterns in depth, covering when to use each, how they relate to service meshes, and their role in Kubernetes-based architectures.