Posts
-
BPE Tokenizer Simulator
Train a byte-pair encoding tokenizer one merge at a time, then use the learned vocabulary to encode and decode text. The simulator runs …
-
Making spring boot integration tests fast
A Spring Boot service with Kafka and MongoDB integration tests (Testcontainers) took 3m14s to run. Removing @DirtiesContext had been …
-
A Rolling Update, an Autoscaler, and a Missing Environment Variable: Anatomy of a Production Outage
Rolling updates are supposed to be the safe way to ship. Kubernetes brings up new pods, waits for them to become healthy, and only then …
-
Why 2.5 MB Mongo Document Became a 5.3 MB Kafka Message in Debezium
Here is what we were running when we hit this: Debezium 2.7.4.Final Debezium MongoDB connector, with the MongoEventRouter outbox SMT …
-
The AWS S3 client fix that caused a new bug
I recently chased down a slow memory leak in a Java service. The fix was simple and it worked. But it also uncovered a second problem …
-
Why we replaced Kafka transactions with an adapter pattern
A few weeks into running the new platform under production-like load, reconciliation started getting stuck. The audit service would …
-
Solving the Dual Write Problem: Transactional Outbox Pattern with Debezium and MongoDB
We run a platform where multiple services write to MongoDB and publish events to Kafka. Around 20 million messages flow through it …
-
How a misconfigured Kafka cleanup policy caused silent audit data loss
During a performance test, we noticed that audit events for some messages were silently missing from MongoDB. No errors in the consumer …
-
MongoDB Replace vs Update ($set): What Shows Up in the Oplog Might Surprise You
If you’ve ever tailed MongoDB’s oplog or worked with Change Streams, you’ve probably run into a subtle but important …