Sidecar container pattern

Sidecar pattern is a single-node pattern made up of two containers. It involves co-locating another container in a node/pod along with the main application container. The application container contains the core logic for the application. The role of the sidecar is to augment and improve the application container, often without the application container’s knowledge. In its simplest form, a sidecar container can be used to add functionality to a container that might otherwise be difficult to add. In addition to being co-located on the same machine, the application container and sidecar container share several resources, including parts of the filesystem, hostname and network, and many other namespaces. The sidecar can be plugged and unplugged from the main application, since it is isolated and cannot impact the application in case it starts misbehaving. ...

July 24, 2019 · (updated December 21, 2024) · 3 min · Pradeep Loganathan
Transactional Outbox Pattern

Transactional Outbox Pattern

Transactional Outbox is a pattern to reliably publish messages without the use of distributed transactions. It uses an Outbox and a message dispatcher to reliably persist state and publish messages....

July 16, 2019 · (updated December 21, 2024) · 10 min · Pradeep Loganathan
Idempotent Consumer Pattern

Idempotent Consumer Pattern

The Idempotent Consumer pattern provides the necessary safeguards to allows logic wrapped by it to be executed only once. It implements an unique identifier for each message and an idempotent repository....

July 6, 2019 · (updated December 21, 2024) · 5 min · Pradeep Loganathan
Circuit Breaker pattern

Circuit Breaker Pattern

The Circuit Breaker pattern is a cornerstone of resilient systems, preventing a single component’s failure from causing a catastrophic system-wide outage. This deep dive explores its mechanics, the strategic benefits beyond simple failure handling, the nuances of configuration, and its crucial role in the modern microservices ecosystem....

September 21, 2018 · (updated June 25, 2025) · 7 min · Pradeep Loganathan

Retry Pattern

The retry pattern is an extremely important pattern to make applications and services more resilient to transient failures. A transient failure is a common type of failure in a cloud-based distributed architecture. This is often due to the nature of the network itself (loss of connectivity, timeout on requests, and so on). Transient faults occur when services are hosted separately and communicate over the wire, most likely over a HTTP protocol. These faults are expected to be short-lived. Repeating such a request that has previously failed could succeed on a subsequent attempt. ...

August 10, 2018 · (updated August 31, 2022) · 3 min · Pradeep Loganathan
A cross-section of a ship's hull showing partitioned bulkheads.

The Bulkhead Pattern: Isolating Failures in Distributed Systems

The Bulkhead pattern is a critical resilience strategy that prevents failures in one part of a system from cascading into a catastrophic, system-wide outage. By partitioning resources, it ensures that one misbehaving dependency cannot exhaust the resources needed to serve others, thereby protecting the overall health of your application....

July 8, 2018 · (updated June 25, 2025) · 6 min · Pradeep Loganathan