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
  • 203 matching
.NET 02 Nov 2025

The Saga That Rides a Header

OrderMaker drives a whole order through a Chronicle saga and reports its progress in a single RabbitMQ header - stamped on every publish, forwarded by seven copied MessageBrokers, read back by Operations, and backed by a saga store that forgets everything on restart.

.NET 01 Nov 2025

Two Ways to Tell a Service Something Changed

Deliveries maps domain events into integration events that carry facts while Vehicles publishes bare ids straight from its handlers - two event philosophies in one estate, and a vehicle-to-resource mirror that syncs deletes but never creates.

.NET 31 Oct 2025

A Shadow Registry of Every Message

Operations subscribes to eighty estate messages from one hand-maintained JSON file - a shadow copy of every contract in the system that nothing validates, with ghost entries nobody publishes and real rejections it never lists.

.NET 31 Oct 2025

Pacts Through a Folder Six Levels Up

Orders and Parcels keep the estate's only cross-service contract honest with Pactify - a pact written to a relative path six directories above the repository, verified against a seeded Huge Weapon, and checked for shape only. Consumer-driven contracts with no broker, read from source.

.NET 30 Oct 2025

The Test Pyramid CI Never Runs

Nine Pacco repositories run dotnet test against zero test projects and stay vacuously green, while the one repo with a real unit-integration-e2e-performance pyramid is the only one whose Travis config omits the test step.

.NET 29 Oct 2025

A Service in Thirty Lines

The fair part of the ledger - how UseDispatcherEndpoints, self-identifying commands, afterDispatch hooks and snake_case conventions let every Pacco service put its whole HTTP surface in one readable file.

.NET 29 Oct 2025

One Index Across Ten Services

Pacco models aggregates-per-document honestly across ten Mongo databases, and then creates exactly one index in the whole estate - fire-and-forget, in a scope that has already been disposed - while natural-key scans sit on the message hot path.

.NET 28 Oct 2025

The Same File in Seven Repos

MessageBroker.cs exists in seven Pacco repositories and hashes identically once you substitute the service name - this part inventories the copied glue, finds the double registrations hiding in seventeen-call chains, and weighs copy-paste against a shared kernel.

Microservices 27 Oct 2025

Cartography of a Successor

The series retrospective - what fourteen parts of reading Pacco as a system of systems actually taught, the absences the estate confesses when you list them together, how the successor evolved past DShop and where it stopped, and what the MIT licence makes of all of it.

.NET 27 Oct 2025

The Convey Consumer Tax

Convey sells a microservice in thirty lines, and Pacco builds ten of them - this series reads the whole estate to price what the framework compresses and what every consumer pays for by hand. Part 1 of The Convey Consumer Tax.

Microservices 26 Oct 2025

The Message Map and the Wrong Exchange

The estate's full who-publishes-what matrix, built from the source - and the one broken cell in it. Orders' copied ParcelDeleted event declares the deliveries exchange while Parcels publishes on parcels, so Orders never learns a parcel was deleted, and neither the Pact tests nor the hand-maintained registry can catch it.

Microservices 25 Oct 2025

Observability With Amnesia

Pacco traces every request, scrapes every service every five seconds and ships every log line to Seq - then forgets all of it on docker-compose down, because the telemetry stores are the containers whose volume blocks are commented out. The wiring is exemplary; the memory is the finding.

Microservices 25 Oct 2025

The Grammar of the Estate

Pacco's naming system is consistent enough to parse - exchanges are bounded contexts, queue names spell their own bindings, commands and events conjugate in snake_case, and every command has a _rejected twin. Reading the estate as a language, including its irregular verbs and the fact that no grammar-checker exists.

Microservices 24 Oct 2025

The Repo That Runs the Other Twelve

Pacco's umbrella repository contains no code, yet it decides everything about how the estate actually runs - seven compose files in deliberate layers, two PM2 manifests that quietly forget the saga service, a 460-line docker run-book, and a .rest file that is the best onboarding document in the system.

Microservices 23 Oct 2025

Thirteen Repos and a Floating Version

Pacco is thirteen sibling repositories held together by a solution file of relative paths, clone scripts with a dual-branch habit, and 284 package references that all say 0.4.* - coherence by wildcard, with a name-squatted saga library and a README that forgot a repo along the way.

Microservices 22 Oct 2025

Identity in Fifteen Files

Pacco's Identity service fits its whole auth machinery - JWT issuance, a refresh-token aggregate, Redis deny-list revocation - in about fifteen files, and most of them are right. The three that aren't teach more - a mapper bug that leaves 202 callers polling forever, a dead password check, and a refresh token that never rotates.

Microservices 22 Oct 2025

Security Theatre and Security Reality

Pacco names every control - JWT validation, a Vault, a log scrub-list, admin-only routes - and then a sign-up body chooses its own role, the signing key lives in every repo, Vault is off in Docker and anonymous callers pass every ownership check. A governance read of which shortcuts survive copy-paste.

Microservices 21 Oct 2025

The Correlation Spine

One JSON blob born at Pacco's gateway rides the Correlation-Context HTTP header into services and the message_context AMQP header across the bus, surfacing in SignalR pushes - carried by a class copy-pasted into eleven repos and a broker that forwards exactly one header.

Microservices 20 Oct 2025

The 202 That Names the Future

Pacco's async gateway answers a POST with two names - the ID a resource will have and the operation that tracks whether it ever gets it. Following both through the Redis state machine, the saga header override and the per-user SignalR push, warts and all - a five-minute memory, a 404 with three meanings, and a status API anyone can read.

Microservices 20 Oct 2025

Two Push Channels, Two Security Models

Pacco's Operations service narrates the estate twice - once over SignalR with a JWT handshake and per-user groups, once over a gRPC stream with no auth, no filtering, a per-call event-handler leak and a blocking Take. Same data, same service, two security models.

Microservices 19 Oct 2025

A Gateway in YAML and Its Twin in Code

Pacco ships a second API gateway built on Ocelot that hand-rolls everything the Ntrada YAML declares - auth bypass, async bus routes, edge-minted IDs, correlation headers - plus the estate's only circuit breakers. It is instructive, revealing, and deployed by absolutely nothing.

Microservices 18 Oct 2025

One YAML Flag Turns REST Into a Message

Pacco's Ntrada gateway is ninety lines of C# and five hundred of YAML, and swapping one route key - use downstream for use rabbitmq - turns the same HTTP surface from a proxy into a bus publisher answering 202. The two compose files disagree about which one you get.

Microservices 18 Oct 2025

Subscribing to Everything Without Referencing Anything

Pacco's Operations service listens to all eighty messages in the estate while owning zero contract classes - it reads a JSON registry and forges the CLR types at runtime with Reflection.Emit. The estate's answer to the shared-contracts problem, and the drift it cannot see.

Microservices 17 Oct 2025

Two Gateways and a Nervous System

Thirteen repositories, one umbrella that runs twelve of them, two interchangeable API gateways and a service that watches everything - the Pacco estate read as a system of systems, and the fifteen-part series it earns.

Microservices 16 Oct 2025

One Request, Four Services

AssignVehicleToOrder is the one command in Pacco that cannot finish alone - Orders calls Vehicles, then Pricing, and Pricing calls Customers, a synchronous enrichment chain on the write path of a messaging estate. At the end of it sits a deliberately bus-less calculator with a loyalty ladder, an unassigned Id and a discount logged in dollars.