Siddharth RanjanBackend · Distributed Systems

Siddharth RanjanBackend engineer · India · open to roles

Most reads
should never
reach the
database.

Getting there is the work: a cache that absorbs the reads, stateless services behind a load balancer, and an event log that lets the slow parts happen later. Java, Spring Boot, Kafka, Redis, MySQL.

Language
Java · Python · SQL
Framework
Spring Boot · Spring Data JPA
Messaging
Apache Kafka
Cache
Redis
Store
MySQL
Cloud
AWS · Azure
AI
LangChain · FAISS · Gemini API

How a request moves

Solid = blocking · Dashed = async

One GET, seven hops, under four milliseconds. Watch where it stops. Then click redis to evict its key and watch the next request fall through to mysql.

  1. 01

    client

    browser · mobile · service call

    0.0ms
  2. 02

    cdn

    static served at the edge

    1.2ms
  3. 03

    load balancer

    health checks · least-conn

    2.0ms
  4. 04

    api gateway

    JWT · rate limit · routing

    2.6ms
  5. 05

    service ×3

    stateless · idempotent writes

    3.1ms
  6. 06

    redis

    most reads end right here

    3.5ms
  7. 07

    mysql

    source of truth · read replicas

    +12ms on miss
Live · one GET every few seconds
Hop 03 — why that hop existsSimulated pool · click an instance to fail it

The pool changes size
while the URL does not

Algorithm
least-connections
Target
65% cpu per instance
Bounds
min 3 · max 12
Cooldown
120s between actions
Health check
/healthz every 2s
Unhealthy
2 failed checks → eject
  • app-5healthy61%
  • app-6healthy58%
  • app-7healthy74%
  • app-8drainedejected
  • app-9bootingwarm-up

Scale-out — app-8 failed two checks and left the rotation; app-9 was added and takes no traffic until warm-up passes. The client saw neither event.

And what happens after the response

The caller never waits for this
  1. 05

    service

    commits state, then the event

  2. 06

    kafka

    partitioned by key · replayable

  3. 07 — independent consumers

    notifier

    email, push, webhooks

    projector

    builds the read model

    analytics

    warehouse sink

Note — consumers are idempotent because at-least-once delivery means redelivery is normal. A poison message goes to a dead-letter topic so one bad payload cannot stall a partition.

Who owns which hop

Database per service · no shared schema
  • load balancerpublic TLS → healthy instancesowns nothing — routing only
  • api gatewayauth, quota → internal routesowns rate-limit counters
  • service (×N)REST in → cache, DB, outboxowns its own schema
  • cacheread-through on every GETowns nothing durable — TTL only
  • event logoutbox → partitioned topicsowns the ordering guarantee
  • databaseprimary writes, replica readsowns the source of truth
Shell — try trace
sr-shell 1.0 — type help for commands
$ whoami
siddharth-ranjan · backend engineer · Java / Spring Boot
distributed systems · event-driven · Kafka, Redis, MySQL
$

Track record

  • activeTCSSystem Engineer C1 — Prime · Spring Boot, EC2, Redis caching, Kafka ingestJan 2026 →
  • resolvedNokiaR&D Intern, FN BBN CU-Hardening · test-data aggregation tooling, −30% reporting effortAug 24 – May 25
  • buildvigilIncident intelligence — alert firehose to correlated incidents, human-approved remediationSept 2026 →
  • shippedmulti-pdf-chatGenAI document QA over LangChain + FAISS, Google Generative AIFeb 2024
  • shippedblogging-projectSpring Boot REST backend — registration, posts, likes and comments over Spring Data JPA + MySQLJan – Feb 2024
  • publishedIEEEPerformance assessment of recommendation algorithms — SVD, SVD++, k-NN on MovieLens2024
  • certifiedcertificationsClaude Certified Developer – Foundations (Anthropic) · Microsoft Azure AZ-900 · Azure AI-901Anthropic · Microsoft
  • wonCODATHON1st place with a team of 5 in a 36-hour hackathon — Hope Haven, a marketplace connecting NGOs with donorsVIT Chennai
  • wonDATAQUEST2nd runner-up in an 8-hour machine learning hackathon — Data Science ClubVIT Chennai

Résumé

Latest · Sept 2026
GET /resume.pdf · 200 OK · 1 page
Open PDF ↗

Send a request

POST /v1/messages · async · reply by email
route what it's about
Opens your mail app with this filled in.