<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Architecting for the Cloud, One Pattern at a Time on Chris Reddington</title><link>https://chrisreddington.com/series/architecting-for-the-cloud-one-pattern-at-a-time/</link><description>Recent content in Architecting for the Cloud, One Pattern at a Time on Chris Reddington</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Fri, 05 Mar 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://chrisreddington.com/series/architecting-for-the-cloud-one-pattern-at-a-time/index.xml" rel="self" type="application/rss+xml"/><item><title>29 - The Sidecar and Ambassador Patterns</title><link>https://chrisreddington.com/video/sidecar-and-ambassador/</link><pubDate>Fri, 05 Mar 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/sidecar-and-ambassador/</guid><description>&lt;p&gt;Modernising legacy applications doesn&amp;rsquo;t have to mean rewriting them from scratch. Two cloud design patterns — the Sidecar and the Ambassador — provide elegant ways to extend legacy services with modern capabilities, incrementally and safely. In this episode of &lt;em&gt;Architecting for the Cloud, one pattern at a time&lt;/em&gt;, Chris and Peter break down both patterns.&lt;/p&gt;&#10;&lt;h2 id="the-ambassador-pattern"&gt;The Ambassador Pattern&lt;/h2&gt;&#10;&lt;p&gt;The Ambassador pattern places a &lt;strong&gt;proxy service&lt;/strong&gt; between a client and an upstream service or external dependency. This proxy handles cross-cutting concerns that the underlying application doesn&amp;rsquo;t natively support:&lt;/p&gt;</description></item><item><title>27 - The Compute Resource Consolidation Pattern (Optimise for Cost!)</title><link>https://chrisreddington.com/video/compute-resource-consolidation/</link><pubDate>Fri, 19 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/compute-resource-consolidation/</guid><description>&lt;p&gt;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 &amp;ldquo;Architecting for the Cloud, One Pattern at a Time&amp;rdquo; series.&lt;/p&gt;</description></item><item><title>26 - The Pub Sub, Priority Queue and Pipes and Filter Patterns</title><link>https://chrisreddington.com/video/priority-queues-pipes-filters/</link><pubDate>Fri, 12 Feb 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/priority-queues-pipes-filters/</guid><description>&lt;p&gt;Chris and Willy cover three fundamental messaging patterns in this episode of &lt;em&gt;Architecting for the Cloud, One Pattern at a Time&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Publish-Subscribe (Pub/Sub)&lt;/strong&gt; transitions systems from point-to-point messaging (one sender, one receiver) to a multicast model where a single event triggers multiple independent subscribers simultaneously. Azure Service Bus topics and Azure Event Grid are the primary Azure implementations. Canonical use cases include:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Insurance aggregators fanning out quote requests to 15–50 backend services in parallel&lt;/li&gt;&#10;&lt;li&gt;Credit check pipelines triggering multiple reference agencies from a single event&lt;/li&gt;&#10;&lt;li&gt;Account sign-up flows dispatching to billing, provisioning, and notification services concurrently&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Key benefit: subscribers are fully decoupled — adding a new consumer requires only a new subscription, with no changes to the producer.&lt;/p&gt;</description></item><item><title>23 - Gatekeeper and Valet Key Patterns - Secure your APIs and Resources</title><link>https://chrisreddington.com/video/gatekeeper-and-valet-key/</link><pubDate>Fri, 22 Jan 2021 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/gatekeeper-and-valet-key/</guid><description>&lt;p&gt;Continuing the &amp;lsquo;Architecting for the Cloud, one pattern at a time&amp;rsquo; series, Chris and Peter Piper explore two closely related cloud design patterns that address a core challenge in distributed systems: how do you give clients access to exactly what they need — and nothing more?&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The Gatekeeper Pattern&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;The Gatekeeper acts as a dedicated intermediary between untrusted clients (the public internet) and trusted backend services. Rather than exposing internal services directly, all traffic flows through the Gatekeeper, which can enforce:&lt;/p&gt;</description></item><item><title>21 - The Queue Based Load Levelling and Competing Consumers Pattern</title><link>https://chrisreddington.com/video/queue-based-load-levelling-and-competing-consumers/</link><pubDate>Fri, 01 Jan 2021 09:30:00 +0000</pubDate><guid>https://chrisreddington.com/video/queue-based-load-levelling-and-competing-consumers/</guid><description>&lt;p&gt;Do you have an application with specific scalability and continuity-of-service requirements? What happens when your service is hit by heavy load — could performance or reliability issues cascade through your solution?&lt;/p&gt;&#10;&lt;p&gt;In this &lt;em&gt;Architecting for the Cloud, One Pattern at a Time&lt;/em&gt; episode, Chris and Will Eastbury cover three closely related patterns that are almost always used together in high-throughput systems:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Queue-Based Load Levelling&lt;/strong&gt; — use a message queue as a shock absorber to smooth dramatic traffic spikes, so a downstream service processes at a consistent rate regardless of inbound demand&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Competing Consumers&lt;/strong&gt; — scale out message processing by running multiple consumers in parallel, pulling from the same queue to clear backlogs faster&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Asynchronous Request-Reply&lt;/strong&gt; — retrofit async processing into existing synchronous architectures using a status-polling pattern (HTTP 202 / redirect), without tearing apart the existing application&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Along the way, Willy and Chris discuss real-world analogies (drive-throughs, ticketing ballots, smart motorways), Azure Service Bus configuration considerations such as maximum queue depth, and how Azure Functions bindings can scale consuming instances dynamically based on queue depth. They also address distributed tracing with Application Insights and the critical reminder that these patterns introduce real complexity — and should only be adopted when requirements genuinely justify it.&lt;/p&gt;</description></item><item><title>20 - The Anti-corruption layer, Gateway Aggregation and Gateway Routing patterns</title><link>https://chrisreddington.com/video/anti-corruption-layer-and-gateway-patterns/</link><pubDate>Wed, 30 Dec 2020 00:01:00 +0000</pubDate><guid>https://chrisreddington.com/video/anti-corruption-layer-and-gateway-patterns/</guid><description>&lt;p&gt;In this episode of the &lt;em&gt;Architecting for the Cloud, One Pattern at a Time&lt;/em&gt; series, Peter Piper returns to walk through three powerful cloud design patterns that build on the Façade concept explored in earlier episodes.&lt;/p&gt;&#10;&lt;h2 id="whats-covered"&gt;What&amp;rsquo;s covered&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Context reset: The Strangler pattern&lt;/strong&gt; — a brief recap to set the scene for migration from legacy to modern systems&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Anti-Corruption Layer (ACL)&lt;/strong&gt; — how to prevent a legacy system&amp;rsquo;s data model from &amp;ldquo;corrupting&amp;rdquo; a new microservices domain; translating between old SOAP/REST contracts and modern REST APIs; how this enables high cohesion and low coupling through domain-driven design&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Gateway Aggregation&lt;/strong&gt; — reducing client chattiness by aggregating multiple backend service calls into a single response at the gateway layer; chatty I/O anti-patterns and their performance impact&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Gateway Routing&lt;/strong&gt; — layer-7 routing by IP, port, header, or URL path; decoupling consumers from versioned backend services; Azure load balancing options (Application Gateway, Azure Front Door, Traffic Manager, Azure Load Balancer) and when to use each&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Azure service mapping&lt;/strong&gt; — how Azure API Management, Application Gateway, and Front Door map to these patterns in practice&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cross-cutting concerns&lt;/strong&gt; — resilience (single points of failure, HA/DR), observability (monitoring and logging), Infrastructure as Code for gateway configuration, and integration/regression/performance testing for each pattern&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;When &lt;em&gt;not&lt;/em&gt; to use these patterns&lt;/strong&gt; — anti-patterns for scenarios where a WAF/DDoS layer is a better fit than a full gateway&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;All three patterns share a common thread: a facade layer that decouples front-end consumers from back-end complexity, enabling independent evolution, safe versioning, and testability.&lt;/p&gt;</description></item><item><title>11 - The Geode Pattern - What is it and how can it be useful for my app?</title><link>https://chrisreddington.com/video/geode-pattern/</link><pubDate>Mon, 21 Dec 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/geode-pattern/</guid><description>&lt;p&gt;You may have heard of patterns like the Retry pattern, Circuit Breaker, or CQRS — but have you heard of the Geode pattern?&lt;/p&gt;&#10;&lt;p&gt;In this &lt;em&gt;Architecting for the Cloud, One Pattern at a Time&lt;/em&gt; 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.&lt;/p&gt;&#10;&lt;p&gt;Key concepts covered:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;What is the Geode pattern?&lt;/strong&gt; Geodes are identical, globally distributed compute nodes where all nodes actively serve any request. Unlike Deployment Stamps (which constrain a tenant to a specific stamp), all Geodes contain the same data, enabling any node to serve any user&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Geodes vs Deployment Stamps&lt;/strong&gt;: Deployment Stamps are tenant-scoped and support multi-tenancy models; Geodes prioritize global consistency and maximum compute utilization. The two patterns can be combined&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Performance and availability&lt;/strong&gt;: The primary benefit is low latency for globally distributed users, with high availability as a natural side effect. Azure Front Door acts as the intelligent global load balancer routing requests to the nearest healthy Geode&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Data sovereignty considerations&lt;/strong&gt;: Because data is replicated to all Geodes, organizations with strict regional data residency requirements need to plan carefully — potentially combining Geodes with Deployment Stamps for tenant-bounded slices&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Active-active vs active-passive&lt;/strong&gt;: Geodes are designed for scenarios where active-passive is too expensive or wasteful; all nodes are live and independently scalable&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Hands-on demo&lt;/strong&gt;: A globally distributed real-time voting application using Azure Functions (event bindings), Cosmos DB (change feed), and SignalR — demonstrating the event-sourcing and messaging aspects of the pattern in practice&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Intelligent edge evolution&lt;/strong&gt;: How this pattern naturally extends to IoT edge and 5G scenarios, with millions of tiny Geodes in roadside cabinets all maintaining configuration from a central service&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This episode was originally recorded on 9th October 2020, but had some technical issues and was re-recorded on 21st December 2020.&lt;/p&gt;</description></item><item><title>17 - The Throttling, Retry and Circuit Breaker Patterns</title><link>https://chrisreddington.com/video/throttling-and-retry-pattern/</link><pubDate>Fri, 04 Dec 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/throttling-and-retry-pattern/</guid><description>&lt;p&gt;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 that every developer building on Azure should understand. Part of the &amp;ldquo;Architecting for the Cloud, One Pattern at a Time&amp;rdquo; series.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The Throttling Pattern&lt;/strong&gt;&#10;Protect your services and downstream dependencies from high or unexpected load. Rather than a simple binary on/off gate, throttling can degrade gracefully — disabling non-critical features under load, shaping traffic, or signalling clients via HTTP 429 with a &lt;code&gt;Retry-After&lt;/code&gt; header. Azure services like Cosmos DB and Service Bus use this approach natively.&lt;/p&gt;</description></item><item><title>16 - The Backends for Frontends and Strangler Pattern with Peter Piper</title><link>https://chrisreddington.com/video/backends-for-frontends-and-strangler/</link><pubDate>Sun, 22 Nov 2020 00:00:00 +0000</pubDate><guid>https://chrisreddington.com/video/backends-for-frontends-and-strangler/</guid><description>&lt;p&gt;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 &amp;ldquo;Architecting for the Cloud, One Pattern at a Time&amp;rdquo; series.&lt;/p&gt;</description></item></channel></rss>