<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://pravin.dev/</id><title>Pravin on Software</title><subtitle>A blog which shares my knowledge while working as Software Engineer.</subtitle> <updated>2026-05-01T16:46:39+05:30</updated> <author> <name>Pravin Tripathi</name> <uri>https://pravin.dev/</uri> </author><link rel="self" type="application/atom+xml" href="https://pravin.dev/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://pravin.dev/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Pravin Tripathi </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>OpenSearch for Observability — Part 4: Latency &amp; Failure Modes</title><link href="https://pravin.dev/posts/opensearch-logging-4/" rel="alternate" type="text/html" title="OpenSearch for Observability — Part 4: Latency &amp;amp; Failure Modes" /><published>2026-04-10T10:00:00+05:30</published> <updated>2026-04-10T10:00:00+05:30</updated> <id>https://pravin.dev/posts/opensearch-logging-4/</id> <content type="text/html" src="https://pravin.dev/posts/opensearch-logging-4/" /> <author> <name>pravin_tripathi</name> </author> <category term="Blogging" /> <category term="Article" /> <summary>In the previous three articles, we covered the architecture of OpenSearch and Fluent Bit, how to set up a high-throughput logging pipeline, and how to optimize for ingestion performance. In this final article, we dive into the most common latency and failure modes that occur in production — from backpressure mechanics to segment merging to the hot shard problem — and how to diagnose and fix the...</summary> </entry> <entry><title>OpenSearch for Observability — Part 3: OpenSearch as a Metrics Backend</title><link href="https://pravin.dev/posts/opensearch-logging-3/" rel="alternate" type="text/html" title="OpenSearch for Observability — Part 3: OpenSearch as a Metrics Backend" /><published>2026-04-10T10:00:00+05:30</published> <updated>2026-04-12T20:35:19+05:30</updated> <id>https://pravin.dev/posts/opensearch-logging-3/</id> <content type="text/html" src="https://pravin.dev/posts/opensearch-logging-3/" /> <author> <name>pravin_tripathi</name> </author> <category term="Blogging" /> <category term="Article" /> <summary>In Part 2 we covered Amazon OpenSearch Ingestion, time-based index strategy, ISM lifecycle policies, and network optimisation for high log volume. This post completes the series. We will use OpenSearch not just for logs but as a metrics backend — replacing or complementing Prometheus — and then wire everything together with dashboards and alerting. Table of Contents OpenSearch as a Metr...</summary> </entry> <entry><title>OpenSearch for Observability — Part 2: Ingestion Pipeline, Index Strategy, and Network Optimisation</title><link href="https://pravin.dev/posts/opensearch-logging-2/" rel="alternate" type="text/html" title="OpenSearch for Observability — Part 2: Ingestion Pipeline, Index Strategy, and Network Optimisation" /><published>2026-04-10T09:30:00+05:30</published> <updated>2026-04-10T09:30:00+05:30</updated> <id>https://pravin.dev/posts/opensearch-logging-2/</id> <content type="text/html" src="https://pravin.dev/posts/opensearch-logging-2/" /> <author> <name>pravin_tripathi</name> </author> <category term="Blogging" /> <category term="Article" /> <summary>In Part 1 we traced the journey of a log record from logger.info() inside your application, through Python’s logging internals, through Docker’s log driver, and into a Fluent Bit sidecar’s output queue. We stopped at the point where Fluent Bit is about to send a bulk HTTP request. This post picks up there. We will explore what happens inside Amazon OpenSearch Ingestion, how to design your inde...</summary> </entry> <entry><title>OpenSearch for Observability — Part 1: From logger.info() to the Wire</title><link href="https://pravin.dev/posts/opensearch-logging-1/" rel="alternate" type="text/html" title="OpenSearch for Observability — Part 1: From logger.info() to the Wire" /><published>2026-04-10T09:00:00+05:30</published> <updated>2026-04-10T09:00:00+05:30</updated> <id>https://pravin.dev/posts/opensearch-logging-1/</id> <content type="text/html" src="https://pravin.dev/posts/opensearch-logging-1/" /> <author> <name>pravin_tripathi</name> </author> <category term="Blogging" /> <category term="Article" /> <summary>So far in this series we have explored how OpenSearch indexes application data and how reindexing works under the hood. Both posts dealt with data you intentionally write — product catalogs, user records, domain documents. This post shifts focus entirely to data your application emits as a side effect of doing its work: logs. Logging sounds simple. You call logger.info(&amp;quot;Payment processed&amp;quot;) and...</summary> </entry> <entry><title>The Feature Flag That Taught Me Three Hard Lessons</title><link href="https://pravin.dev/posts/the-feature-flag-that-taught-me-three-hard-lessons/" rel="alternate" type="text/html" title="The Feature Flag That Taught Me Three Hard Lessons" /><published>2026-03-13T00:00:00+05:30</published> <updated>2026-03-13T00:00:00+05:30</updated> <id>https://pravin.dev/posts/the-feature-flag-that-taught-me-three-hard-lessons/</id> <content type="text/html" src="https://pravin.dev/posts/the-feature-flag-that-taught-me-three-hard-lessons/" /> <author> <name>pravin_tripathi</name> </author> <category term="Blogging" /> <category term="Article" /> <summary>Table of Contents The Setup Case 1: The Zombie Flag Case 2: The Name Collision Nightmare Case 3: The Flag Matrix — When Testing Becomes a Nightmare Looking Back Feature flags feel like magic when you first discover them. You can toggle behavior in production without a new deployment, roll back instantly when something breaks, and run experiments safely. I was no different — I loved...</summary> </entry> </feed>
