Modern Microservices Challenges
September 5, 2022
How we built an idempotent, zero-intervention email service that handles millions of requests per hour - state-machine processing, auto-retrying HTTP clients, in-memory backoff, and Kafka retry/DLQ patterns for resilience.
- microservices
- architecture
- kafka
- resiliency
- spring-boot
Dual write and data inconsistency
October 15, 2020
Inserting to the database succeeds but publishing the event fails — and now two systems disagree. A look at distributed transactions, logical transactions, and why the outbox pattern is the right way to avoid dual-write inconsistency.
- microservices
- architecture
- kafka
- data-consistency
- outbox-pattern
Buffering for a better performance
September 20, 2020
Sooner or later a database, web server, or third-party service becomes a bottleneck. Request aggregation through buffering can prevent or minimize the overload — and here's a tiny, simple-to-use Java library to do it.
- performance
- java
- buffering
- rate-limiting
- backend