Skip to main content
devopsinfo.in

Open to interesting infrastructure problems

Hi, I'm Manish. DevOps Engineer | Cloud & Data Infrastructure

I build and run the boring parts of infrastructure well — pipelines that deploy predictably, databases that stay consistent under load, and systems whose failures are legible at 3am.

Toolkit

What I work with

The stack I reach for when building delivery pipelines, running services and moving data between systems.

  • AWS

    EC2, S3, RDS, IAM and VPC networking for application platforms.

  • Docker

    Reproducible build and runtime images, multi-stage and slim bases.

  • Kubernetes

    Workload scheduling, probes, resource limits and rollout strategy.

  • GitHub Actions

    Build, test and deploy pipelines with caching and reusable jobs.

  • MySQL & PostgreSQL

    Replication, query plans, connection pooling and safe migrations.

  • Debezium & ClickHouse

    Change-data-capture pipelines into a columnar analytics store.

  • Prometheus & Grafana

    SLO-oriented metrics, alert routing and dashboards people read.

  • Linux

    systemd, filesystems, networking and incident-time debugging.

Writing

Latest articles

Tutorials, architecture notes and things that broke in ways worth writing down.

CI/CD7 min read

A Beginner-Friendly Guide to CI/CD with GitHub Actions

Build a pipeline you can explain: what CI and CD actually mean, how a GitHub Actions workflow is structured, and how to get from a test run to a safe deployment.

  • #GitHub Actions
  • #CI/CD
  • #Docker
Databases8 min read

Practical Read/Write Splitting with MySQL Replicas

Adding read replicas is easy; routing to them safely is not. How to split reads and writes without letting replication lag turn into user-visible bugs.

  • #MySQL
  • #Replication
  • #Scaling

Selected work

Featured case studies

Longer-form write-ups of systems I have designed or operated. Figures shown are illustrative examples, clearly labelled as such.

Illustrative example

MySQL → ClickHouse change-data-capture pipeline

Streaming row changes out of a transactional MySQL cluster into a columnar store so analytics stops competing with production traffic.

Reporting queries ran against the same MySQL primary that served the application. As the dataset grew, a single analyst refreshing a dashboard could add noticeable latency to ordinary writes. The goal was to move analytical reads off the transactional database without introducing a nightly batch window.

The pipeline reads the MySQL binary log with Debezium, publishes change events to Kafka, and materialises them in ClickHouse. Deletes and updates are handled with a ReplacingMergeTree keyed on the primary key plus a monotonic version column, so the analytics tables converge on the same state as the source without requiring in-place mutations.

The interesting part was not the happy path but the operational envelope: schema changes, snapshot restarts, replication lag alerting, and deciding what "eventually consistent" is allowed to mean for each dashboard.

Illustrative figures — example environment, not measured production results

Change events / day
~5M
End-to-end lag target
< 30s
Analytics tables
20+
  • MySQL
  • Debezium
  • Kafka
  • ClickHouse
  • Docker
  • Prometheus
Illustrative example

Build-once delivery pipeline on GitHub Actions

A CI/CD setup where the artifact that passes tests is the exact artifact that reaches production.

Teams frequently rebuild an image per environment, which quietly breaks the guarantee that what was tested is what ships. This pipeline builds a single image, tags it with the commit SHA, and promotes that same digest through staging and production.

Pull requests run lint, unit tests and a container build. Merges to the default branch push the image to a registry, run integration tests against it, and then deploy. Deployment jobs use GitHub environments so production requires an explicit approval and holds its own secrets.

Caching is deliberately conservative: dependency caches are keyed on lockfile hashes, and layer caching is scoped per branch so a poisoned cache cannot silently leak into main.

Illustrative figures — example environment, not measured production results

Pipeline stages
5
Example PR feedback
~4 min
  • GitHub Actions
  • Docker
  • OIDC
  • Trivy
  • Kubernetes

About

A little about Manish

I work on the parts of a system that only get noticed when they fail: build and deploy pipelines, database replication, log and metric plumbing, and the runbooks that make an incident boring.

Most of what I publish here comes out of that work — an architecture I had to reason through, a failure mode that surprised me, or an explanation I wished had existed when I was learning.

Focus
Cloud & Data Infrastructure
Writing about
CI/CD, Linux, Databases

Newsletter

An occasional email about infrastructure that misbehaves

New posts and the odd note that never became one. No tracking pixels, no sharing, one-click unsubscribe in every issue. You will get a confirmation email first — nothing is sent until you click it.

Prefer no email at all? The RSS feed carries every post.