Skip to content
AKM
All projects
Distributed systemsLive on AWS

PulseOps

Multi-tenant monitoring & incident management platform

In simple words

Watches servers around the clock, raises one clear alert when something breaks, and closes it once it's fixed.

faster window queries
240×
faster window queries
served in failover test
30/30
served in failover test
automated tests
37
automated tests

Overview

A multi-tenant monitoring platform in Spring Boot. Agents stream host metrics; server-side alert rules evaluate them over sliding windows; incidents open, deduplicate and auto-resolve, with Gemini root-cause suggestions kept off the critical path.

How it works

PulseOps architecture diagram

Key engineering decisions

1

Race-free incident deduplication

Two app instances can evaluate the same rule at the same moment. A PostgreSQL partial unique index on active incidents per service and rule makes a duplicate physically impossible, instead of relying on application-level locks.

2

Kafka for ingestion

Metrics are keyed by service so each service's events stay in order within a partition. Consumer groups scale horizontally, a dead-letter topic isolates poison messages, and consumers are idempotent so redelivery is safe.

3

Optimistic locking

Incident updates carry a version, so concurrent writers can't silently overwrite each other's changes (no lost updates).

4

Stateless replicas

Two stateless API replicas sit behind nginx. In a failover test with one replica stopped, 30 of 30 requests were still served.

5

AI off the critical path

Gemini root-cause suggestions are generated alongside incidents, so an AI outage or slow response never blocks alerting.

What I built

  • Built a multi-tenant monitoring platform in Spring Boot where server-side alert rules evaluate streamed host metrics over sliding windows; incidents open, deduplicate and auto-resolve, with Gemini root-cause suggestions.
  • Designed a Kafka ingestion pipeline (partition keys for per-service ordering, consumer groups, dead-letter topic, idempotent consumers) with Redis API-key caching and per-tenant rate limiting.
  • Guaranteed one active incident per service and rule across instances with a PostgreSQL partial unique index and blocked lost updates with optimistic locking; indexing cut window queries from 70 ms to 0.3 ms on 2M rows.
  • Verified failover with 2 stateless replicas behind nginx (30/30 requests served with one down); deployed live on AWS EC2; 37 tests including Testcontainers integration tests in GitHub Actions CI.
  • Built a React + TanStack Query dashboard with 7 auth-guarded pages, live polling and optimistic updates.