Backend Systems
Backend writing, projects, and research around APIs, transactions, web servers, caching, rate limiting, and production service design.
Writing
80/20 Of The Week: Single-threaded vs Multi-threaded Backends
How thread-per-request backends differ from event-loop backends, and where each approach gets tricky.
80/20 Of The Week: Web Servers (Apache, Nginx, Tomcat, ...)
What web servers actually do before a backend framework handles the request.
80/20 Of The Week: Spring Transactions (JPA, JTA, ...)
How Spring transaction boundaries work and where JPA, local transactions, and JTA differ.
80/20 Of The Week: Locking (Optimistic, Pessimistic, ...)
Why concurrent updates get tricky and how optimistic and pessimistic locking help.
80/20 Of The Week: Caching (Part 2)
How cache-aside, TTLs, invalidation, and stampede protection show up in real systems.
80/20 Of The Week: Caching (Part 1)
Caching as a speed tool, resource saver, and protection mechanism for backend systems.
80/20 Of The Week: Rate Limiting and Backpressure
How rate limiting and backpressure protect systems from overload.
80/20 Of The Week: The Outbox Pattern
How the outbox pattern keeps database updates and event publishing reliable.
Projects
MSISDN Telecom Inventory Service
Spring Boot service for telecom number lifecycle management with Liquibase migrations, optimistic locking, audit history, and safe concurrent reservation.
Product Search with Transactional Outbox
Catalog search architecture where PostgreSQL stays the source of truth and Elasticsearch is updated asynchronously through a transactional outbox.
Subscriber Profile Service
Go service using PostgreSQL as source of truth and a Redis cache-aside ring with application-managed consistent hashing across standalone shards.
Java Rate Limiter
Thread-safe Java 25 rate limiter library with token bucket and sliding window implementations, retry hints, metrics, tests, and comparison demos.
Transactional Outbox Pattern
Production-style Spring Boot implementation of the outbox pattern with idempotency, Kafka dispatch, retries, dead-letter handling, metrics, and Testcontainers.