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
  • 15 matching
Microservices 26 Dec 2025

Fan-Out on Write, One Round Trip at a Time

Trill's Timeline service stores each story body once and fans out only the identifier into every follower's sorted set - the right hybrid design, executed as a sequential foreach with one Redis round trip per follower and no batching anywhere.

Microservices 25 Dec 2025

One Format String, Two Meanings

The same .NET format specifier means thirty-two hex digits on a Guid and a grouped decimal on a long - and Trill's timeline writes its sorted-set members one way then reads them the other, so every non-empty timeline throws.

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 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 02 Oct 2025

The Push Channel Nobody Plugged In

DShop runs a whole SignalR service to push operation results to the browser in real time - JWT handshake, per-user groups, Redis backplane. No frontend connects to it, and both UIs sleep through eventual consistency instead.

Microservices 22 Sep 2025

CQRS Across a Service Boundary

Storage subscribes to almost every event in DShop, serves read-only queries, and owns nothing it cannot rebuild - the read side of a CQRS split that runs across a service boundary instead of inside one. Part 10 of Nine Services and a Message Bus.

.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 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 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 10 Jul 2025

JWTs and the Blacklist Problem

Convey's auth packages in two acts - a JWT layer that turns one config section into token issuing and validation, and the uncomfortable question every stateless system meets on logout day.

.NET 07 Jul 2025

Persistence as a Registration: Mongo and Redis

What you get when a chassis reduces MongoDB to one builder call and a named collection - a generic repository, paging, camelCase conventions, a seeding hook - and the transactions and indexes it deliberately leaves on your desk.

.NET 28 Jun 2025

Reading the Redis and Mongo Providers

Chronicle ships two persistence integrations, and reading them against the contract is a masterclass in provider sharp edges: a Redis key built from Type.GetHashCode() that changes on every restart, a Mongo delete-then-insert, and messages that may not survive the round trip.

Azure & DevOps 31 May 2025

The Redis Module: The Floor of a Good Module

The smallest template in the catalog - a hundred lines of Redis cache config - as a study in what even the simplest secure-PaaS wrapper must still carry, and the one pipeline typo that quietly broke environment isolation. Part 8 of the Terraform Module Catalog.

.NET 07 Apr 2025

Sticky Sessions, Wrong Cache

In-memory session behind three App Service instances with affinity disabled, two distributed caches configured at once, a 1000-second easy-testing timeout, and a Redis expiry that throws every December.