{
    "componentChunkName": "component---src-templates-post-page-index-js",
    "path": "/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/",
    "result": {"data":{"defaultImage":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAEDBP/aAAwDAQACEAMQAAAByJtdAZ//xAAXEAADAQAAAAAAAAAAAAAAAAABAhIg/9oACAEBAAEFAkWjOf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAAEFAAAAAAAAAAAAAAAAAAIAESAhMv/aAAgBAQAGPwKyZaGP/8QAGRABAAIDAAAAAAAAAAAAAAAAAQARICHw/9oACAEBAAE/IQQDW7Z0cf/aAAwDAQACAAMAAAAQDB//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAWEQADAAAAAAAAAAAAAAAAAAABEBH/2gAIAQIBAT8QhX//xAAbEAEAAgIDAAAAAAAAAAAAAAABEVEAICFh0f/aAAgBAQABPxAumKz1gEnii/mv/9k=","aspectRatio":1.9047619047619047,"src":"/static/b9a1fa41d8a11857e973d42dc257e89d/2f1b1/blogs-default-image.jpg","srcSet":"/static/b9a1fa41d8a11857e973d42dc257e89d/fd013/blogs-default-image.jpg 200w,\n/static/b9a1fa41d8a11857e973d42dc257e89d/25252/blogs-default-image.jpg 400w,\n/static/b9a1fa41d8a11857e973d42dc257e89d/2f1b1/blogs-default-image.jpg 800w,\n/static/b9a1fa41d8a11857e973d42dc257e89d/0ff54/blogs-default-image.jpg 1200w,\n/static/b9a1fa41d8a11857e973d42dc257e89d/50fa3/blogs-default-image.jpg 1218w","sizes":"(max-width: 800px) 100vw, 800px"}}},"post":{"id":"cG9zdDoxMDczOA==","title":"Beyond IaC: Engineering a solution to Guarantee What Actually Is in Production","content":"\n<p>Infrastructure as Code (IaC) is often treated as the holy grail of Site Reliability Engineering (SRE). We use tools like SaltStack and Ansible, alongside golden images and post-install scripts, to define our ideal state. But here is the hidden secret of infrastructure engineering: IaC dictates how things <em>should</em> be, but it doesn&#8217;t guarantee what actually <em>is</em>.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><span class=\"wp-image-10744 inline-gatsby-image-wrapper gatsby-image-wrapper\" style=\"position:relative;overflow:hidden;max-width:100%;width:1024px\" data-reactroot=\"\"><span aria-hidden=\"true\" style=\"width:100%;padding-bottom:63.671875%\"></span><img aria-hidden=\"true\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAC4jAAAuIwF4pT92AAADJElEQVR42gEZA+b8AItoz51935Bs2oVf2YVX3XY93m05zJx74phz5o9q5oph54NP6G8z5oFS5KKD8ZNw8JBq8Yhd8YBP8XY68QCOatGXdt6ecuGwd+qHVeBzOuFxPNCcfOSWcemygO2nce19SupxM+iCVOe3kvS5he+1ge+udO+ZWO54O/EAPwWRRA2VdDKvm0nCYSOxSg+uTxS0XiXBXB/GhjPPiDrVZCXXXyDZVxvdjjjiv0/gtUriu03jqEPnZSL0ADsCj4BXvLGY35t/2KWC3mIrv1AWuKqI35lt3UYJyXdN3bGA6HpD4l4h4F0f5lgY6Vwb7V0d8V8e9GQj9QA8AZCDXMG4nOejf+CmhOdpNcZOEbppNMxuO9KLXd2AS99xPd9mK+BiJuFfIOiabu+2lfGzkPC4l/CbcfQAPwWUYzKwlHDQh13NfVDOWB6/Uha/URLGXSHPrIrojF3lVxXbWxniXRvmXBjrs5rv1snuybXsybjqqov1AEIImU4WpYphxoJXx2QvvkwOvFMXwl4jzYxi3o9l4oda43I55HNC34dt0m0/5pRH5IszwK16544vxYZO3QBGDJ5GC6RGCqpVHbdaI79SFMFTFsVVF8xcH9RgJNpuOuBkJOmWhtHR77iRgtacZPKqet2vjO2mbuGQYOwARw2iSA2pSxKvTxGyUg+8URTEVRfHVBbOUxfSWhzLXhLMYRbjlIzPvOymhnzJo3z/u83WnM+for7BlGn5AEkOpkcQp0IZmpNL5Ig8ylANwFUZyloZ2UAYp2s3tbNz4mETyGU73n54wmc54JVp+Lej4qmhv52LzIpa9gBLEKlGC6kvCXqBXKtxQLJNDMRXG8xbGdpDDrBGIoZ1TLJYG9ZdGfBdFfFeGPSSbffMnNraiJq7d6uKX/cASQypWTDIZ1TTX0C6byrMYRjPVBrPWBnXblbxdGfndEjdgTDkZR/pYSTtYR/zcjj1gkz1g0rqfkTqczn5AEsNrFozzG1W5XVI4nkw2GEY0FYb0loa2WM76G5I8HQ87XIm5GMe7WEi8GIg9WAc+F8a+14a/l8b/WMf++IomNBiPSMyAAAAAElFTkSuQmCC\" alt=\"\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition-delay:500ms\"/><picture><source srcSet=\"/static/bcc7736ace0fe016ecbd5c86522ee58f/85b06/Beyond-IaC-Info-4-scaled.png 256w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/bc282/Beyond-IaC-Info-4-scaled.png 512w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/f1720/Beyond-IaC-Info-4-scaled.png 1024w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/437a1/Beyond-IaC-Info-4-scaled.png 1536w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/7b24f/Beyond-IaC-Info-4-scaled.png 2048w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/8355f/Beyond-IaC-Info-4-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"/><img sizes=\"(max-width: 1024px) 100vw, 1024px\" srcSet=\"/static/bcc7736ace0fe016ecbd5c86522ee58f/85b06/Beyond-IaC-Info-4-scaled.png 256w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/bc282/Beyond-IaC-Info-4-scaled.png 512w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/f1720/Beyond-IaC-Info-4-scaled.png 1024w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/437a1/Beyond-IaC-Info-4-scaled.png 1536w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/7b24f/Beyond-IaC-Info-4-scaled.png 2048w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/8355f/Beyond-IaC-Info-4-scaled.png 2560w\" src=\"/static/bcc7736ace0fe016ecbd5c86522ee58f/f1720/Beyond-IaC-Info-4-scaled.png\" alt=\"\" loading=\"eager\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 500ms\"/></picture><noscript><picture><source srcset=\"/static/bcc7736ace0fe016ecbd5c86522ee58f/85b06/Beyond-IaC-Info-4-scaled.png 256w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/bc282/Beyond-IaC-Info-4-scaled.png 512w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/f1720/Beyond-IaC-Info-4-scaled.png 1024w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/437a1/Beyond-IaC-Info-4-scaled.png 1536w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/7b24f/Beyond-IaC-Info-4-scaled.png 2048w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/8355f/Beyond-IaC-Info-4-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" /><img loading=\"eager\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"/static/bcc7736ace0fe016ecbd5c86522ee58f/85b06/Beyond-IaC-Info-4-scaled.png 256w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/bc282/Beyond-IaC-Info-4-scaled.png 512w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/f1720/Beyond-IaC-Info-4-scaled.png 1024w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/437a1/Beyond-IaC-Info-4-scaled.png 1536w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/7b24f/Beyond-IaC-Info-4-scaled.png 2048w,\n/static/bcc7736ace0fe016ecbd5c86522ee58f/8355f/Beyond-IaC-Info-4-scaled.png 2560w\" src=\"/static/bcc7736ace0fe016ecbd5c86522ee58f/f1720/Beyond-IaC-Info-4-scaled.png\" alt=\"\" style=\"position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center\"/></picture></noscript></span></figure>\n\n\n\n<p>Configuration states inevitably change over time. Manual emergency steps are applied during fire-fights, human errors and misses accumulate, and runtime errors cause states to fail silently. This is especially true for dynamic or running configs which do not come from config files. System state is not always derived solely from a high-state configuration or at times (edge cases) complete end-to-end automation. Furthermore, consistently applying high-state to every node is <strong><em>impractical</em></strong> at scale, due to both the <em>volume of nodes and the complexity of the states</em> involved.&nbsp;&nbsp;</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Furthermore, one shouldn’t use the System Under Test to test </em><strong><em>itself!</em></strong><em> Who gives the grading privileges to the student who wrote the homework?</em></p>\n</blockquote>\n\n\n\n<p>We realized that relying solely on IaC wasn&#8217;t enough; we needed to validate that the production systems actually reflected the code. It all boils down to one simple, uncompromising truth: <strong>if it&#8217;s not checked, it&#8217;s not done</strong>.</p>\n\n\n\n<p>This is the story of how we retired our scattered scripts, overcame severe infrastructure bottlenecks, and built TestInfra—a robust, multi-environment validation framework that now executes over a million checks per environment.</p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Dark Ages: The Operational Nightmare of Personal Favourite Scripts</strong></h2>\n\n\n\n<p>Before TestInfra, our validation strategy was a fragmented mess of individual &#8220;favourite&#8221; scripts. But the problem went far beyond mere fragmentation—it was a massive operational nightmare.</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The Discoverability Problem:</strong> Scripts were scattered across Git repos or hidden as snippets in Salt configs. If you didn&#8217;t know a script existed, you couldn&#8217;t use it.</li>\n\n\n\n<li><strong>The Duplication Problem:</strong> Teams were duplicating efforts, creating unstandardized checks with no reusable logic.</li>\n\n\n\n<li><strong>The Hindsight Problem:</strong> There was zero historical tracking or hindsight.</li>\n\n\n\n<li><strong>The Deployment Dilemma:</strong> If you want to validate thousands of servers, you absolutely <em>do not</em> want to ship test code and its dependencies to every single host and maintain them there. If you keep code and dependencies on all servers, the test/check versions themselves will inevitably start drifting, defeating the entire purpose of a unified validation architecture!</li>\n</ul>\n\n\n\n<p>We needed a framework that was centralized, reusable, and didn&#8217;t involve reinventing the wheel.</p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Crossroads: Choosing the Right Toolstack</strong></h2>\n\n\n\n<p>Before we could pick a tool, we had to address how we would actually communicate with thousands of servers securely.</p>\n\n\n\n<p><strong>The Agent Restrictions:</strong> We had three main ways into our servers: SSH, Salt, and Wazuh. Each existing agent came with its own strict controls and operational issues. For example, we couldn&#8217;t simply use headless SSH users because of strict regulatory, compliance, and auditability restrictions. The same goes for the Wazuh agent, which is strictly under InfoSec custody. And for the reasons given above, we didn’t want to casually add <em>more</em> agents or new software on our servers, which would only increase our attack surface and maintenance demands.</p>\n\n\n\n<p>With these strict operational and security constraints in mind, we evaluated several existing tools in the ecosystem to build this independent, centralized verification:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Building our own framework:</strong> We briefly considered this, but the massive effort, reinventing the wheel, and unforeseen edge cases made it a big &#8220;NO&#8221;.</li>\n\n\n\n<li><strong>InSpec/ServerSpec:</strong> These rely heavily on Ruby and RSpec. Since high-level APIs were missing or difficult to implement, extending them posed a significant challenge.</li>\n\n\n\n<li><strong>Goss:</strong> Being YAML-driven, it is great for a small set of checks but cannot be easily extended and requires its own binary.</li>\n\n\n\n<li><strong>Molecule:</strong> Difficult for complex logic, though advantageous in Ansible-heavy environments.</li>\n</ul>\n\n\n\n<p><strong>The Winner: Pytest-Testinfra.</strong> We chose Pytest-Testinfra because it operated seamlessly within our Python ecosystem. Crucially, it solved our operational and agent hurdles: it acts as a centralized runner that supports<strong><em> SaltStack, Ansible, SSH, and local execution</em></strong> backends out-of-the-box <strong><em>without</em></strong> requiring new agents. All our varied environments could use whatever transport (SaltStack, SSH, Ansible, Local) suits their needs! This meant zero test-code drift on the edge nodes because the logic stays central. It also allowed us to write checks in just 3-5 lines of code and cleanly separate our test logic from our test data.&nbsp;</p>\n\n\n\n<p><strong>Solving the Reporting Puzzle:</strong> Running tests centrally is useless without great visibility. We evaluated several alternatives, including Allure reports, our internal tools Magnus [software focus], Testopia etc. However, we ultimately integrated <strong>ReportPortal</strong>. ReportPortal won because it solved for massive scale, handled strict security requirements (authentication and authorization), and provided Machine Learning-driven auto-analysis. This integration became so reliable that we used it to confirm the sanity of our Disaster Recovery (DR) sites both before and after major migrations. The beauty of this solution was, we never had to execute checks to answer questions like these: “Is my DR site ready right now?” as the solution already provides answers to questions at any given point in time. The worth of these architectural decisions was evident when we had to<em> conduct real DR anticipating a large-scale disruption</em> on one of our production sites. The environments did not see any glitches during this impromptu DR exercise. The proactive checks helped us steer through that proactive DR drill without any major preparations.&nbsp;</p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Scaling Up: Hitting the Million Milestone</strong></h2>\n\n\n\n<p>Once the foundation was laid, adoption skyrocketed. The framework&#8217;s numbers are now wild:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We operate in <strong>25+ diverse environments</strong> with <strong>20+ active contributors</strong>.</li>\n\n\n\n<li>We have written over <strong>15K+ lines of code</strong>—a robust foundation almost equal in size to the upstream Testinfra repository itself!</li>\n\n\n\n<li>Through aggressive data-driven parameterization, our <strong>390+ logical test cases</strong> expand dynamically into <strong>tens of thousands of test executions</strong>.</li>\n\n\n\n<li>In just one of our smaller environments, this translates to about <strong>a million unique test runs within a few months.</strong> Is it overkill? Maybe… Maybe not if you want sanity all of the time.</li>\n</ul>\n\n\n\n<p>We heavily emphasized the <strong>DRY (Don&#8217;t Repeat Yourself)</strong> principle , building custom utility modules (like RabbitMQ, MysqlClient, Daemontools,&nbsp; AerospikeClient [and few more very specific to <strong>PhonePe</strong> customizations]) to abstract complex logic away from the raw test files.</p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Boss Fight: The SaltStack Event Bus Bottleneck</strong></h2>\n\n\n\n<p>As we scaled, we hit an architectural wall. Our validation checks relied on SaltStack&#8217;s primary event bus to push execution tasks, which became fatally congested. Minions would simply stop responding in larger environments, leading to aggressive execution timeouts.</p>\n\n\n\n<p><strong>Attempt 1: The TCP Transport Experiment</strong> Salt provides two transport mechanisms: ZMQ (the default) and TCP. We tested moving from ZMQ on Salt 3005 to TCP on Salt 3007. The results were initially mind-blowing: <strong>an average 70% reduction in execution time and almost zero timeouts</strong>.</p>\n\n\n\n<p>However, it was a trap. Salt 3007 comes with a &#8220;onedir&#8221; installation that bundles Python 3.10, whereas our Focal environments use Python 3.8. This caused severe dependency mismatches (specifically with bernhard and protobuf) that broke our existing automation scripts. Furthermore, we were completely unable to revert back to ZMQ once TCP was enabled, and we started seeing 5% of Salt calls failing with &#8220;Nonce verification errors&#8221;. We also came up with internal tooling for saltstack profiling and auditing (SaltLens) Although not relevant to this discussion, we may very soon write another blog for that ecosystem.&nbsp;</p>\n\n\n\n<p><strong>Attempt 2: External Job Cache</strong> We tried offloading work by setting up the Salt master with an external job cache backed by PostgreSQL / MariaDB. This had no effect whatsoever on performance; execution times did not improve, and timeouts did not decrease.&nbsp;&nbsp;</p>\n\n\n\n<p><strong>The Final Solution: The &#8220;Salt Exec&#8221; Multi-Master Workaround</strong> We needed a solid backbone to push commands without meddling in the existing fragile setup, and without forcing a massive production cut-over.Our breakthrough was implementing a <strong>multi-master, multi-minion setup specifically for execution</strong>. We spun up a dedicated salt-exec node with specs mirroring the primary master.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><span class=\"wp-image-10756 inline-gatsby-image-wrapper gatsby-image-wrapper\" style=\"position:relative;overflow:hidden;max-width:100%;width:1024px\" data-reactroot=\"\"><span aria-hidden=\"true\" style=\"width:100%;padding-bottom:78.125%\"></span><img aria-hidden=\"true\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAC4jAAAuIwF4pT92AAAETklEQVR42kXTa1DUVRjH8f+ilgMBKyz3m4LjilmOF0YMQUrTEQxJXTHkuuzC7gKLLIssKAhaKyDeBQHXvCC0KiAygNYQqTNNmjnOlPnCxrEix3SyRFERzW8n1PHFb85583zO88wzR/L0ycXbNw9fHzMB3oUEexah9FrPXGU1i97eRVxoLctD6kkKOYAmuIVM36No3rBjGNVKvkMna2U9WGRfUiy9iPQ/6KbIwt0tC283PYHybILl+cwOKiN6wmZiJ+4eARMCbazyO0CyVxOJDk2kSS3opFZypA7ypa7XoMJLz9zI/axYdob4Jb3Ex3yNaskZEpacQzW/l0jFNt4bXckyt0Y+jzzP0ejLtEb/yIl5V+iM/pnTC65hU37PWqnnBeglQIP+VyzFYLX+i80GFRuhsAgsJc+Jf+cIYbIK8kOP8yjvGX9pHjOw/gkPtg5zd80jBrKfcGnFH2L0bizSKSRvbz1azXWMxufU1w9x9eowW7YMkZM9RIFpiLiph5glKyd3kp3bWQ+5kfQPt2sGuVP7kJuW+9xKH+S7uN8wy7pEl91IPp46MrU3MJmgrGyY2tpnlJQ8JS/vKQXmZwI8yAxZKUalnbu6x/SnDnDL+IA7FYPcNNznjuYhF+L7MTmcpEDqFKBCizrtCoWFYkTLEBs3DrOu5Il44Clm0yMWT6pnpsM6tMEH6c8c4HftPfrXDNBvFHfjPf7UDdK3+Bf0smPkSm1Ivh5ZTA6xEDZtCxHTq4maUUPU1O1ETdnJ/Ek7CJeXMsexgvnOlaT52zD4HyYvoIW1QccoDmyn1K+TNW8dRys1kyU2L/l7ZOLjrsHTVU2IQo/SJ4dQ91ymyPOY7momwqOMcKdSFnpW8aFAF42tInZUDcvH7Gbl6FpWSnUkyWykyvaPRApQqAn00OAnV7Pe1Myhxj625Z5ja/pFihLaUS/ew8dTazi89SxN1m9p0F5md+JlNi3tomB2M6o39qByeB0BZhDgkYGfaxo7Np+ks+0ClaZT5Ed8hTnmKLr4vayO3EVX8w8crz9PueobisN72bS8A9MHR4gdW03MaNH1mOqRSAHuaSOgr4sArSdpqDvNwsC92FP+piL6FKmLdpIwp4aelktoV+7DOO0sX6T2Y45oJmeBjfcdy4l6U/yqsRuYJyLAJAIUKQJMZbv1BAcaTzNPaaE4sQnDRw2kxO4gbuZn9NgvkpNcx7KZm9mQZkcX04B6QR3hLkXMcjQzy+lFXoJJYuREtlm7abNfp+rTs5SLooZs8T8TxFhh5bQ3/8SRfdcoN3VTo+6gMbsXg0DflYsFOhuY4qIn1FX/CkwWS/mEVNUeSkx96DNOUJrUQpWqnayoOiKCzVj0HRRl95Gf1k7lqlasS9tYEVbJxHFaJso1BI/LYMI49UvwVUSX412SRMQDLil4Oa8m0DkdpbMOpaOWyU4ZKJ00jBenv1MqQS7pI1CQW7qoTx4x/gNxjc9l4k1itQAAAABJRU5ErkJggg==\" alt=\"\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition-delay:500ms\"/><picture><source srcSet=\"/static/2dc1180830fed6ce48558285e611a9c1/85b06/Beyond-IaC-Info-1-scaled.png 256w,\n/static/2dc1180830fed6ce48558285e611a9c1/bc282/Beyond-IaC-Info-1-scaled.png 512w,\n/static/2dc1180830fed6ce48558285e611a9c1/f1720/Beyond-IaC-Info-1-scaled.png 1024w,\n/static/2dc1180830fed6ce48558285e611a9c1/437a1/Beyond-IaC-Info-1-scaled.png 1536w,\n/static/2dc1180830fed6ce48558285e611a9c1/7b24f/Beyond-IaC-Info-1-scaled.png 2048w,\n/static/2dc1180830fed6ce48558285e611a9c1/8355f/Beyond-IaC-Info-1-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"/><img sizes=\"(max-width: 1024px) 100vw, 1024px\" srcSet=\"/static/2dc1180830fed6ce48558285e611a9c1/85b06/Beyond-IaC-Info-1-scaled.png 256w,\n/static/2dc1180830fed6ce48558285e611a9c1/bc282/Beyond-IaC-Info-1-scaled.png 512w,\n/static/2dc1180830fed6ce48558285e611a9c1/f1720/Beyond-IaC-Info-1-scaled.png 1024w,\n/static/2dc1180830fed6ce48558285e611a9c1/437a1/Beyond-IaC-Info-1-scaled.png 1536w,\n/static/2dc1180830fed6ce48558285e611a9c1/7b24f/Beyond-IaC-Info-1-scaled.png 2048w,\n/static/2dc1180830fed6ce48558285e611a9c1/8355f/Beyond-IaC-Info-1-scaled.png 2560w\" src=\"/static/2dc1180830fed6ce48558285e611a9c1/f1720/Beyond-IaC-Info-1-scaled.png\" alt=\"\" loading=\"eager\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 500ms\"/></picture><noscript><picture><source srcset=\"/static/2dc1180830fed6ce48558285e611a9c1/85b06/Beyond-IaC-Info-1-scaled.png 256w,\n/static/2dc1180830fed6ce48558285e611a9c1/bc282/Beyond-IaC-Info-1-scaled.png 512w,\n/static/2dc1180830fed6ce48558285e611a9c1/f1720/Beyond-IaC-Info-1-scaled.png 1024w,\n/static/2dc1180830fed6ce48558285e611a9c1/437a1/Beyond-IaC-Info-1-scaled.png 1536w,\n/static/2dc1180830fed6ce48558285e611a9c1/7b24f/Beyond-IaC-Info-1-scaled.png 2048w,\n/static/2dc1180830fed6ce48558285e611a9c1/8355f/Beyond-IaC-Info-1-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" /><img loading=\"eager\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"/static/2dc1180830fed6ce48558285e611a9c1/85b06/Beyond-IaC-Info-1-scaled.png 256w,\n/static/2dc1180830fed6ce48558285e611a9c1/bc282/Beyond-IaC-Info-1-scaled.png 512w,\n/static/2dc1180830fed6ce48558285e611a9c1/f1720/Beyond-IaC-Info-1-scaled.png 1024w,\n/static/2dc1180830fed6ce48558285e611a9c1/437a1/Beyond-IaC-Info-1-scaled.png 1536w,\n/static/2dc1180830fed6ce48558285e611a9c1/7b24f/Beyond-IaC-Info-1-scaled.png 2048w,\n/static/2dc1180830fed6ce48558285e611a9c1/8355f/Beyond-IaC-Info-1-scaled.png 2560w\" src=\"/static/2dc1180830fed6ce48558285e611a9c1/f1720/Beyond-IaC-Info-1-scaled.png\" alt=\"\" style=\"position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center\"/></picture></noscript></span></figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This secondary master holds <strong>no states or pillars</strong>.</li>\n\n\n\n<li>It does not impact the existing master-minion relationships.</li>\n\n\n\n<li>It provides a separate execution event bus and a dedicated entry point for our automation frameworks.</li>\n</ul>\n\n\n\n<p>By isolating the execution traffic, our average time for Testinfra checks plummeted drastically from nearly 1800 seconds down to around 115 seconds, bypassing the congested primary bus entirely.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><span class=\"wp-image-10768 inline-gatsby-image-wrapper gatsby-image-wrapper\" style=\"position:relative;overflow:hidden;max-width:100%;width:1024px\" data-reactroot=\"\"><span aria-hidden=\"true\" style=\"width:100%;padding-bottom:56.25%\"></span><img aria-hidden=\"true\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB4UlEQVR42mO4fODHxb3fL+37fnHP93Pbvp7e9OXkui9Hln/ZO/vT9v4Pm7s+bGj9sLbu7aqqt8tL3y7Oe70w6/W81Fez415Oj3zJcOXgjwt7vp3Z+vXMlm8n1309seLz0cWfDsz9tHv6R+I07/52avPn0xu/HVv9dc+Szzvmf9o289OuqWDNnaia8zE0Ax18dtvXs5u+7V35Jbv9c3L9p7r2j7umYdOMZjPQz+d2fAHafHbzt73LvmQWvk1MfVVX+hq7ZqDN2UiaL+4Duvnjue3fgJr3LflcEP8sI/hJU/pzomwGaj6x8f3pLV/Obvm2b+HnEp8HuXZ32iIeAjVv63u/sf3d+uZ3OP18af/3M9s+n9765cyW7/vnf6y0ulmkeaXL6+7OaR/3T/1+YOqv7RO+rGt6t6ry7YoykM0Lsl6BNb9CBBgoqrZ+3z/3Q6365XKRcz1W1w7M+tZXfLbAb9skj4src1+sqn63JP/10rw3S3LfIgUYJLS3gzQfmP2hWeRMLcPRPu0Lxxb+jvKeI8IQ78rQ1h9+fnPn562T3s8sfNIT82B+2utZyJqBNp/e8u34qi8b65+sKLy7of7Z/tlflrfc68s81ZNxcnHVo3WNb1e1PJuSdbcv7s6C9FcQzQClkcy1rnQg8gAAAABJRU5ErkJggg==\" alt=\"\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition-delay:500ms\"/><picture><source srcSet=\"/static/3119006fd68e591759f50175a3463c2d/85b06/Beyond-IaC-Info-2-scaled.png 256w,\n/static/3119006fd68e591759f50175a3463c2d/bc282/Beyond-IaC-Info-2-scaled.png 512w,\n/static/3119006fd68e591759f50175a3463c2d/f1720/Beyond-IaC-Info-2-scaled.png 1024w,\n/static/3119006fd68e591759f50175a3463c2d/437a1/Beyond-IaC-Info-2-scaled.png 1536w,\n/static/3119006fd68e591759f50175a3463c2d/7b24f/Beyond-IaC-Info-2-scaled.png 2048w,\n/static/3119006fd68e591759f50175a3463c2d/8355f/Beyond-IaC-Info-2-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"/><img sizes=\"(max-width: 1024px) 100vw, 1024px\" srcSet=\"/static/3119006fd68e591759f50175a3463c2d/85b06/Beyond-IaC-Info-2-scaled.png 256w,\n/static/3119006fd68e591759f50175a3463c2d/bc282/Beyond-IaC-Info-2-scaled.png 512w,\n/static/3119006fd68e591759f50175a3463c2d/f1720/Beyond-IaC-Info-2-scaled.png 1024w,\n/static/3119006fd68e591759f50175a3463c2d/437a1/Beyond-IaC-Info-2-scaled.png 1536w,\n/static/3119006fd68e591759f50175a3463c2d/7b24f/Beyond-IaC-Info-2-scaled.png 2048w,\n/static/3119006fd68e591759f50175a3463c2d/8355f/Beyond-IaC-Info-2-scaled.png 2560w\" src=\"/static/3119006fd68e591759f50175a3463c2d/f1720/Beyond-IaC-Info-2-scaled.png\" alt=\"\" loading=\"eager\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 500ms\"/></picture><noscript><picture><source srcset=\"/static/3119006fd68e591759f50175a3463c2d/85b06/Beyond-IaC-Info-2-scaled.png 256w,\n/static/3119006fd68e591759f50175a3463c2d/bc282/Beyond-IaC-Info-2-scaled.png 512w,\n/static/3119006fd68e591759f50175a3463c2d/f1720/Beyond-IaC-Info-2-scaled.png 1024w,\n/static/3119006fd68e591759f50175a3463c2d/437a1/Beyond-IaC-Info-2-scaled.png 1536w,\n/static/3119006fd68e591759f50175a3463c2d/7b24f/Beyond-IaC-Info-2-scaled.png 2048w,\n/static/3119006fd68e591759f50175a3463c2d/8355f/Beyond-IaC-Info-2-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" /><img loading=\"eager\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"/static/3119006fd68e591759f50175a3463c2d/85b06/Beyond-IaC-Info-2-scaled.png 256w,\n/static/3119006fd68e591759f50175a3463c2d/bc282/Beyond-IaC-Info-2-scaled.png 512w,\n/static/3119006fd68e591759f50175a3463c2d/f1720/Beyond-IaC-Info-2-scaled.png 1024w,\n/static/3119006fd68e591759f50175a3463c2d/437a1/Beyond-IaC-Info-2-scaled.png 1536w,\n/static/3119006fd68e591759f50175a3463c2d/7b24f/Beyond-IaC-Info-2-scaled.png 2048w,\n/static/3119006fd68e591759f50175a3463c2d/8355f/Beyond-IaC-Info-2-scaled.png 2560w\" src=\"/static/3119006fd68e591759f50175a3463c2d/f1720/Beyond-IaC-Info-2-scaled.png\" alt=\"\" style=\"position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center\"/></picture></noscript></span></figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Bigger Picture: Inspiring a Cultural Shift</strong></h2>\n\n\n\n<p>The success of TestInfra proved something far more valuable than just execution speeds: it proved the <strong>immense power of our collective wisdom.</strong></p>\n\n\n\n<p>Previously, our restructuring into specialized pods brought deep focus but naturally created knowledge silos. Finding the right internal expert or a pre-existing tool had become difficult. TestInfra broke those barriers by bringing together experts from various pods to collaborate brilliantly and create something <strong>universally valuable.</strong></p>\n\n\n\n<p>This cross-pollination was so successful that it became the catalyst for our next major organizational evolution: <strong>SRE Forge</strong>.</p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Enter SRE Forge: Our Internal Open-Source Framework</strong></h3>\n\n\n\n<p>Inspired by the project lifecycle and collaborative guidelines of the Apache Software Foundation (ASF), SRE Forge acts as our &#8220;<strong>Great Librarian</strong>.&#8221; It is a centralized hub designed to systematically harness the talent scattered across our teams, moving us from solo acts to working like a unified beehive.</p>\n\n\n\n<p>SRE Forge operates through a structured JIRA project with three main pillars:</p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>The Idea Forge:</strong> A creative hub to share raw ideas, get feedback, and find collaborators before writing a single line of code.</li>\n\n\n\n<li><strong>Incubation Projects:</strong> A structured path where ideas grow into real, robust projects, passing through strict quality gates overseen by Architects to prevent unmaintainable tools from hitting production.</li>\n\n\n\n<li><strong>The Swiss Army Knife:</strong> A shared toolkit for discovering and utilizing practical, everyday utility scripts.</li>\n</ol>\n\n\n\n<p>The Road Ahead!&nbsp; <strong>चरैवेति चरैवेति ॥</strong></p>\n\n\n\n<p>आस्ते भग आसीनस्योर्ध्वस्तिष्ठति तिष्ठतः । शेते निपद्यमानस्य चराति चरतो भगः ॥<strong> चरैवेति चरैवेति ॥</strong></p>\n\n\n\n<p>The fortune of a person who sits, sits as well. It rises when he rises; it sleeps when he sleeps; it moves only when he moves. </p>\n\n\n\n<p><strong>Therefore, keep moving! Keep moving!</strong></p>\n\n\n\n<figure class=\"wp-block-image size-large\"><span class=\"wp-image-10780 inline-gatsby-image-wrapper gatsby-image-wrapper\" style=\"position:relative;overflow:hidden;max-width:100%;width:1024px\" data-reactroot=\"\"><span aria-hidden=\"true\" style=\"width:100%;padding-bottom:52.734375%\"></span><img aria-hidden=\"true\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAC4jAAAuIwF4pT92AAAClUlEQVR42mNQFatWFa1WEa6yUmv1NO5z1O10M2hz1WtxB5L6zY46tS4Gdc4Gtfb6Fc6GVSaqubJC0bLCMRDEoCJYqSFSrSVcrStWYyRVZ6XQYiPfbCFTbSZTZSJdYSRVbCBdoCWZriKeoC6Zoi6RIgfTCdJspdimxV+jyVupL1Ubr7msmfFwIsN8M7ZaBc5sHYESZZ4MFd5MR8m+IKUFbkpdSnxJsnwxsiIwzf4Gk+3luhpi9uya9ubM7B+LHG/P8bm4sPiam1aXAlu6uXBTt+ed+T4/J9m93xH9f0nInSTjydIC0XIiEJu523xVplza+OPEoi9p9isc5DsSbBaeWfPxxIo3Hkq97cbPui1fOMv1qvFm+yj1b015MyP6uAx/rKwIyOcMruw9cXLztzQ8zbFca8PbGKQx0V640UOuc8+01+tzf3RYPjLmq9GRyrLTrpQRjgxVn3Yg/r+5Uqk4f5icSCxDGMvMheEnOx23OjN0RGnMTDCeFWM83Yi9LN9k98me/8Vu2xTZk7yNW0Mcu2z1S61lao/l/vfQaRHhC5EXiWMIZZxepL5qe+PrQo2dDgyNLmyt3gLdcSqLpzq/nxXx9GjdrxDlGeqCaQay+UB35piuOZrz30A2T0IgHGRzJOPsYKbJDYbnZjj9zpc/nCy1plZr/SSnfSXaeyx4Gmf6Xz1d+L/SYo+zdFeewaYzuf+7Ig5BQhukOYFhXgzj7HDGGWWKx6Y6feq3fF6rejZbZa0jf4MRR5kxd1mtzb6dcb/K7XbP9r5VbrtDTy5LXiQeqFlKMIohiWFBPMO8aKZZwQyTQllnhfPN9+OaZsfWbMVVZ8lda8RTqsGebSJUbiNVoy2SI80TrcCXKC+cICUYqa+QBQC6OOoIMfg1WQAAAABJRU5ErkJggg==\" alt=\"\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition-delay:500ms\"/><picture><source srcSet=\"/static/900d7eb17d02400b45fc23df85c3d6cc/85b06/Beyond-IaC-Info-3-scaled.png 256w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/bc282/Beyond-IaC-Info-3-scaled.png 512w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/f1720/Beyond-IaC-Info-3-scaled.png 1024w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/437a1/Beyond-IaC-Info-3-scaled.png 1536w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/7b24f/Beyond-IaC-Info-3-scaled.png 2048w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/8355f/Beyond-IaC-Info-3-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"/><img sizes=\"(max-width: 1024px) 100vw, 1024px\" srcSet=\"/static/900d7eb17d02400b45fc23df85c3d6cc/85b06/Beyond-IaC-Info-3-scaled.png 256w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/bc282/Beyond-IaC-Info-3-scaled.png 512w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/f1720/Beyond-IaC-Info-3-scaled.png 1024w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/437a1/Beyond-IaC-Info-3-scaled.png 1536w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/7b24f/Beyond-IaC-Info-3-scaled.png 2048w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/8355f/Beyond-IaC-Info-3-scaled.png 2560w\" src=\"/static/900d7eb17d02400b45fc23df85c3d6cc/f1720/Beyond-IaC-Info-3-scaled.png\" alt=\"\" loading=\"eager\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 500ms\"/></picture><noscript><picture><source srcset=\"/static/900d7eb17d02400b45fc23df85c3d6cc/85b06/Beyond-IaC-Info-3-scaled.png 256w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/bc282/Beyond-IaC-Info-3-scaled.png 512w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/f1720/Beyond-IaC-Info-3-scaled.png 1024w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/437a1/Beyond-IaC-Info-3-scaled.png 1536w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/7b24f/Beyond-IaC-Info-3-scaled.png 2048w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/8355f/Beyond-IaC-Info-3-scaled.png 2560w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" /><img loading=\"eager\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"/static/900d7eb17d02400b45fc23df85c3d6cc/85b06/Beyond-IaC-Info-3-scaled.png 256w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/bc282/Beyond-IaC-Info-3-scaled.png 512w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/f1720/Beyond-IaC-Info-3-scaled.png 1024w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/437a1/Beyond-IaC-Info-3-scaled.png 1536w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/7b24f/Beyond-IaC-Info-3-scaled.png 2048w,\n/static/900d7eb17d02400b45fc23df85c3d6cc/8355f/Beyond-IaC-Info-3-scaled.png 2560w\" src=\"/static/900d7eb17d02400b45fc23df85c3d6cc/f1720/Beyond-IaC-Info-3-scaled.png\" alt=\"\" style=\"position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center\"/></picture></noscript></span></figure>\n\n\n\n<p>Now that we have atomic checks, we could build a large repo of atomic SOPs for each of the failures which currently is serving as a stepping stone for automation of fixes for specific categories of failures utilizing the exact same collaborative approach.&nbsp;&nbsp;</p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Closing Thoughts:</strong></h3>\n\n\n\n<p>By hunting down <strong>configuration drift</strong> with TestInfra, we didn&#8217;t just validate our infrastructure—we validated the culture of open collaboration. This transition shifted our mental model from <strong>reactive firefighters</strong> to <strong>proactive gardeners</strong> who cultivate and sustain a resilient infrastructure. TestInfra showed us what happens when we stop reinventing the wheel and start building together; now, any project destined for production across multiple pods must pass through the <strong>SRE Forge lifecycle</strong> and benefit from collective wisdom.</p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Resources &amp; Tooling Mentioned</strong></h3>\n\n\n\n<p>If you are looking to build or enhance your own infrastructure validation and automation pipelines, here are the official links to the open-source tools and frameworks we evaluated and used during our journey:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Testinfra (Pytest-Testinfra):</strong><a href=\"https://testinfra.readthedocs.io/\"> https://testinfra.readthedocs.io/</a></li>\n\n\n\n<li><strong>Pytest:</strong><a href=\"https://docs.pytest.org/\"> https://docs.pytest.org/</a></li>\n\n\n\n<li><strong>ReportPortal:</strong><a href=\"https://reportportal.io/\"> https://reportportal.io/</a></li>\n\n\n\n<li><strong>SaltStack:</strong><a href=\"https://saltproject.io/\"> https://saltproject.io/</a></li>\n\n\n\n<li><strong>Ansible:</strong><a href=\"https://www.ansible.com/\"> https://www.ansible.com/</a></li>\n\n\n\n<li><strong>Molecule (Ansible testing):</strong><a href=\"https://molecule.readthedocs.io/\"> https://molecule.readthedocs.io/</a></li>\n\n\n\n<li><strong>ServerSpec:</strong><a href=\"https://serverspec.org/\"> https://serverspec.org/</a></li>\n\n\n\n<li><strong>InSpec (by Chef):</strong><a href=\"https://www.inspec.io/\"> https://www.inspec.io/</a></li>\n\n\n\n<li><strong>Goss:</strong><a href=\"https://www.google.com/search?q=https://goss.rocks/\"> https://goss.rocks/</a> (or<a href=\"https://github.com/goss-org/goss\"> https://github.com/goss-org/goss</a>)</li>\n\n\n\n<li><strong>Allure Reports:</strong><a href=\"https://allurereport.org/\"> https://allurereport.org/</a></li>\n\n\n\n<li><strong>Sphinx (Documentation):</strong><a href=\"https://www.sphinx-doc.org/\"> https://www.sphinx-doc.org/</a></li>\n</ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pro Tips:</strong></h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No framework or tool will match your exact requirements, find those which you can modify or extend. Keep licensing in the forefront of decisions.&nbsp;</li>\n\n\n\n<li>Categorize your checks based on System Under Test, types of checks (dynamic/run time vs static configs).&nbsp;</li>\n\n\n\n<li>Divide and Rule… Separate your tests, test data (Parameters), Logic (modules ), and target (System Under Test) to keep your code clean.&nbsp;</li>\n\n\n\n<li>Use in code documentation, sphinx (or other doc generation tool)&nbsp; to generate a live documentation website to minimize the learning curve for all your new contributors.</li>\n\n\n\n<li>Separate projects and automated issue tagging in ReportPortal is useful for visualization as well as scheduling the fixes.</li>\n</ul>\n","date":"17 April, 2026","uri":"/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/","categories":{"nodes":[{"name":"Engineering","slug":"engineering"}]},"author":{"node":{"name":"Muktha Tavane","slug":"mukthatavane","description":"Muktha is our Corporate Communications wordsmith with over 7 years of experience in the fintech domain, complemented by additional expertise in retail and entertainment content industries. She crafts in-depth articles, data-driven insights, and strategises content campaigns. She’s also closely involved in PR and manages key media partnerships for PhonePe and its group companies."}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAC4jAAAuIwF4pT92AAAC80lEQVR42i2S60sUYRTG5/+ob30w3Z2Z97zzrjvu7Ozqru5a3i9kQWRYGkG3T0ZgBEGQkRFUaER2J8mCogsUed20csswddXSLE1T192Zd8fVXffWaMFzDocDD4fz8GMQ6tUF4BEEL8AIz08BmsPYL+AAIcF/EoQggB9z82aYxjAKMMDzvYB6Gb04rgfjD6LZx/M/LOYlEwmaiCJZVKv1v/SZmJRMpMiCH8O0gEeIMLBh5vkes+m9U/YBmmS5BbuoyhZVsqoWSXU6ab6LOhxUklWbTTWLCiZBjvvjcEwX7PQBvGMMxu7qyvGztUHgZ3k+cPZM2OuJebsSzRej5eWay01379KuX4i+fRB/3ho/ejBs5AJZ4pzNNgHwkUHII+AvRJhMS1u4cnk1QlP3W6PXLkVGe5Kv7sUP1YZ7niT6niTON0SuN0aHXqaO14W3py8IMIVhUP+5D8Mwy07LcmBxNnn50hoxqc5cergu3N2eGO5IdjxK7N+3kuemoqQ2nYm8vhsnZBmhnxiGdHO/iYwYDTMlxYp/LnnwgOZ00D1VWmGxdqtlfXEo1XQuUlyi6ZscBz1cE+5rT8hSENCMmDnKYPiA+GFDxi895Mmx+Mtn63pOhUWhpvORqc+pzqfxr13J0yfXiopC+fm07WrscXOMQ8sEz5hNowxrfGe3D7sLvm/bNn/sSJj6k99G4p/6YktTqfs31vfuW3l4I+brSr24He94kNDPVpWFjGyACDOAvjJG1pMjDrpt40Z2AZBSU63duRlpuxc9VR+uqNB2V61UVmr1J1ZbGqONDZGSwhBCCsfOGgw+jvvEAPSy3ADLTQCeF0hANCuEKFaJ5ubS0pJQWWlI7/pstVFzlpKZqQBeLnMMiumdW7a+YTbZ7NcDJ8JPCQIEFJu8gYfLRfPdoR3ukNtFC3ZQdx61SqpOHoLFbMu4TAYz0rs3zciDkJfgcQn/RpxfIEqWqMhW1W5Xs+2qzb6BlyVLFbBO+BLGv3h+jENeDJ6/+9mUb2IXpW0AAAAASUVORK5CYII=","aspectRatio":1.5873015873015872,"src":"/static/63436876543243cc7eb59bd61c85f7c1/bc8e0/Beyond-IaC-HEADER-scaled.png","srcSet":"/static/63436876543243cc7eb59bd61c85f7c1/8ac63/Beyond-IaC-HEADER-scaled.png 200w,\n/static/63436876543243cc7eb59bd61c85f7c1/3891b/Beyond-IaC-HEADER-scaled.png 400w,\n/static/63436876543243cc7eb59bd61c85f7c1/bc8e0/Beyond-IaC-HEADER-scaled.png 800w,\n/static/63436876543243cc7eb59bd61c85f7c1/6050d/Beyond-IaC-HEADER-scaled.png 1200w,\n/static/63436876543243cc7eb59bd61c85f7c1/00405/Beyond-IaC-HEADER-scaled.png 1600w,\n/static/63436876543243cc7eb59bd61c85f7c1/a76e0/Beyond-IaC-HEADER-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Aniruddha Thombre, Udeshya Giri, Shivam Pansy Satyendra Tyagi, and Ghanshyam Gupta"}},"moreCategoryBlogs":{"nodes":[{"id":"cG9zdDoxMDczOA==","excerpt":"<p>Infrastructure as Code (IaC) is often treated as the holy grail of Site Reliability Engineering (SRE). We use tools like SaltStack and Ansible, alongside golden images and post-install scripts, to define our ideal state. But here is the hidden secret of infrastructure engineering: IaC dictates how things should be, but it doesn&#8217;t guarantee what actually&hellip; <a class=\"more-link\" href=\"/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/\">Continue reading <span class=\"screen-reader-text\">Beyond IaC: Engineering a solution to Guarantee What Actually Is in Production</span></a></p>\n","uri":"/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/","date":"April 17, 2026","title":"Beyond IaC: Engineering a solution to Guarantee What Actually Is in Production","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAC4jAAAuIwF4pT92AAAC80lEQVR42i2S60sUYRTG5/+ob30w3Z2Z97zzrjvu7Ozqru5a3i9kQWRYGkG3T0ZgBEGQkRFUaER2J8mCogsUed20csswddXSLE1T192Zd8fVXffWaMFzDocDD4fz8GMQ6tUF4BEEL8AIz08BmsPYL+AAIcF/EoQggB9z82aYxjAKMMDzvYB6Gb04rgfjD6LZx/M/LOYlEwmaiCJZVKv1v/SZmJRMpMiCH8O0gEeIMLBh5vkes+m9U/YBmmS5BbuoyhZVsqoWSXU6ab6LOhxUklWbTTWLCiZBjvvjcEwX7PQBvGMMxu7qyvGztUHgZ3k+cPZM2OuJebsSzRej5eWay01379KuX4i+fRB/3ho/ejBs5AJZ4pzNNgHwkUHII+AvRJhMS1u4cnk1QlP3W6PXLkVGe5Kv7sUP1YZ7niT6niTON0SuN0aHXqaO14W3py8IMIVhUP+5D8Mwy07LcmBxNnn50hoxqc5cergu3N2eGO5IdjxK7N+3kuemoqQ2nYm8vhsnZBmhnxiGdHO/iYwYDTMlxYp/LnnwgOZ00D1VWmGxdqtlfXEo1XQuUlyi6ZscBz1cE+5rT8hSENCMmDnKYPiA+GFDxi895Mmx+Mtn63pOhUWhpvORqc+pzqfxr13J0yfXiopC+fm07WrscXOMQ8sEz5hNowxrfGe3D7sLvm/bNn/sSJj6k99G4p/6YktTqfs31vfuW3l4I+brSr24He94kNDPVpWFjGyACDOAvjJG1pMjDrpt40Z2AZBSU63duRlpuxc9VR+uqNB2V61UVmr1J1ZbGqONDZGSwhBCCsfOGgw+jvvEAPSy3ADLTQCeF0hANCuEKFaJ5ubS0pJQWWlI7/pstVFzlpKZqQBeLnMMiumdW7a+YTbZ7NcDJ8JPCQIEFJu8gYfLRfPdoR3ukNtFC3ZQdx61SqpOHoLFbMu4TAYz0rs3zciDkJfgcQn/RpxfIEqWqMhW1W5Xs+2qzb6BlyVLFbBO+BLGv3h+jENeDJ6/+9mUb2IXpW0AAAAASUVORK5CYII=","aspectRatio":1.5873015873015872,"src":"/static/63436876543243cc7eb59bd61c85f7c1/bc8e0/Beyond-IaC-HEADER-scaled.png","srcSet":"/static/63436876543243cc7eb59bd61c85f7c1/8ac63/Beyond-IaC-HEADER-scaled.png 200w,\n/static/63436876543243cc7eb59bd61c85f7c1/3891b/Beyond-IaC-HEADER-scaled.png 400w,\n/static/63436876543243cc7eb59bd61c85f7c1/bc8e0/Beyond-IaC-HEADER-scaled.png 800w,\n/static/63436876543243cc7eb59bd61c85f7c1/6050d/Beyond-IaC-HEADER-scaled.png 1200w,\n/static/63436876543243cc7eb59bd61c85f7c1/00405/Beyond-IaC-HEADER-scaled.png 1600w,\n/static/63436876543243cc7eb59bd61c85f7c1/a76e0/Beyond-IaC-HEADER-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Aniruddha Thombre, Udeshya Giri, Shivam Pansy Satyendra Tyagi, and Ghanshyam Gupta"}},{"id":"cG9zdDoxMDY5MA==","excerpt":"<p>At PhonePe Limited (“PhonePe”), the top banner on our platform’s homepage (the &#8220;masthead&#8221;) isn&#8217;t just an ad slot—it&#8217;s the important real estate we have. However, delivering real-time, personalized recommendations at a scale of hundreds of millions of users presents a complex problem to solve for two reasons: Whether a user is brand new or a&hellip; <a class=\"more-link\" href=\"/optimizing-merchandising-machine-learning-for-real-time-app-experience-and-ltv-maximization/\">Continue reading <span class=\"screen-reader-text\">Optimizing Merchandising: Machine Learning for Real-Time App Experience and LTV Maximization</span></a></p>\n","uri":"/optimizing-merchandising-machine-learning-for-real-time-app-experience-and-ltv-maximization/","date":"February 16, 2026","title":"Optimizing Merchandising: Machine Learning for Real-Time App Experience and LTV Maximization","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAC4jAAAuIwF4pT92AAADBklEQVR42mPQEK3VkGxUVqxXEa5UFa0CIjXhElWhYjWhEh2JEj2pQg3hHDWhDCXBZCBSEIxXEos3kyuSFYqSEY5g0BCrU5ds0FBp0pKoUROtVBet1hSu0BWtkOfJyfHetKP2V5bLWnneZBWhVKBmRaEkeeEYWeFoIAJp1hSu0hCsNJRoMJJq0Bau0hGp0RepNZFsUOHLy/PceGb2r+rE9bKcyapC6WDLgZrjZIWiQUg4kkFfsEFXsMFEvAWIdARqdASrtQWrtQQrtIVL9CXLDaTKtEXyNISzVATTIC5XFE6QF4kBalYWT2QwEWg24muyluiwEGo14G0w5q834q/R563W4i5V4ypQ5spT4s6U50lX4odoTgHaLMUfAURywjEM1jwdljxtvvwzynQOugn2mvE2GbBVx1hN3zjz6uL289Mrz/Xln+nOv2Sn3SHHE68onKTLn1uhuz9QpV+cP5TBmavbnqszhn/eBOfDfiKT3ES6HAV7a+PX/v///8Otf2fX/Duy5teT4/9DnWfJc6aYqpZbiVY1GG3z12gX5wtj8GSf4MHe78k9wZWt25m9y5Wny5qtOcpwxryWoxOKD7ak7q2K2V0ef8BatUmJN1VNJF1ZOFmGN1qSPxwY4AyBLFMCmCcHcU3z45rsxdrnztblzNFhzdakw1ChwVCkxpCrypChwJCiwZOhJpgJ9LOCQJKWRJqSaLyMYDRDONOsUIbp8QILogXm+TJN9Gbt8wDpb/PR7Aky7vXS7nLT6LBTbtTiz1EXyFQWTFUUSFIVSlEQjpMRimaIZZyXyLg4lnVOFNvsYOap/myTvdn6nDhal04+d+vo71ObP+6f+7Wv6pwqT7qWYLaKYLqqcKquTK60YBQwkTEkMSxIZlwYyzAnmml2OMuMYLapvqwT3Hnb5zeeu7jw/8293/4+/394yx0l9nRtoVwVoXSgtw1kC+QFExTFM0CagSiRYX4M4+wIxhkgy1kmubC3R0dMzctblpG+KDtrZVjATE3ebE1+aFKR549XEIqXF00GAK/U7tOfAxm6AAAAAElFTkSuQmCC","aspectRatio":1.5873015873015872,"src":"/static/53b94435b8d140eec0522e246b3cec75/bc8e0/Machine-Learning-System-FINAL-1-scaled.png","srcSet":"/static/53b94435b8d140eec0522e246b3cec75/8ac63/Machine-Learning-System-FINAL-1-scaled.png 200w,\n/static/53b94435b8d140eec0522e246b3cec75/3891b/Machine-Learning-System-FINAL-1-scaled.png 400w,\n/static/53b94435b8d140eec0522e246b3cec75/bc8e0/Machine-Learning-System-FINAL-1-scaled.png 800w,\n/static/53b94435b8d140eec0522e246b3cec75/6050d/Machine-Learning-System-FINAL-1-scaled.png 1200w,\n/static/53b94435b8d140eec0522e246b3cec75/00405/Machine-Learning-System-FINAL-1-scaled.png 1600w,\n/static/53b94435b8d140eec0522e246b3cec75/a76e0/Machine-Learning-System-FINAL-1-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Rohit Walimbe, Pramod Patil, Kunal Bhadra, Nrutya Doshi, Kedar Swadi"}},{"id":"cG9zdDo5NzM2","excerpt":"<p>At PhonePe’s scale, handling millions of transactions and user interactions every hour requires an analytics platform that’s not just fast, but instant. When every millisecond counts — both for user experience and incident detection — batch processing simply doesn’t cut it. Enter Garfield, PhonePe’s custom-built, high-throughput event analytics platform, engineered around the power of Apache Druid. Garfield is the&hellip; <a class=\"more-link\" href=\"/powering-real-time-decisions-with-phonepes-garfield-platform-and-apache-druid/\">Continue reading <span class=\"screen-reader-text\">Powering Real-Time Decisions with PhonePe’s Garfield Platform and Apache Druid</span></a></p>\n","uri":"/powering-real-time-decisions-with-phonepes-garfield-platform-and-apache-druid/","date":"November 04, 2025","title":"Powering Real-Time Decisions with PhonePe’s Garfield Platform and Apache Druid","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAC4jAAAuIwF4pT92AAADt0lEQVR42g3PfUzUBRzH8d/ClkinAXc8nSgMEY/ogZghCFNAUQHl4XgIOOAQ7nh2Mh4EuRAiIJjC8WiCgIDiLHqwGscapMXWdG25WY02hyVhCgrI4xEPvvv98frj+89734/gLivnfdFReRMBcj17bIpwsCzAWVaMQqrDTVrKe9KP2GtegdfWSgLM6knY3ku0TRshJo1EvtpK9ObLxJt0Eie5guArq+KI9QVCrfUoZfWEWdZywr0FN8cKFJYl7JYUojAr4l3TEvaZnePA5o859lotxzZVEyLUoBQuECWGY19pJcr0UwSlXQuJdu1k7uimwOUGGbaX0HlexWdnJXZmuYQevEZS5ADqCAOJJwaJOWog3M9AyH4DQR6DBO8ZJMx2QPzuW1I23UTQWHeTZd1L8a7PaQv5Gb3HAHlWraQ5NJJ64isuXlmjs2uD9opJ6jrWKWl/yakLa2h1K4QVGglOniPMbwq1zV/kmf6B0Js5xvXccVoCxdg7Brq8b/OZ6lduN80zVL/GxfYVmluWaaibo7Jhifw6I2kVi8QVzBGcNkO46hlJRx6j2jJKjnAP4acOGOmCH5pW6Qn8heuH7nC3c4nr+nUas+dpqjfS3Gyk9ryRc9VGPsx9SlruNAn5C8SnzxIcMkn03n9IsX1Alsl9hCExNNS4yvDlDfq1D/ky7D4j3UZqzi6jz5inRrdEbdkSZWeWKM43UqCZRKudJjZ1DlXsNFH+T0jwGCdb8ZB8+SjCj5c2GLn0EkOHkY6cMQyxY9zrW6FPv0ZD+gvKNAvoUhfRaRfI086TId6apHk0cdMkhk4R4/svCW6PSLV/QPrrvyPcqDDyReUyXRnPaIsa57fiKUYrJ7hVN81wAxRFzFEYPsuZiBlOx82S/cEM6vDn5CmnyAl5SoLvBJnej1DJ/kRjJk4uylqgVDOLPuU5d0pfsNS7Qe++axTurCb56FUKDy9TELjB6aB1yqNWKVetcjL0P5KCjKj8FlB7zqJ2eozW4m9KZBPiZN1z7lYt8qRlhcnzk3wTM0S53Sd4mJ/E3FSJj2MTgbv7CNjdg7+ilwOuPfgoutnv0oWXUyfe8jZ83foJeLMff0kzwnfHv+eWcpivD9+kwamJAokOH6sM5LJ4dlmpkb8RhXxbJNsl0aIY7EU7RI5b43G2TMR+SwQHPfV4Hb+CrUSJkGV2llOuNWjfriJ0Ww6utinYSuNxskrCxToZB2kSjpZqUTJOFhpRKk6WWtyl+QS4lONsreUtSToKi0zspQn8DzeSbq8tXUexAAAAAElFTkSuQmCC","aspectRatio":1.5873015873015872,"src":"/static/0a2eb436f64553e845347bea12e6331a/bc8e0/Garfield-Tech-Blog-Icon-02-scaled.png","srcSet":"/static/0a2eb436f64553e845347bea12e6331a/8ac63/Garfield-Tech-Blog-Icon-02-scaled.png 200w,\n/static/0a2eb436f64553e845347bea12e6331a/3891b/Garfield-Tech-Blog-Icon-02-scaled.png 400w,\n/static/0a2eb436f64553e845347bea12e6331a/bc8e0/Garfield-Tech-Blog-Icon-02-scaled.png 800w,\n/static/0a2eb436f64553e845347bea12e6331a/6050d/Garfield-Tech-Blog-Icon-02-scaled.png 1200w,\n/static/0a2eb436f64553e845347bea12e6331a/00405/Garfield-Tech-Blog-Icon-02-scaled.png 1600w,\n/static/0a2eb436f64553e845347bea12e6331a/a76e0/Garfield-Tech-Blog-Icon-02-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Nitish Goyal"}},{"id":"cG9zdDo3OTY1","excerpt":"<p>In the rapidly evolving FinTech sector, PhonePe Private Limited, an India-born leader in financial services, stands out for its innovative range of products and services. Offering everything from UPI transactions and bill payments to stock market investments, personal finance management, and merchant payment solutions, PhonePe caters to millions of consumers and businesses. The platform is&hellip; <a class=\"more-link\" href=\"/vulnerability-management-risk-scoring-for-business-services/\">Continue reading <span class=\"screen-reader-text\">Vulnerability Management &amp; Risk Scoring for Business Services</span></a></p>\n","uri":"/vulnerability-management-risk-scoring-for-business-services/","date":"January 22, 2025","title":"Vulnerability Management & Risk Scoring for Business Services","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjo1OA==","name":"Sampurna Mitra"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGElEQVR42i2TbU9bZRzG+838Bia+8QtoYmKWKJkK6zYYCAMqlPHQDjboKGW09IGeHkpbWmihs5Qnt+mSRY3ZC18QNzWZLkJOT+/75zW2F3d7enru3339r+s6geRNQ/pby8akxZm2FBcs2yuWesbSdC3tsuW4ajnROt7W2rIc5C2tlGXvgaUasZS0171tKYxYAmsDlpSA2QlLftaydd9SWbXsvAe2SpZDgU7rcFQxtDe1HKgnfMpRj9pd7QkLOCrgsICJQcuqLpIhQWf0x6JOXfZ5lOvwfcXy5MDy/DH8fGz49RSetyxHLuytezSW/qE6ZyhPvVOYFysQG7KsSXJSN1Oz4Mx7rIT+pFX0OGzAs7rHzvBLHnz6gtne32iUX/NkGxopj937r6nMdClJYem79wrvadzYuCWumw8jkF/0ub16Rt69oKUxT5xzHn70AmfgDz754IhM/CU/7sB+SsrmPKpRcwksjimDIUNgTsB5/VgY77IY9knFLJtJqMj4uoL46bDLxme/kwue0ffxU072Lzgtw6N1hZKA2ryenzA4w10Kb0cO62Nm9O3qEpn0icvD5KrBFbBWNjxuK4z4v8x8+Avu7Cue7UG7oMAE3F2S33OQC3VY+PqM9DWPwOgtS0izT8mDqFK+p9okEgpoQw8rlIOk4QdV5GmmQ1v/72iaAwH3k7rW4RX5vhWCVPCC7PUOgYGbliGpHJXKCXkRXYBYXCpVG7eosVWZZsHQkuKm4C1H33nDrqpV0+HO2Bsygx2NK6XXNXJf0BK8YbmhG5Fwh9jI30Q1yopUpbW5KGCx7OMW1LmST1NFb6YtjZh8jmqSoXMy/f4lLPOlgD3fGHoF7Ou3jIwZ7oQ9pmX0khSs5dStolKUl1Wtmq6becjkz7lb+IvSNLjjUqa9672GQo9SvnJVML0t1zR2r9bgJEzq5PllealqpDM+Rb1u23pjqptKNgvJ7H/cyb2iNKWajRg2BvScgJmrAn4u4JWvLD1Bcwm8pU6GZH5E9VmW8Wl557hSKVhFFlSzSleh1aJSJ89zql2u/x1w7QvD/5+tTZm3iQNCAAAAAElFTkSuQmCC","aspectRatio":1.5873015873015872,"src":"/static/1f12e51f2ee12b1287d31e15071a56ab/bc8e0/Security-Risk-Vulnerability-Management-blog-icon.png","srcSet":"/static/1f12e51f2ee12b1287d31e15071a56ab/8ac63/Security-Risk-Vulnerability-Management-blog-icon.png 200w,\n/static/1f12e51f2ee12b1287d31e15071a56ab/3891b/Security-Risk-Vulnerability-Management-blog-icon.png 400w,\n/static/1f12e51f2ee12b1287d31e15071a56ab/bc8e0/Security-Risk-Vulnerability-Management-blog-icon.png 800w,\n/static/1f12e51f2ee12b1287d31e15071a56ab/6c305/Security-Risk-Vulnerability-Management-blog-icon.png 858w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Arnab Roy"}},{"id":"cG9zdDo2MDIx","excerpt":"<p>&lt;tl;dr&gt; &#8211; Elasticsearch Upgrade for a cluster takes more than 10hrs by 2SREs manually and entails considerable back and forth. &#8211; SRE has automated the entire flow for rolling upgrades without downtime along with strict guardrails, killswitch, regular slack bots. &#8211; Automation has been executed in prod more than 10 times. &#8211; Now each cluster&hellip; <a class=\"more-link\" href=\"/all-an-sre-needs-to-know-automation-era-in-distributed-datastores/\">Continue reading <span class=\"screen-reader-text\">All an SRE needs to know : Automation ERA in Distributed Datastores</span></a></p>\n","uri":"/all-an-sre-needs-to-know-automation-era-in-distributed-datastores/","date":"December 24, 2024","title":"All an SRE needs to know : Automation ERA in Distributed Datastores","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDAf/EABYBAQEBAAAAAAAAAAAAAAAAAAMBBf/aAAwDAQACEAMQAAABmss0ZMQRv//EABoQAQABBQAAAAAAAAAAAAAAAAECABARIUH/2gAIAQEAAQUC7MAreZSW3//EABYRAQEBAAAAAAAAAAAAAAAAAAABEv/aAAgBAwEBPwGRl//EABYRAQEBAAAAAAAAAAAAAAAAABEBEP/aAAgBAgEBPwErn//EABkQAAEFAAAAAAAAAAAAAAAAABAAAjFCgf/aAAgBAQAGPwJW1pkf/8QAGxABAAMAAwEAAAAAAAAAAAAAAQARMRAhkUH/2gAIAQEAAT8h3T38C5eD2kx2CLXAKV7x/9oADAMBAAIAAwAAABBgz//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAwEBPxDZJf/EABcRAAMBAAAAAAAAAAAAAAAAAAABESH/2gAIAQIBAT8QyR4RH//EABwQAQABBQEBAAAAAAAAAAAAAAERACFBUXGREP/aAAgBAQABPxCcoQLx0M8pSU5wPq2pZJlfyoRZqLQ7mmqppb8//9k=","aspectRatio":1.5873015873015872,"src":"/static/943215de9fc55b98172acd160da87c0d/2f1b1/Elasticsearch-Blog-icon-1.jpg","srcSet":"/static/943215de9fc55b98172acd160da87c0d/fd013/Elasticsearch-Blog-icon-1.jpg 200w,\n/static/943215de9fc55b98172acd160da87c0d/25252/Elasticsearch-Blog-icon-1.jpg 400w,\n/static/943215de9fc55b98172acd160da87c0d/2f1b1/Elasticsearch-Blog-icon-1.jpg 800w,\n/static/943215de9fc55b98172acd160da87c0d/c787e/Elasticsearch-Blog-icon-1.jpg 858w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Core Contributors : Merwin Joseph Biby, Ritik Singhal & Mannoj Saravanan"}}]},"moreBlogs":{"nodes":[{"id":"cG9zdDoxMDczOA==","excerpt":"<p>Infrastructure as Code (IaC) is often treated as the holy grail of Site Reliability Engineering (SRE). We use tools like SaltStack and Ansible, alongside golden images and post-install scripts, to define our ideal state. But here is the hidden secret of infrastructure engineering: IaC dictates how things should be, but it doesn&#8217;t guarantee what actually&hellip; <a class=\"more-link\" href=\"/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/\">Continue reading <span class=\"screen-reader-text\">Beyond IaC: Engineering a solution to Guarantee What Actually Is in Production</span></a></p>\n","uri":"/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/","date":"April 17, 2026","title":"Beyond IaC: Engineering a solution to Guarantee What Actually Is in Production","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAC4jAAAuIwF4pT92AAAC80lEQVR42i2S60sUYRTG5/+ob30w3Z2Z97zzrjvu7Ozqru5a3i9kQWRYGkG3T0ZgBEGQkRFUaER2J8mCogsUed20csswddXSLE1T192Zd8fVXffWaMFzDocDD4fz8GMQ6tUF4BEEL8AIz08BmsPYL+AAIcF/EoQggB9z82aYxjAKMMDzvYB6Gb04rgfjD6LZx/M/LOYlEwmaiCJZVKv1v/SZmJRMpMiCH8O0gEeIMLBh5vkes+m9U/YBmmS5BbuoyhZVsqoWSXU6ab6LOhxUklWbTTWLCiZBjvvjcEwX7PQBvGMMxu7qyvGztUHgZ3k+cPZM2OuJebsSzRej5eWay01379KuX4i+fRB/3ho/ejBs5AJZ4pzNNgHwkUHII+AvRJhMS1u4cnk1QlP3W6PXLkVGe5Kv7sUP1YZ7niT6niTON0SuN0aHXqaO14W3py8IMIVhUP+5D8Mwy07LcmBxNnn50hoxqc5cergu3N2eGO5IdjxK7N+3kuemoqQ2nYm8vhsnZBmhnxiGdHO/iYwYDTMlxYp/LnnwgOZ00D1VWmGxdqtlfXEo1XQuUlyi6ZscBz1cE+5rT8hSENCMmDnKYPiA+GFDxi895Mmx+Mtn63pOhUWhpvORqc+pzqfxr13J0yfXiopC+fm07WrscXOMQ8sEz5hNowxrfGe3D7sLvm/bNn/sSJj6k99G4p/6YktTqfs31vfuW3l4I+brSr24He94kNDPVpWFjGyACDOAvjJG1pMjDrpt40Z2AZBSU63duRlpuxc9VR+uqNB2V61UVmr1J1ZbGqONDZGSwhBCCsfOGgw+jvvEAPSy3ADLTQCeF0hANCuEKFaJ5ubS0pJQWWlI7/pstVFzlpKZqQBeLnMMiumdW7a+YTbZ7NcDJ8JPCQIEFJu8gYfLRfPdoR3ukNtFC3ZQdx61SqpOHoLFbMu4TAYz0rs3zciDkJfgcQn/RpxfIEqWqMhW1W5Xs+2qzb6BlyVLFbBO+BLGv3h+jENeDJ6/+9mUb2IXpW0AAAAASUVORK5CYII=","aspectRatio":1.5873015873015872,"src":"/static/63436876543243cc7eb59bd61c85f7c1/bc8e0/Beyond-IaC-HEADER-scaled.png","srcSet":"/static/63436876543243cc7eb59bd61c85f7c1/8ac63/Beyond-IaC-HEADER-scaled.png 200w,\n/static/63436876543243cc7eb59bd61c85f7c1/3891b/Beyond-IaC-HEADER-scaled.png 400w,\n/static/63436876543243cc7eb59bd61c85f7c1/bc8e0/Beyond-IaC-HEADER-scaled.png 800w,\n/static/63436876543243cc7eb59bd61c85f7c1/6050d/Beyond-IaC-HEADER-scaled.png 1200w,\n/static/63436876543243cc7eb59bd61c85f7c1/00405/Beyond-IaC-HEADER-scaled.png 1600w,\n/static/63436876543243cc7eb59bd61c85f7c1/a76e0/Beyond-IaC-HEADER-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Aniruddha Thombre, Udeshya Giri, Shivam Pansy Satyendra Tyagi, and Ghanshyam Gupta"}},{"id":"cG9zdDoxMDY5MA==","excerpt":"<p>At PhonePe Limited (“PhonePe”), the top banner on our platform’s homepage (the &#8220;masthead&#8221;) isn&#8217;t just an ad slot—it&#8217;s the important real estate we have. However, delivering real-time, personalized recommendations at a scale of hundreds of millions of users presents a complex problem to solve for two reasons: Whether a user is brand new or a&hellip; <a class=\"more-link\" href=\"/optimizing-merchandising-machine-learning-for-real-time-app-experience-and-ltv-maximization/\">Continue reading <span class=\"screen-reader-text\">Optimizing Merchandising: Machine Learning for Real-Time App Experience and LTV Maximization</span></a></p>\n","uri":"/optimizing-merchandising-machine-learning-for-real-time-app-experience-and-ltv-maximization/","date":"February 16, 2026","title":"Optimizing Merchandising: Machine Learning for Real-Time App Experience and LTV Maximization","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAC4jAAAuIwF4pT92AAADBklEQVR42mPQEK3VkGxUVqxXEa5UFa0CIjXhElWhYjWhEh2JEj2pQg3hHDWhDCXBZCBSEIxXEos3kyuSFYqSEY5g0BCrU5ds0FBp0pKoUROtVBet1hSu0BWtkOfJyfHetKP2V5bLWnneZBWhVKBmRaEkeeEYWeFoIAJp1hSu0hCsNJRoMJJq0Bau0hGp0RepNZFsUOHLy/PceGb2r+rE9bKcyapC6WDLgZrjZIWiQUg4kkFfsEFXsMFEvAWIdARqdASrtQWrtQQrtIVL9CXLDaTKtEXyNISzVATTIC5XFE6QF4kBalYWT2QwEWg24muyluiwEGo14G0w5q834q/R563W4i5V4ypQ5spT4s6U50lX4odoTgHaLMUfAURywjEM1jwdljxtvvwzynQOugn2mvE2GbBVx1hN3zjz6uL289Mrz/Xln+nOv2Sn3SHHE68onKTLn1uhuz9QpV+cP5TBmavbnqszhn/eBOfDfiKT3ES6HAV7a+PX/v///8Otf2fX/Duy5teT4/9DnWfJc6aYqpZbiVY1GG3z12gX5wtj8GSf4MHe78k9wZWt25m9y5Wny5qtOcpwxryWoxOKD7ak7q2K2V0ef8BatUmJN1VNJF1ZOFmGN1qSPxwY4AyBLFMCmCcHcU3z45rsxdrnztblzNFhzdakw1ChwVCkxpCrypChwJCiwZOhJpgJ9LOCQJKWRJqSaLyMYDRDONOsUIbp8QILogXm+TJN9Gbt8wDpb/PR7Aky7vXS7nLT6LBTbtTiz1EXyFQWTFUUSFIVSlEQjpMRimaIZZyXyLg4lnVOFNvsYOap/myTvdn6nDhal04+d+vo71ObP+6f+7Wv6pwqT7qWYLaKYLqqcKquTK60YBQwkTEkMSxIZlwYyzAnmml2OMuMYLapvqwT3Hnb5zeeu7jw/8293/4+/394yx0l9nRtoVwVoXSgtw1kC+QFExTFM0CagSiRYX4M4+wIxhkgy1kmubC3R0dMzctblpG+KDtrZVjATE3ebE1+aFKR549XEIqXF00GAK/U7tOfAxm6AAAAAElFTkSuQmCC","aspectRatio":1.5873015873015872,"src":"/static/53b94435b8d140eec0522e246b3cec75/bc8e0/Machine-Learning-System-FINAL-1-scaled.png","srcSet":"/static/53b94435b8d140eec0522e246b3cec75/8ac63/Machine-Learning-System-FINAL-1-scaled.png 200w,\n/static/53b94435b8d140eec0522e246b3cec75/3891b/Machine-Learning-System-FINAL-1-scaled.png 400w,\n/static/53b94435b8d140eec0522e246b3cec75/bc8e0/Machine-Learning-System-FINAL-1-scaled.png 800w,\n/static/53b94435b8d140eec0522e246b3cec75/6050d/Machine-Learning-System-FINAL-1-scaled.png 1200w,\n/static/53b94435b8d140eec0522e246b3cec75/00405/Machine-Learning-System-FINAL-1-scaled.png 1600w,\n/static/53b94435b8d140eec0522e246b3cec75/a76e0/Machine-Learning-System-FINAL-1-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Rohit Walimbe, Pramod Patil, Kunal Bhadra, Nrutya Doshi, Kedar Swadi"}},{"id":"cG9zdDo5NzM2","excerpt":"<p>At PhonePe’s scale, handling millions of transactions and user interactions every hour requires an analytics platform that’s not just fast, but instant. When every millisecond counts — both for user experience and incident detection — batch processing simply doesn’t cut it. Enter Garfield, PhonePe’s custom-built, high-throughput event analytics platform, engineered around the power of Apache Druid. Garfield is the&hellip; <a class=\"more-link\" href=\"/powering-real-time-decisions-with-phonepes-garfield-platform-and-apache-druid/\">Continue reading <span class=\"screen-reader-text\">Powering Real-Time Decisions with PhonePe’s Garfield Platform and Apache Druid</span></a></p>\n","uri":"/powering-real-time-decisions-with-phonepes-garfield-platform-and-apache-druid/","date":"November 04, 2025","title":"Powering Real-Time Decisions with PhonePe’s Garfield Platform and Apache Druid","categories":{"nodes":[{"slug":"engineering","id":"dGVybTo3","name":"Engineering"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAC4jAAAuIwF4pT92AAADt0lEQVR42g3PfUzUBRzH8d/ClkinAXc8nSgMEY/ogZghCFNAUQHl4XgIOOAQ7nh2Mh4EuRAiIJjC8WiCgIDiLHqwGscapMXWdG25WY02hyVhCgrI4xEPvvv98frj+89734/gLivnfdFReRMBcj17bIpwsCzAWVaMQqrDTVrKe9KP2GtegdfWSgLM6knY3ku0TRshJo1EvtpK9ObLxJt0Eie5guArq+KI9QVCrfUoZfWEWdZywr0FN8cKFJYl7JYUojAr4l3TEvaZnePA5o859lotxzZVEyLUoBQuECWGY19pJcr0UwSlXQuJdu1k7uimwOUGGbaX0HlexWdnJXZmuYQevEZS5ADqCAOJJwaJOWog3M9AyH4DQR6DBO8ZJMx2QPzuW1I23UTQWHeTZd1L8a7PaQv5Gb3HAHlWraQ5NJJ64isuXlmjs2uD9opJ6jrWKWl/yakLa2h1K4QVGglOniPMbwq1zV/kmf6B0Js5xvXccVoCxdg7Brq8b/OZ6lduN80zVL/GxfYVmluWaaibo7Jhifw6I2kVi8QVzBGcNkO46hlJRx6j2jJKjnAP4acOGOmCH5pW6Qn8heuH7nC3c4nr+nUas+dpqjfS3Gyk9ryRc9VGPsx9SlruNAn5C8SnzxIcMkn03n9IsX1Alsl9hCExNNS4yvDlDfq1D/ky7D4j3UZqzi6jz5inRrdEbdkSZWeWKM43UqCZRKudJjZ1DlXsNFH+T0jwGCdb8ZB8+SjCj5c2GLn0EkOHkY6cMQyxY9zrW6FPv0ZD+gvKNAvoUhfRaRfI086TId6apHk0cdMkhk4R4/svCW6PSLV/QPrrvyPcqDDyReUyXRnPaIsa57fiKUYrJ7hVN81wAxRFzFEYPsuZiBlOx82S/cEM6vDn5CmnyAl5SoLvBJnej1DJ/kRjJk4uylqgVDOLPuU5d0pfsNS7Qe++axTurCb56FUKDy9TELjB6aB1yqNWKVetcjL0P5KCjKj8FlB7zqJ2eozW4m9KZBPiZN1z7lYt8qRlhcnzk3wTM0S53Sd4mJ/E3FSJj2MTgbv7CNjdg7+ilwOuPfgoutnv0oWXUyfe8jZ83foJeLMff0kzwnfHv+eWcpivD9+kwamJAokOH6sM5LJ4dlmpkb8RhXxbJNsl0aIY7EU7RI5b43G2TMR+SwQHPfV4Hb+CrUSJkGV2llOuNWjfriJ0Ww6utinYSuNxskrCxToZB2kSjpZqUTJOFhpRKk6WWtyl+QS4lONsreUtSToKi0zspQn8DzeSbq8tXUexAAAAAElFTkSuQmCC","aspectRatio":1.5873015873015872,"src":"/static/0a2eb436f64553e845347bea12e6331a/bc8e0/Garfield-Tech-Blog-Icon-02-scaled.png","srcSet":"/static/0a2eb436f64553e845347bea12e6331a/8ac63/Garfield-Tech-Blog-Icon-02-scaled.png 200w,\n/static/0a2eb436f64553e845347bea12e6331a/3891b/Garfield-Tech-Blog-Icon-02-scaled.png 400w,\n/static/0a2eb436f64553e845347bea12e6331a/bc8e0/Garfield-Tech-Blog-Icon-02-scaled.png 800w,\n/static/0a2eb436f64553e845347bea12e6331a/6050d/Garfield-Tech-Blog-Icon-02-scaled.png 1200w,\n/static/0a2eb436f64553e845347bea12e6331a/00405/Garfield-Tech-Blog-Icon-02-scaled.png 1600w,\n/static/0a2eb436f64553e845347bea12e6331a/a76e0/Garfield-Tech-Blog-Icon-02-scaled.png 2560w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Nitish Goyal"}},{"id":"cG9zdDo5Njcw","excerpt":"<p>In today&#8217;s diverse technological landscape, the ability to create applications that seamlessly operate across multiple platforms is a significant advantage. At Pincode, our seller app, was initially created using Android SDKs with Compose UI in Kotlin, and catered exclusively to Android users. Recognizing the need to support sellers who prefer managing their activities (such as&hellip; <a class=\"more-link\" href=\"/pincode-migration-journey-with-compose-multiplatform/\">Continue reading <span class=\"screen-reader-text\">Pincode Migration Journey with Compose Multiplatform</span></a></p>\n","uri":"/pincode-migration-journey-with-compose-multiplatform/","date":"August 04, 2025","title":"Pincode Migration Journey with Compose Multiplatform","categories":{"nodes":[{"slug":"mobile","id":"dGVybToyNQ==","name":"Mobile"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADWElEQVR42iWUy28bZRTF/TewY0PiR+KM4/g19vid+JXUoVRp+kpLVVEJJCokJHZUSIgdC1h0E5CqKlWpBEI0oRElCmlVVAqWoBsoXTSgRIUQiBM74xmPHZKQ5Mf1ZHGlT5r7nXu+c84dh9s5i9v5JYr3G8LhJ4RCS4TVVdREjUhIJxJpEIs2iKoN1MgmkfCG9PxFuNMXeoyiLKD453F338btmsXhkoPSe4e49iuh4B+E/FVi6QbJkkkqblLKN0mnTbuSCRNNM1FVXXrXCHf6gz8Tin0rwHM2qMPZNSNTKyTifxJN/k1yyCCpSSUMzp20eO/SNsOlJiPDTQoFXYB1GS7A8oJQ7JmwXCYS/ZFAcP6Qocf9FbnSb2hqnUD+J9ITy2SSbfLCsCQgw1IlG6zJ4KBJLtsgEljn7FiVY6PLwuyZsHzCgH+OHo8A+v33yZX/IShNCU0nk9Ep5yzGjjZ5950trny4zceTO0xdk5ra4ey5FtlUnbS2gRbeFN3XpZZQ+u7aXjhC0QqZYRE6UCeVapLLm4yVLV55uc3VK7vMfbHH40f7rK0csN0+4LVX2+RElnzOIJE0Ra66GLeCT3mAyzmDYyBQIRqryodNAaxRLDYZHW1y4UKLyQ92uXVjj8r9fZaf7rNeO2Dqkx2Oj1nkZXA23TGow3KVft9DYSiAPuWhTFizI9ERvGQDWpw/32L6s10qD/ZYWvwPowY3pte5KvXWm9sy3KAoumpRXe7W8PsqwnAaR1/PPYLKCmq4YUejUDA5+qLFyRMWr19qc/nyFgsLFpMf/cvN620+v9nm4kXRMWvYoKrk1B96hMc7S6/7Do5I7BdG37CIi3uduBRyukSkwfHxFifGLc6canFa4nPmtMXExBbj421GRixyOZN4XEKvNnmu+22ed1/D5/0BR7qwyPtfH0iQDWLCcrhoiINVivlN+/IxAR08ZYpuLakmR8q6PLVBJq3b7NRInR7fDF3uT/H2zONQeu+iBb+XSZ2QNmQTDLIZk0SkSja+wYgYNPiSQfnIFvniIsrAFEr/dfoHvhOZLMng73g983g6K+ySTXE5b9P1wi28vfcEcFXcPtyEbNYkk9Ip5DvrZ9rBHhoSWZKSCHVN9lnyJzvdJ4Rc3TMc/hNm+R9mPHRyORI6zQAAAABJRU5ErkJggg==","aspectRatio":1.5873015873015872,"src":"/static/29c64ada6398ba216949888ead506231/bc8e0/Pincode-Multiplatform_NewUi_blog-copy-6-1.png","srcSet":"/static/29c64ada6398ba216949888ead506231/8ac63/Pincode-Multiplatform_NewUi_blog-copy-6-1.png 200w,\n/static/29c64ada6398ba216949888ead506231/3891b/Pincode-Multiplatform_NewUi_blog-copy-6-1.png 400w,\n/static/29c64ada6398ba216949888ead506231/bc8e0/Pincode-Multiplatform_NewUi_blog-copy-6-1.png 800w,\n/static/29c64ada6398ba216949888ead506231/6c305/Pincode-Multiplatform_NewUi_blog-copy-6-1.png 858w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Chethan N, Pincode Business App Team"}},{"id":"cG9zdDo5NDY2","excerpt":"<p>Problem Statement PhonePe, as a payments platform, has an essential feature that allows users to check all past transactions. When payments are made to businesses/merchants, users have access to a historical view of all such transactions. For peer to peer transactions, however, users usually want to see a timeline of all transactions for a particular&hellip; <a class=\"more-link\" href=\"/pubsub-at-scale-phonepes-bullhorn/\">Continue reading <span class=\"screen-reader-text\">PubSub at Scale: PhonePe’s “Bullhorn”</span></a></p>\n","uri":"/pubsub-at-scale-phonepes-bullhorn/","date":"July 02, 2025","title":"PubSub at Scale: PhonePe’s “Bullhorn”","categories":{"nodes":[{"slug":"architecture","id":"dGVybToxOQ==","name":"Architecture"}]},"author":{"node":{"id":"dXNlcjoyMg==","name":"Muktha Tavane"}},"featuredImage":{"node":{"altText":"","localFile":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADXUlEQVR42jXSWVNbBRyG8XwKx8/ghV/BCy8ctbUUCMEWugCtywQhCTQlEiAkEHaCZIUshJZQUTuDdpypF3aqA44X2l45gzO0FEooJftyzslCH//V8eK5OXPO77xn0fVsnNK7for5Vp3+aJ2boSqDixojsxpOt8aEQ2N2UMNjVfGaNAJGjeVPNKIdFeKXq9xuq7F+ocbXhjobLXV0pkQd81qdvniNG+EqA4EKgwsCTqu4xlTGBlXc/QrTvQoLRhX/5/+DGqsCrgmY+LjKHYOg+ho6y2oVU7RKX7gi6zQGvRqOeRXHjMKoWyEga7+JVlj3yMWuGmGzSuiaKqB0USPWorEmYKJFUH0VXX9ExeRXsfgUbi4qDCyWsM8XcVqLONrzhPqK/Lig8O1kgY2ZLFE5HuxUCF9SWblSZvnTPCsNgrZWSDRX0Fl9Rfq8clJI4UGiiieaw+pL43o/y/Abx6x05FluK2B++2/Gr+4QsuQIdZYJX5Vay8RaFVZbVG5Jt5s0dDZPDst0lrtxjaPtU34Q1DGRw3Uuje3NY367o/FzRF7HWy9lWYG4rUSwo0iks0SkvcTKRYW4QdIL3Kyg+3Iyhc2dwj2VxR8oMzNTwOlKMfLhCfPvpPnrYY2t9TpTH6Txd2WJ2wt42/L4DQWWWouEDSXiFwTWS40ldEPOY4Yluz2JtWuHEdM+40MnjHUfM29O8WBT4c+fqrIuz1eGDDPvpYl25fklphC7UmSpuUDieomYvkj0fBHdiEAj9kOG+w8YuraDs/cZYzde4LYkGf0syfpCht/vqcR68vjaM0y9m8LfkiFhycsjy0drknfcmCfc8F86h3Wf1805k4zbkoxZDnGbnjPVm2Sy6wXf+wo82izza1QlLsuj1izBy1m8ggb0WULNOYLnc4TPyg3OCDhqeYqrbw+f85Bx8x5O4x5zsvZ+OM9WrMqj717xWNpaesXDYJ3tlTp/3K2xvVaWfzGDryEjYJZIQ46YpHP2PsEljXbvMmvZJ+I5Ysi2y7zxgODAIWujKe55itz3KmxOlNiw54gb0yxdko/ULDXK0tfoOelsBp2rR8AvdhmTJrqfMG3aY9z4lMnre7g7njFx+YCp9ufMtSeZNRwxpz/G0/SSxaYTfP+CkoCBj9IEzqT5ByHPA6yEAO4FAAAAAElFTkSuQmCC","aspectRatio":1.5873015873015872,"src":"/static/0ee8d94959f4665a21c4e1668efea35b/bc8e0/Bullhorn_techblog_NewUi_blog-copy-02.png","srcSet":"/static/0ee8d94959f4665a21c4e1668efea35b/8ac63/Bullhorn_techblog_NewUi_blog-copy-02.png 200w,\n/static/0ee8d94959f4665a21c4e1668efea35b/3891b/Bullhorn_techblog_NewUi_blog-copy-02.png 400w,\n/static/0ee8d94959f4665a21c4e1668efea35b/bc8e0/Bullhorn_techblog_NewUi_blog-copy-02.png 800w,\n/static/0ee8d94959f4665a21c4e1668efea35b/6c305/Bullhorn_techblog_NewUi_blog-copy-02.png 858w","sizes":"(max-width: 800px) 100vw, 800px"}}}}},"subtitleAcf":{"text":"Prateek Grover, Software Engineer, Consumer Payments"}}]},"previous":null,"next":{"uri":"/optimizing-merchandising-machine-learning-for-real-time-app-experience-and-ltv-maximization/","title":"Optimizing Merchandising: Machine Learning for Real-Time App Experience and LTV Maximization"},"categoriesData":{"nodes":[{"id":"dGVybToxOQ==","name":"Architecture","count":15,"uri":"/category/architecture/"},{"id":"dGVybTo0NDI=","name":"Cricket","count":null,"uri":"/category/sports/cricket/"},{"id":"dGVybTo3","name":"Engineering","count":14,"uri":"/category/engineering/"},{"id":"dGVybToyNQ==","name":"Mobile","count":10,"uri":"/category/mobile/"},{"id":"dGVybToyMg==","name":"Open Source","count":null,"uri":"/category/open-source/"},{"id":"dGVybToxNg==","name":"People Stories","count":3,"uri":"/category/people-stories/"},{"id":"dGVybToyOA==","name":"Product","count":3,"uri":"/category/product/"},{"id":"dGVybTo0MzM=","name":"Sports","count":null,"uri":"/category/sports/"},{"id":"dGVybTozMQ==","name":"Tech Stories","count":null,"uri":"/category/tech-stories/"},{"id":"dGVybTox","name":"Uncategorized","count":null,"uri":"/category/uncategorized/"}]},"recentPosts":{"nodes":[{"id":"cG9zdDoxMDczOA==","title":"Beyond IaC: Engineering a solution to Guarantee What Actually Is in Production","uri":"/beyond-iac-engineering-a-solution-to-guarantee-what-actually-is-in-production/"},{"id":"cG9zdDoxMDY5MA==","title":"Optimizing Merchandising: Machine Learning for Real-Time App Experience and LTV Maximization","uri":"/optimizing-merchandising-machine-learning-for-real-time-app-experience-and-ltv-maximization/"},{"id":"cG9zdDo5NzM2","title":"Powering Real-Time Decisions with PhonePe’s Garfield Platform and Apache Druid","uri":"/powering-real-time-decisions-with-phonepes-garfield-platform-and-apache-druid/"},{"id":"cG9zdDo5Njcw","title":"Pincode Migration Journey with Compose Multiplatform","uri":"/pincode-migration-journey-with-compose-multiplatform/"},{"id":"cG9zdDo5NDY2","title":"PubSub at Scale: PhonePe’s “Bullhorn”","uri":"/pubsub-at-scale-phonepes-bullhorn/"}]}},"pageContext":{"id":"cG9zdDoxMDczOA==","categories":[{"id":"dGVybToxOQ==","name":"Architecture","slug":"architecture","uri":"/category/architecture/","count":15},{"id":"dGVybTo3","name":"Engineering","slug":"engineering","uri":"/category/engineering/","count":14},{"id":"dGVybToyNQ==","name":"Mobile","slug":"mobile","uri":"/category/mobile/","count":10},{"id":"dGVybToxNg==","name":"People Stories","slug":"people-stories","uri":"/category/people-stories/","count":3},{"id":"dGVybToyOA==","name":"Product","slug":"product","uri":"/category/product/","count":3}],"categoryId":"dGVybTo3","previousPostId":null,"nextPostId":"cG9zdDoxMDY5MA=="}},
    "staticQueryHashes": ["4132566406"]}