Skip to content
kc@kumarChandrachooda.com:~$ cd /blog/category/microservices && read --section="01 microservices" 0%
Topic

Microservices

203 articles filed under this topic.

Series in Microservices
Series · 8 parts

Contract Testing with Pactify

Unit tests mock what you assume, end-to-end tests tell you too late - consumer-driven contract testing closes the gap, and a small open-source .NET library called Pactify is the clearest way I know to learn how it works. Part 1 of a series.

Series · 8 parts

Convey — The Missing Chapters

The 22-part Convey series read the packages; it never once walked the sample system that ships with them. Opening the missing chapters with the trip an order takes through Orders, Pricing and Deliveries — and what the samples quietly teach that no package README does.

Series · 16 parts

GroupFlights — Strategy Before Code

Most repositories ship code and a README - this one ships four ADRs with a named approver, a context map, a domain message flow and a methodology poster. Part 1 of a series that reads the strategic half of DevMentors' GroupFlights.

Series · 22 parts

Microservices with Convey

Every team's fifth microservice ships with the same four hundred lines of bootstrap code as the first four. Opening a deep-dive series on Convey, the open-source .NET toolkit that turned that boilerplate into thirty composable packages.

Series · 15 parts

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.

Series · 12 parts

One Module Leaves the Process

Every modular monolith promises you can extract a module later. Inflow has a branch where someone actually did it - one module lifted into its own process behind a gateway and a real broker. This series reads that branch line by line.

Series · 16 parts

One Shop, Every Shape

DevMentors built the same e-commerce shop twice - once as a monolith, once as nine services - with two gateways and two frontends. This series reads the whole estate as one artefact.

Series · 11 parts

Real-Time Feeds with FeedR

A guided tour of FeedR, DevMentors' open-source .NET microservices sample for real-time data feeds - six services, Redis pub/sub, Apache Pulsar and a gRPC stream, and the two-tier eventing model that makes it worth reading. Part 1 of a source-level deep dive.

Series · 9 parts

Sagas with Chronicle

Split one database into five services and the transaction you deleted does not disappear - it goes feral. On sagas, compensation, process managers, and Chronicle, the small open-source .NET library this series reads line by line.

Series · 13 parts

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.

Series · 15 parts

The Order That Choreographs Itself

Nobody in Pacco approves an order - a vehicle reservation does. A tour of DevMentors' parcel-delivery estate, the domain it models, and the fifteen-part series it earns.

Series · 13 parts

Trill Two Ways

DevMentors shipped Trill as nine microservice repos, then rebuilt the identical product as a modular monolith three months later - giving us a controlled experiment in architecture that almost never exists in public.

Series · 15 parts

Trill — Reading the Services

Trill's Stories service is four projects with a dependency-free domain at the bottom. Its Users service is two projects with everything in one assembly - same author, same week, same estate, opposite answers to what a layer is.

Series · 15 parts

Trill — The Microservices Spine

The DevMentors Trill estate is a nine-service microservices sample spread over eleven sibling repositories with no README, no clone script and no bootstrap tooling - and the only artefact that names the whole system is a Visual Studio solution file.

Series · 15 parts

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.

Everything in Microservices View
.NET 31 Aug 2025

One appsettings.json, Read Top to Bottom

Convey's real manifest is not Program.cs — it is the config file. Reading the Orders sample's appsettings.json as a single artifact: the section-per-package convention, the fleet of enabled:false switches, and what the defaults quietly tell you about production.

.NET 31 Aug 2025

The Object Store in the Corner: Convey and OpenStack Swift

Convey.Persistence.OpenStack.OCS is the package the whole first series skipped — a hand-rolled Swift object-storage client with Keystone auth, an operation-result pattern, a server-side COPY verb, and a re-authentication habit worth learning from.

.NET 30 Aug 2025

Three Services, One Order: The Sample System the Series Skipped

The 22-part Convey series read the packages; it never once walked the sample system that ships with them. Opening the missing chapters with the trip an order takes through Orders, Pricing and Deliveries — and what the samples quietly teach that no package README does.

.NET 26 Jul 2025

Serving Your Contracts Over HTTP

Pactify.AspNetCore in one sitting: an attribute, an assembly scan, and a /pacts/{provider} endpoint that serves your contract classes as live JSON - plus what a runtime contracts endpoint is really for.

.NET 26 Jul 2025

When Contract Testing Pays for Itself

The series retrospective - what a thirty-file library taught me that a full-featured one couldn't, Pactify's honest limit list versus PactNet, the broker maturity ladder, and the org-shaped question hiding under the tooling.

.NET 25 Jul 2025

How Pactify Decides You Broke the Contract

A line-by-line read of Pactify's matching engine - top-level-only body comparison, header names that ignore your casing option, nested objects that can never match, and two format-string bugs that crash the error path.

.NET 24 Jul 2025

Publishing Pacts: From Shared Folder to Broker

How a pact travels from the consumer's pipeline to the provider's - Pactify's file and HTTP publishers, Pact Broker URL anatomy, and the unchecked response status that makes a failed publish silently pass your build.

.NET 24 Jul 2025

Replaying the Contract Against a Real API

The provider side of Pactify - how CreateFor<Startup> hosts your whole API in memory with TestServer, why interactions verify concurrently, the SmartFormat trick behind endpoint templating, and the discovery that Given(...) never runs.

.NET 23 Jul 2025

What's Inside a Pact File

An annotated tour of the JSON document Pactify produces - the serializer settings that shape it, the snake_case field inherited from Pact v1, and the unusual decision to ship the consumer's matching options inside the contract itself.

.NET 22 Jul 2025

The Consumer Writes the Contract

A walk through Pactify's PactMaker fluent API - the two-interface builder trick that hides Build() from you, why the consumer test always passes, and the uninitialized-object surprise inside WithBody<T>().

.NET 21 Jul 2025

What FeedR Gets Right, and What Production Would Add

The retrospective: after ten parts inside DevMentors' real-time feeds sample, the honest scorecard - five decisions worth stealing for real systems, the sharp edges catalogued in one place, and the concrete backlog that separates this teaching codebase from a production deployment. Part 11 closes the FeedR deep dive.

.NET 21 Jul 2025

Your Integration Tests Are Lying to You

Unit tests mock what you assume, end-to-end tests tell you too late - consumer-driven contract testing closes the gap, and a small open-source .NET library called Pactify is the clearest way I know to learn how it works. Part 1 of a series.

.NET 20 Jul 2025

Six Services on a Laptop

FeedR ships three ways to run its six services - pm2, Project Tye, and a deliberately split pair of docker compose files - plus per-service Dockerfiles and an environment-keyed configuration layer that lets the same build run on localhost and inside a compose network. Part 10 of the FeedR deep dive.

.NET 19 Jul 2025

One Correlation ID Across Three Transports

FeedR threads a correlation ID from a YARP transform through HTTP middleware and into Pulsar message metadata - and quietly loses it at the Redis hop in the middle. Tracing exactly where the chain holds and where it breaks is the best observability lesson in the sample. Part 8 of the FeedR deep dive.

.NET 19 Jul 2025

Testing a Message You Can't Await

How do you assert that an endpoint published an event when publishing is a side effect with no return channel? FeedR's end-to-end test answers with WebApplicationFactory, a real Redis round-trip, and a TaskCompletionSource - plus the timeout and determinism traps the sample leaves open. Part 9 of the FeedR deep dive.

.NET 18 Jul 2025

Every Tenth Tick Becomes an Order

Where FeedR's data graduates from tick to fact: the aggregator's pricing handler, a second messaging seam with envelopes and metadata, Apache Pulsar as the durable tier, and the notifier's acknowledge-as-you-go consume loop. Part 7 of the FeedR deep dive.

.NET 17 Jul 2025

Streaming Prices over gRPC

FeedR pushes live prices to clients through a gRPC server stream: a four-message proto contract, fixed-point decimals, dual Kestrel endpoints, and an event-to-stream bridge that busy-spins - plus the channel-based rewrite it's asking for. Part 5 of the FeedR deep dive.

.NET 17 Jul 2025

Turning a Weather API into a Stream

FeedR's weather feed is the pattern for every external integration: poll a REST API inside an IAsyncEnumerable, guard it with a typed HttpClient and Polly retries, translate its JSON at the boundary, and republish it as a push. Plus the retry clause I can't defend and a hard-coded API key with a lesson in it. Part 6 of the FeedR deep dive.

.NET 16 Jul 2025

The Streaming Seam: Redis Pub/Sub Behind an Interface

FeedR moves every tick between services through a two-method streaming abstraction with a no-op default and a Redis implementation - which, despite the namespace, is pub/sub rather than streams. What that seam buys, how DI last-wins overrides it, and what you lose when nobody is listening. Part 4 of the FeedR deep dive.

.NET 15 Jul 2025

A Channel Between the Endpoint and the Loop

How FeedR's quotes feed decouples a microsecond HTTP endpoint from an hours-long price generator: System.Threading.Channels as a command queue, marker records as the protocol, and an Interlocked flag for idempotent start/stop. Part 3 of the FeedR deep dive.

.NET 15 Jul 2025

One Front Door for Five Services

FeedR's API gateway is a YARP reverse proxy whose entire routing table lives in appsettings.json - prefix-stripping routes, per-environment cluster overrides, and a one-line transform that starts every distributed trace. Part 2 of the FeedR deep dive.

.NET 14 Jul 2025

Push, Don't Poll: FeedR at Ten Thousand Feet

A guided tour of FeedR, DevMentors' open-source .NET microservices sample for real-time data feeds - six services, Redis pub/sub, Apache Pulsar and a gRPC stream, and the two-tier eventing model that makes it worth reading. Part 1 of a source-level deep dive.

.NET 13 Jul 2025

Tracing a Message Through the Chassis

How Convey stitched one Jaeger trace across HTTP, a command handler and a RabbitMQ hop years before OpenTelemetry - and the six-line catch block in its tracing plugin that can silently eat your failures.

.NET 13 Jul 2025

What Convey Got Right — and What Modern .NET Ate

Closing the series with an honest audit of the chassis - which of Convey's ideas still earn their keep in 2026, which ones the platform absorbed, and what I would build differently today.

.NET 12 Jul 2025

Metrics Two Ways: AppMetrics and Prometheus

Convey ships two metrics packages that answer the same question from different eras - a push-flavored App.Metrics stack and a lean prometheus-net scrape endpoint - and the choice between them is a history lesson.