Skip to content
● akshay.nanavare
menu

SELECT * FROM projects

Projects

Case studies from production work: the problem, what I built, and what changed.

Case studies

★ featured

Last9 · Zero-downtime ClickHouse migration

50+ live tenants migrated with zero downtime and significantly lower compute cost.

problem
Compute cost grew with every tenant we added, and customers rely on ingestion, search and alerts around the clock, so downtime was not an option.
approach
I designed the migration strategy, mentored by our CTO, and three engineers joined for the rollout.
  • ClickHouse
  • Altinity
  • Kafka
  • Kubernetes

Last9 · APM backend

Became one of the product's core features; the MVP contributed to product-market fit.

problem
Customers wanted application performance monitoring next to their logs and traces, in one product.
approach
Designed and built the APM backend from scratch as an MVP, on top of the traces pipeline and ClickHouse storage, then grew it into a core feature.
  • Go
  • ClickHouse

Last9 · Ingestion control plane and physical indexes

Customers trim data before paying to store it, and indexed queries scan only the data they need.

problem
Customers paid to store data they didn't need, and a filtered query (say, only staging logs) still scanned everything.
approach
Ingestion-time rules (extract, remap, drop) that run before data is written, plus user-defined physical indexes that route matching data into its own dedicated table end to end.
  • Go
  • ClickHouse
  • OpenTelemetry

Last9 · Cold storage and rehydration

Long retention at object-storage prices, with archived logs queryable again whenever they're needed.

problem
Customers need months of logs for audits and incidents, but keeping it all hot in ClickHouse is expensive.
approach
Back up logs to the customer's own object storage (S3, GCS), then rehydrate the time range they ask for back into the product on demand.
  • Go
  • ClickHouse
  • AWS S3
  • GCS

Last9 · Tenant onboarding automation

New tenants, SaaS or BYOC, come up without manual infra work.

problem
Every new customer needed infrastructure brought up by hand, for both SaaS and BYOC (bring your own cloud) setups.
approach
A SaaS signup or BYOC setup triggers automated provisioning of the tenant's infrastructure on Kubernetes.
  • Go
  • Kubernetes

Last9 · Event-driven S3 log ingestion

Logs from S3 become queryable in near real time.

problem
Customers already ship logs to S3 and wanted them searchable without running another agent.
approach
An event-driven pipeline that reacts to new objects in S3, parses them, and ingests them into the logs store.
  • Go
  • AWS S3
  • ClickHouse

Last9 · ClickHouse SQL query generator

Powers log querying in the product, with query performance tuned for large-scale logs and traces.

problem
Users needed to filter, parse, and transform logs without writing ClickHouse SQL by hand.
approach
A Go query builder that compiles filters, parsers (regex, JSON, logfmt), and transformations into optimized ClickHouse SQL.
  • Go
  • ClickHouse

Last9 · MCP server for production debugging

Real-time debugging from Cursor, VS Code, and Claude.

problem
Engineers debugging production context-switch between their editor and the observability UI.
approach
An MCP server that exposes logs, traces, and exceptions to AI assistants.

Tazapay · Transaction report pipeline (CDC)

Report generation went from 15 minutes to under 1 minute.

problem
Merchant transaction reports took 15 minutes to generate.
approach
A new Go service fed by change data capture over AWS Kinesis, so report data is prepared as transactions happen.
  • Go
  • AWS Kinesis
  • CDC
  • gRPC

Tazapay · Ops control panel

80% fewer ops tickets.

problem
Every change to a merchant's payment methods needed an ops ticket to engineering.
approach
A Go control panel that lets the ops team manage merchant payment methods themselves.
  • Go
  • gRPC

↑↓ navigate · enter select · esc close