Skip to content
kc@kumarChandrachooda.com:~$ cd /blog/archive && read --section="top" 0%
Archive

Every article

Newest first, grouped by year. Search or filter by topic.

  • 556 articles
  • 348 matching
Microservices 20 Sep 2025

One Orchestrator Subscribes to Everything

Operations subscribes to every command and event in the estate by reflection and routes them through two open-generic handlers - a neat trick with one dead limb the wiring can never light. Part 8 of Nine Services and a Message Bus.

Microservices 19 Sep 2025

The Saga That Orchestrates a Checkout

Operations drives an order from created to approved across three services, and rolls it back when a step fails - a textbook process manager with compensation, read from the real Chronicle-backed source. Part 6 of Nine Services and a Message Bus.

Microservices 18 Sep 2025

Copy the Contract or Share It

DShop answers the shared-kernel question twice - eight services copy every event contract locally, one references a shared package - and both answers are in the same estate with their real costs on show. Part 4 of Nine Services and a Message Bus.

Microservices 18 Sep 2025

Two Ways to Get Another Service's Data

DShop moves data between services two opposite ways - one rebuilds a local replica from the event payload, the other treats the event as a doorbell and fetches over HTTP - and the estate runs both at once. Part 5 of Nine Services and a Message Bus.

Microservices 17 Sep 2025

OrderCreated in Three Shapes

The same event is declared three times across DShop, and one copy quietly drops a field - here is the contract drift in the real source and the canonical-model cure that would have caught it. Part 3 of Nine Services and a Message Bus.

Microservices 16 Sep 2025

Nine Services and a Message Bus

DShop is one e-commerce shop stamped out as nine microservices over RabbitMQ - this series reads the real source to see how the topology holds together and where it drifts. Part 1 of Nine Services and a Message Bus.

Microservices 16 Sep 2025

One Template, Nine Times

Nine DShop services share one skeleton stamped out by hand - and the places they quietly disagree teach more than the places they match. A drift catalogue read from the real source. Part 2 of Nine Services and a Message Bus.

.NET 15 Sep 2025

The Rough Draft of Convey

A retrospective on DShop.Common - the frozen shared-contracts tombstone, a release candidate pinned forever, and a concordance of what Convey kept, renamed, and fixed.

.NET 14 Sep 2025

BuildServiceProvider Nine Times

Each concern in DShop.Common builds a throwaway DI container just to read config - nine per service, atop three coexisting container frameworks and a vendored config parser.

.NET 13 Sep 2025

Every Error Is a 400 and Says Too Much

DShop.Common's error middleware maps every exception to HTTP 400, computes a safe message, then throws it away and serialises the raw exception text to the caller.

.NET 13 Sep 2025

Revoking the Irrevocable

DShop.Common makes a stateless JWT revocable with a Redis deny-list and a per-request round-trip - plus an iat claim in milliseconds and two validators that disagree.

.NET 12 Sep 2025

Writing to the Backing Field

DShop.Common stamps a server-generated Guid into an immutable command by reflecting into its compiler-generated backing field - immutability the type system only pretends to enforce.

.NET 11 Sep 2025

A Load Balancer With Amnesia

DShop.Common's Consul registry tracks which service instances it has used to spread load evenly - then registers as transient, discarding that memory on nearly every request.

.NET 11 Sep 2025

Three Load Balancers Behind One Config String

DShop.Common picks client-side discovery, a router, or a static address from one word in JSON - and self-registers each service into Consul with a heartbeat lease.

.NET 10 Sep 2025

The Fluent Handler That Explodes on Success

A reusable try-catch-finally wrapper in DShop.Common awaits a null-conditional delegate - so the success path throws a NullReferenceException the failure path avoids.

.NET 09 Sep 2025

Hand-Rolled MediatR in Thirty Lines

DShop.Common ships its own in-process command and query dispatch - marker interfaces, a handler triple, and one dynamic double-dispatch standing in for a library.

.NET 09 Sep 2025

What the Framework Doesn't Have

An audit of the messaging patterns DShop.Common leaves out - no outbox, no inbox, no consumed dead-letter - and how each absence became a Convey package.

.NET 08 Sep 2025

The Retry Path Nobody Took

A complete broker-requeue retry implementation sits in DShop.Common's subscriber, fully written and never called - and its comment explains exactly why.

.NET 07 Sep 2025

Rejected Events — a Two-Lane Error Taxonomy

DShop.Common decides a message's fate from the type of exception a handler throws - domain failures become events, infrastructure failures get retried.

.NET 07 Sep 2025

The Envelope That Scrambled Itself

DShop.Common's correlation context threads request identity through every message hop - and a long positional argument list quietly transposes half its fields.

.NET 06 Sep 2025

Command or Event, Enforced by Convention

In DShop.Common a command and an event are published by identical code - the difference between them is a marker interface and a promise nothing enforces.

.NET 05 Sep 2025

Queue Names Are the Whole Topology

One naming class in DShop.Common decides every exchange, routing key and queue in the estate - the message topology is a string-formatting problem.

.NET 05 Sep 2025

The Framework Before the Framework

DShop.Common is the shared library nine microservices were built on - and the rough draft of a framework its authors later shipped as Convey.

.NET 04 Sep 2025

The Ecosystem Around the Chassis

Convey did not appear from nowhere and it does not stand alone. DShop, Pacco, Ntrada, Chronicle, Pactify — the DevMentors constellation the toolkit grew out of and feeds into, which repo to study for what, and the close of both series.

.NET 03 Sep 2025

From Clone to Chassis: The Onboarding Path

There is no dotnet new template and no CLI — Convey's onboarding is docs, samples and source. Reading the repo-of-repos layout and its packing scripts, then walking the actual path: build your first service from an empty project, one config section at a time.