<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Elangovan Sivalingam on Medium]]></title>
        <description><![CDATA[Stories by Elangovan Sivalingam on Medium]]></description>
        <link>https://medium.com/@elango.sms?source=rss-77e9b1052803------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*M8OKP4B-IP_J-xQiDR6vmw@2x.jpeg</url>
            <title>Stories by Elangovan Sivalingam on Medium</title>
            <link>https://medium.com/@elango.sms?source=rss-77e9b1052803------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 24 May 2026 03:44:10 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@elango.sms/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Building Agents for the Enterprise]]></title>
            <link>https://medium.com/@elango.sms/building-agents-for-the-enterprise-e2d239397db0?source=rss-77e9b1052803------2</link>
            <guid isPermaLink="false">https://medium.com/p/e2d239397db0</guid>
            <category><![CDATA[ai-agent-architecture]]></category>
            <category><![CDATA[agents]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[microsoft-copilot]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Elangovan Sivalingam]]></dc:creator>
            <pubDate>Sat, 16 Aug 2025 23:51:48 GMT</pubDate>
            <atom:updated>2025-08-16T23:51:48.462Z</atom:updated>
            <content:encoded><![CDATA[<p>Part 3: Agent Architecutre</p><p>If you’ve been following along since <a href="https://medium.com/@elango.sms/building-agents-for-the-enterprise-1ee43155f8ba">Part 1</a>, we started by making sense of what “agents” actually are and we build a simple <strong><em>Web Automation Agent</em></strong>.</p><p>In <a href="https://medium.com/@elango.sms/building-agents-for-the-enterprise-032491497afb">Part 2</a>, we rolled up our sleeves, compared some of the top frameworks, and even built a small example using <strong><em>Semantic Kernal</em></strong> to see things in action.</p><p>Now in Part 3, we’re taking a step back to look under the hood. How do these agents actually work? What’s their anatomy? And how does the design change depending on whether you’re using a ready made declarative setup or building your own multi agent system from scratch?</p><h3>The Core Components of Any Agent</h3><p>At the heart of any agent, whether it’s Microsoft Copilot or your own homegrown system, you’ll find a few core building blocks:</p><ul><li><strong>Orchestrator — Think of this as the Air Traffic Controller.</strong><br> Just like controllers guide dozens of planes safely and efficiently, the orchestrator manages how your agent operates. It decides which knowledge to draw from, which action to take, and in what order ensuring everything runs smoothly without conflicts or confusion.</li><li><strong>Knowledge</strong> — This is the agent’s “brain library.” It’s where you load specialized data, instructions, or context so it responds in a way that fits your domain.</li><li><strong>Actions</strong> — The “hands” of the agent. These are the triggers, workflows, or API calls it can execute to get stuff done.</li><li><strong>Foundation Models</strong> — The actual intelligence. These models (like GPT-5, Claude, or Llama) handle reasoning, understanding, and generating responses.</li><li><strong>User Experience Layer</strong> — The “face” of the agent. Whether it’s inside Microsoft Teams, Outlook, a web dashboard, or your custom UI, this is how users interact with it.</li></ul><p>Everything else, memory systems, MCP tool integrations, APIs plugs into these layers to make the agent more capable, reliable, and context-aware.</p><h3>Architecture #1: Declarative Agents (Microsoft Copilot style)</h3><p>This approach is like building with LEGO kits. You have predefined blocks, clear instructions, and the architecture is designed so you focus on <em>what</em> the agent should do, not <em>how</em> it’s coded.</p><ul><li>You define the <strong>knowledge sources</strong> (SharePoint, internal DBs, APIs).</li><li>You set up <strong>actions</strong> (business process workflows, API connectors).</li><li>The <strong>orchestrator</strong> and <strong>foundation model</strong> layers are handled by Microsoft’s Copilot ecosystem.</li><li>You plug it into the <strong>UX layer</strong> (Teams, Word, Excel) and you’re ready to go.</li></ul><p>It’s built for speed, security, and seamless integration. Ideal if your use case lives inside the <strong>Microsoft 365 ecosystem</strong>. For example, if you’re building an internal support bot for your organization, this architecture is a natural fit without the need to reinvent the wheel.</p><p><em>(A simplified architecture diagram inspired by the Microsoft AI Agents.)</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/901/1*UXwGzGiK1szxcEwSziQNdw.png" /></figure><h3>Architecture #2: Custom / Multi-Agent Systems</h3><p>This is where you go full DIY building a custom agent. The diagram below is a great example, every piece is yours to choose, wire, and scale.</p><p>A typical setup might have:</p><ul><li><strong>User Input Layer</strong> — APIs, chat UIs, or voice input.</li><li><strong>Input Processing</strong> — Natural language parsing, validation.</li><li><strong>Reasoning Engine</strong> — LLM with planning loops (ReAct, AutoGen, etc.).</li><li><strong>Memory Systems</strong> — Short-term (cache) + long-term (vector DB).</li><li><strong>Tool/Skill Orchestration</strong> — APIs for weather, databases, search, communication tools.</li><li><strong>Response Generation</strong> — Formatting answers for your output channels.</li><li><strong>Infrastructure</strong> — Deployment, scaling, monitoring, and security.</li></ul><p>Here you get <strong>total control. </strong>You can chain multiple agents together, integrate custom reasoning, or connect to any tool you like. The trade-off? More flexibility means more moving parts to manage.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VL1kOIk026EBvtO68eOFlQ.png" /><figcaption>Custom/Multi Agent Architecture</figcaption></figure><h3>When to choose this approach</h3><ul><li>You need custom reasoning or multi‑step workflows beyond a single prompt (planning, tool use, delegation).</li><li>You must integrate deeply with proprietary data, tools, or on‑prem systems.</li><li>Hard requirements for security, compliance, data residency, or air‑gapped/offline modes.</li><li>You want to optimize latency, cost, or accuracy at a component level (e.g., hybrid models, caching, partial fine‑tunes).</li><li>You expect multiple specialized agents (retriever, planner, executor, reviewer) with clear handoffs.</li><li>You need strong observability, evals, and guardrails tailored to your domain.</li><li>Product roadmap demands flexibility: rapid tool additions, model swaps, or policy changes.</li></ul><h3>Key benefits</h3><ul><li><strong>Full control:</strong> pick models, memory, tools, and governance; swap anything without vendor lock‑in.</li><li><strong>Extensibility: </strong>compose multiple agents, custom planners/critics, and domain‑specific skills.</li><li><strong>Performance and cost:</strong> aggressive caching, hybrid model routing, streaming, and resource isolation.</li><li><strong>Reliability:</strong> explicit timeouts, retries, circuit breakers, and fallbacks per step.</li><li><strong>Compliance and security:</strong> fine‑grained data flows, PII handling, audit trails, and private deployments.</li><li>Better fit for complex enterprise use cases: multi‑tenant, RBAC, approval flows, and SLAs.</li></ul><h3>Trade‑offs</h3><ul><li><strong>Higher engineering lift:</strong> architecture, orchestration, testing, and MLOps/LLMOps.</li><li><strong>Operational overhead: </strong>monitoring, drift/eval pipelines, incident response, and change control.</li><li><strong>More moving parts: </strong>versioning prompts/tools, dependency management, and data contracts.</li></ul><p>Choose a custom or multi‑agent setup when you need more control and flexibility than off‑the‑shelf tools. You’ll spend more time on engineering and operations, but the benefits can be worth it.</p><h3>Responsible AI (RAI) Validation: Why it Matters?</h3><p>Building agents is exciting, however there’s one thing to keep top of mind especially in enterprise: <strong>Responsible AI (RAI)</strong>. RAI means making sure your agent behaves safely, ethically, and reliably with real users.</p><p>If you’re rolling out in Microsoft 365 or Copilot‑style environments, many safety checks are built in. According to Microsoft, agents are validated for areas like</p><ul><li>Prompt safety and potential “jailbreak” attempts</li><li>Offensive or harmful content generation</li><li>Bias, stereotypes, or manipulative behavior</li></ul><p>If the agent fails these checks, whether during publishing or in-chat, it won’t get deployed. That means you need to think through safety and fairness <em>before</em> you go live.</p><p>With Copilot style agents, the framework does most of the safety heavy lifting for you: prompt checks, content filters, and policy enforcement are baked in. But if you’re building a custom agent, you have to handle this yourself: define your safety rules, test for attacks, add guardrails (like moderation, RBAC, rate limits), and monitor in production.</p><p><strong>Short version: </strong>Copilot covers it; custom means you own it by design, in CI, and at runtime. I’ll dive into the full playbook in a future article.</p><h3>Why This Matters in the Real World</h3><ul><li>A recent survey shows <strong>78% of business leaders consider RAI a growth enabler</strong>, but only <strong>2% of companies are actually meeting proper RAI standards</strong>. The failure to address this isn’t theoretical, it’s resulting in real financial loss and reputational harm.<a href="https://www.newswire.ca/news-releases/as-agentic-ai-gains-traction-86-of-enterprises-anticipate-heightened-risks-yet-only-2-of-companies-meet-responsible-ai-gold-standards-841563117.html?utm_source=chatgpt.com">Newswire</a></li><li>Especially with agents that act autonomously or touch sensitive business systems, you need to embed safety by design not bolt it on at the end.</li></ul><p>So, in the enterprise setting, RAI isn’t an optional mid-step. It’s a <strong>gatekeeper</strong>. It protects users, your brand, and avoids compliance landmines.</p><h3>Finally Human Still Matters (For Now): Why Responsible Agents Need Real People</h3><p>Even the smartest agents aren’t ready to fly solo at least, not at first. Human oversight is essential for building trust, catching edge cases, and gradually handing off control.</p><h4>Why Keep Humans in the Loop</h4><blockquote>Most folks are comfortable collaborating with AI, but far fewer want to be managed by it. In short: agents are teammates, not replacements yet.</blockquote><ul><li>A practical pattern:</li></ul><pre>* Pre‑processing: set limits and data context before the agent acts.<br>* Human‑in‑the‑loop: pause for confirmation on high‑risk steps.<br>* Post‑processing: humans review before final delivery.<br>* Return of Control (ROC): humans can edit or override actions pre‑execution</pre><ul><li>HITL isn’t forever. Start with more checks, then scale back as confidence rises.</li></ul><h4>A Few Simple HITL Patterns to Keep in Mind</h4><ul><li><strong>Confirmation loops:</strong> agent flags decisions; humans approve.</li><li><strong>Review queues: </strong>sample outputs for regular human audits.</li><li><strong>Escalation paths: </strong>clear rules for when to hand off to a human.</li><li><strong>Feedback loops:</strong> human corrections flow back to improve the system.</li></ul><h3>Why This Matters in Enterprise Settings</h3><ul><li><strong>Builds user trust.</strong> Teams feel more confident when they know there’s a human safety net.</li><li><strong>Prevents potential damage.</strong> In sensitive domains like finance, HR, health care or customer support, bots must default to safest options.</li><li><strong>Smooth transition to autonomy.</strong> Start human heavy, then relax oversight as the system matures. That’s how autonomy evolves responsibly.</li></ul><pre>Phase             Oversight Level     Typical Flow<br>--------------------------------------------------------------------------------------<br>Initial Stage     100% human review   Agent suggests &amp; human approves<br>Stabilization     50% human check     Human reviews edge cases or low confidence outputs<br>Mature Stage      Spot checks only    Agent runs autonomously with fallback escalation</pre><h3>Final Thoughts:</h3><p>When you’re designing your agent, whether it’s the declarative Copilot kind or the custom multi-agent system, make sure RAI considerations are part of your plan:</p><ol><li>Think through harmful edge cases while designing prompts and actions.</li><li>Test with diverse inputs to check for bias or misuse.</li><li>Have a validation loop or checklist before deployment or updates.</li></ol><p>In the next part of this series, we’ll be going deeper into real world architecture, how to structure <strong>MCP servers</strong>, build modular agents, and keep things robust and secure. RAI will feature there too, because safety doesn’t stop at deployment. Leave your thougths in the comments below.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2d239397db0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building Agents for the Enterprise]]></title>
            <link>https://medium.com/@elango.sms/building-agents-for-the-enterprise-032491497afb?source=rss-77e9b1052803------2</link>
            <guid isPermaLink="false">https://medium.com/p/032491497afb</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[semantic-kernel]]></category>
            <category><![CDATA[agents]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[agenticframework]]></category>
            <dc:creator><![CDATA[Elangovan Sivalingam]]></dc:creator>
            <pubDate>Mon, 04 Aug 2025 12:44:25 GMT</pubDate>
            <atom:updated>2025-08-04T13:34:34.602Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Part 2 : Agentic Frameworks</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IfniuOgY7iyNcqQIfpPhXg.png" /><figcaption>Agentic Frameworks</figcaption></figure><h3>Introduction: Why Agentic Frameworks Matter?</h3><p>In <a href="https://medium.com/@elango.sms/building-agents-for-the-enterprise-1ee43155f8ba">Part 1</a> of this series, we explored the shift from traditional automation to intelligent agents, systems that don’t just execute instructions, but reason, plan, and interact. These agents represent a new class of enterprise capability that can actively navigate APIs, orchestrate tools, and maintain context across conversations and tasks.</p><p>But building an agent isn’t as simple as calling an LLM. It requires a framework, a foundational system that handles <strong>planning, memory, orchestration, integration, and communication</strong>. This is where agentic frameworks come into play.</p><p>Whether you’re experimenting with copilots for internal teams or building robust multi agent systems that interact with other agents, tools and databases, choosing the right framework can be the difference between a prototype and a production-ready system.</p><p>In this article, we’ll break down:</p><ul><li>What agentic frameworks are and why they’re needed</li><li>The difference between <strong>low-code</strong> and <strong>pro-code </strong>frameworks (and how to choose)</li><li>A curated list of top agentic frameworks to explore</li><li>A hands-on walkthrough using <strong>Microsoft’s Semantic Kernel</strong></li><li>Enterprise architecture consideration such as <strong>memory, orchestration, RAI,</strong> and more</li></ul><p>Let’s dive in and explore the architectural foundation behind truly useful, reliable, and scalable AI agents.</p><h3>Agentic Frameworks — The Brains Behind the Agent</h3><p>So what exactly is an agentic framework?</p><p>Think of it as the operating system for your AI agent. It brings order to the chaos, helping your agent plan, use tools, remember context, and talk to other systems. Without a framework, you’re either writing tons of glue code yourself or building fragile one-off bots that don’t scale.</p><p>The good ones take care of the heavy lifting:</p><ul><li>Handling <strong>tool orchestration</strong> so your LLM can call real APIs</li><li>Managing <strong>short-term and long-term memory</strong></li><li>Supporting <strong>multi-step reasoning</strong> and chaining</li><li>Providing <strong>interfaces</strong> for user input, context injection, and response formatting</li><li>Integrating with <strong>vector stores</strong>, databases, external APIs, or even other agents</li></ul><p>In other words, agentic frameworks aren’t just wrappers around LLMs, they’re the engine under the hood that powers planning, memory, and tool use so your agent can actually do useful work.</p><p>Some frameworks are optimized for quick builds and business users (low-code), while others go deep into customizability and scale (pro-code). In the enterprise world, you’ll likely need to experiment with both especially if you’re building agents that move beyond one task or one department.</p><p>Before we dive into low-code vs pro-code, let me give you a lay of the land with some of the top frameworks out there today.</p><h3>Agentic Frameworks<strong> Worth Exploring</strong></h3><p>Here’s a quick rundown of some of the top frameworks I explored. This space is growing fast, and each framework brings its own strengths, trade-offs, and sweet spots. Whether you’re building a chatbot, a research assistant, a task orchestrator, or something more complex, the framework you choose can make a big difference.</p><pre>+-------------------------------+---------------+--------------------------------------------------------+-----------------------------------------------+<br>| Framework                     | Language(s)   | What Its Good At                                       | Ideal Use Case                                |<br>+-------------------------------+---------------+--------------------------------------------------------+-----------------------------------------------+<br>| LangChain                     | Python        | Tool calling, memory, agents, chains, rich ecosystem   | Custom agent pipelines, integration-heavy apps|<br>| Semantic Kernel (SK)          | C#, Python    | Planning, skill plugins, memory, MS-native             | Copilots, Microsoft 365 EcoSystem             |<br>| OpenAI Agents / Assistants API| API / JSON    | Tool calling, function execution, managed context      | Fast, serverless agents via OpenAI platform   |<br>| Microsoft Copilot Extensibility| SK + Low-code| Graph-integrated, Teams-ready, RAI validation          | M365 Copilots, enterprise-ready assistants    |<br>| CrewAI                        | Python        | Role-based multi-agent collaboration                   | Team-style agents and workflows               |<br>+-------------------------------+---------------+--------------------------------------------------------+-----------------------------------------------+</pre><p><strong>Quick Note:</strong></p><ul><li>If you’re just starting out, LangChain or Semantic Kernel are great hands-on options with strong documentation and community support.</li><li>If you’re building something inside the Microsoft ecosystem, the Copilot extensibility model (Copilot Studio Agentg) gives you native enterprise hooks right out of the box.</li></ul><h3>Low-Code vs Pro-Code — How to Choose the Right Track</h3><p>Not all agent frameworks are built the same and that’s actually a good thing.</p><p>Some are designed for speed, simplicity, and business users. Others give engineers full control to customize logic, scale across systems, and deeply integrate into existing stacks.</p><p>You’ll often hear these categorized as <strong>low-code</strong> and <strong>pro-code</strong> frameworks. But this isn’t a binary decision, think of it more like a spectrum. And in many enterprise environments, you might end up using both depending on the team or use case.</p><p>Here’s how they generally stack up:</p><pre>+-------------------------+-------------------------------------------+-----------------------------------------------+<br>| Criteria                | Low-Code Frameworks                       | Pro-Code Frameworks                           |<br>+-------------------------+-------------------------------------------+-----------------------------------------------+<br>| Who its for             | Business users, Analysts or Anyone        | Developers, Engineers, Architects             |<br>| Learning curve          | Easy, visual builders                     | Steeper, requires programming knowledge       |<br>| Speed to prototype      | Fast                                      | Moderate to slow (setup time needed)          |<br>| Custom logic            | Limited                                   | Full flexibility with code                    |<br>| Integration depth       | Plug-and-play connectors                  | API-level access, deep integration            |<br>| Observability &amp; testing | Basic or missing                          | Debuggable, testable, traceable               |<br>| DevOps friendly         | Not really                                | CI/CD, GitOps, container-ready                |<br>| Scalability             | Good for teams or small use cases         | Designed for production-grade agents          |<br>| Best for                | Demos, simple bots, internal workflows    | Multi-agent systems, tools, APIs, pipelines   |<br>+-------------------------+------------------------------------------+-----------------------------------------------+</pre><h3>How I Think About Choosing</h3><ul><li><strong>Just getting started?</strong> Try a low-code tool like <strong>Copilot Studio</strong> or <strong>FlowiseAI</strong> to get a feel for how agents interact with tools and users.</li><li><strong>Need control, versioning, Multi agent interaction or custom APIs?</strong> Go with <strong>LangChain</strong>, <strong>Semantic Kernel</strong>, or <strong>CrewAI </strong>these will give you the flexibility to go deep and build production-ready agents.</li><li><strong>In a Microsoft shop?</strong> Use the <strong>Copilot extensibility model (AI Toolkit, M365 Agent Kit, Copilot Studio), </strong>business users can build flows visually, and developers can extend with Semantic Kernel skills behind the scenes.</li><li><strong>Don’t overcommit early</strong> experiment with both. Low-code tools are great for ideation, but most serious agent systems will eventually need pro-code logic under the hood.</li></ul><p><strong>Decision Tree</strong></p><pre>Start Here<br>   |<br>   +--&gt; Are you technical or non-technical?<br>           |<br>           +--&gt; Non-technical or prefer visual tools?/integrate with existing MCP Servers?<br>           |       |<br>           |       +--&gt; Need something fast for prototyping or internal use?<br>           |       |       |<br>           |       |       +--&gt; Go with a Low-Code Framework (e.g., Copilot Studio, FlowiseAI)<br>           |       |<br>           |       +--&gt; Need deeper logic or integrations? or Build MCP Servers?<br>           |               |<br>           |               +--&gt; You’ll need support from developers using Pro-Code Frameworks<br>           |<br>           +--&gt; Technical / comfortable writing code?<br>                   |<br>                   +--&gt; Is your use case simple or experimental?<br>                   |       |<br>                   |       +--&gt; You could try either — Low-Code for speed, Pro-Code for flexibility<br>                   |<br>                   +--&gt; Need advanced planning, tool use, or integration with APIs, DBs, or memory? <br>                           |<br>                           +--&gt; Go with a Pro-Code Framework (e.g., LangChain, Semantic Kernel, CrewAI)</pre><h3><strong>Hands-on: Build a Simple Agent Using Semantic Kernel</strong></h3><p>One of the cleanest frameworks I’ve used is Semantic Kernel (SK), Microsoft’s open-source library for building copilots and intelligent agents. It comes with key features like Planners, Memory, and Tool (Skill) integration, all set up to work together right from the start. SK works well with both C# and Python and fits perfectly into the Microsoft Copilot ecosystem. You can quickly create planners, use tools (called “skills”), and manage memory without a lot of setup. The best part? You don’t need to build a whole app just to test something simple.</p><p>Lets build a simple agent that gets the weather and suggests what to wear, just enough to demonstrate <strong>tool calling + planning</strong>.</p><p><strong>Step 1: </strong>Install Semantic Kernel (Python)</p><pre>pip install semantic-kernel</pre><p><strong>Step 2:</strong> Sample Agent Code</p><pre>import semantic_kernel as sk<br>from semantic_kernel.planning import SequentialPlanner<br>from semantic_kernel.skill_definition import sk_function<br><br># Step 1: Create Kernel and Planner<br>kernel = sk.Kernel()<br>planner = SequentialPlanner(kernel)<br><br># Step 2: Define some mock &quot;skills&quot;<br>@sk_function<br>def get_weather(city: str) -&gt; str:<br>    return f&quot;Simulated weather for {city}: 24°C, sunny&quot;<br><br>@sk_function<br>def suggest_outfit(weather: str) -&gt; str:<br>    return f&quot;Based on &#39;{weather}&#39;, wear something light and breathable.&quot;<br><br># Step 3: Register your skills<br>kernel.import_skill(get_weather, &quot;WeatherSkill&quot;)<br>kernel.import_skill(suggest_outfit, &quot;OutfitSkill&quot;)<br><br># Step 4: Let the planner build a plan based on natural language<br>plan = planner.create_plan(&quot;Get weather in Toronto and suggest what to wear&quot;)<br>result = plan.invoke()<br><br># Step 5: Print the output<br>print(result)</pre><p><strong>So what happened here?</strong></p><ul><li>You’re registering <strong>functions as skills</strong> (this is how you plug in tools/APIs).</li><li>The <strong>planner</strong> takes your goal (“Get weather and suggest outfit”) and figures out what steps to run.</li><li>You get an <strong>autonomous agent loop. N</strong>o hardcoding logic, just a plan based on intent.</li></ul><h3>Try This Next</h3><ul><li>Replace the mock get_weather() with a real weather API (e.g., OpenWeatherMap).</li><li>Add memory using a vector DB like Pinecone or Redis.</li><li>Chain it with another skill like sending an email with the result.</li></ul><h3>Wrapping Up</h3><p>Alright, that was a lot. We looked at what agentic frameworks really are, compared low-code vs pro-code options, walked through some of the top tools out there, and even built a small working agent with Semantic Kernel.</p><p>Hopefully now you’ve got a better feel for what’s Agentic frameworks and when to use what. Whether you’re hacking together a quick idea or building something enterprise-grade.</p><p>Before we dive into the next part, here’s a small challenge: <strong>pick one of the frameworks, build an simple agent, and see how it feels</strong>. Doesn’t have to be fancy even something like a task planner or a weather bot. And if you do build one, I’d love to hear about it. Tag me or drop a link, always excited to see what others are building.</p><p>In Part 3 of my series, we’ll go deeper into how these agents are wired under the hood. We’ll break down the <strong>architecture</strong> differences between low-code and pro-code setups, and explore something that’s becoming super important <strong>Model Context Protocol (MCP)</strong>.</p><p>MCP is how agents talk to the outside world in a structured, reliable way and we’ll even look at how to build your own MCP server to level up your agent’s skills.</p><p>See you in Part 3 it’s going to be fun.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=032491497afb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building Agents for the Enterprise]]></title>
            <link>https://medium.com/@elango.sms/building-agents-for-the-enterprise-1ee43155f8ba?source=rss-77e9b1052803------2</link>
            <guid isPermaLink="false">https://medium.com/p/1ee43155f8ba</guid>
            <category><![CDATA[test-automation]]></category>
            <category><![CDATA[playwrights]]></category>
            <category><![CDATA[agents]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <dc:creator><![CDATA[Elangovan Sivalingam]]></dc:creator>
            <pubDate>Thu, 24 Jul 2025 02:45:08 GMT</pubDate>
            <atom:updated>2025-07-28T12:15:58.558Z</atom:updated>
            <content:encoded><![CDATA[<h3>Part 1 — Build your first web/test automationAgent under 10 minutes</h3><h3>Introduction</h3><p>By now, most of us have either <strong>heard about</strong> or even <strong>used</strong> AI Agents and seen their potential to disrupt industries of all kinds. From simple automation to complex business workflows, agents are opening up entirely new ways to get work done autonomously, with less repetitive effort and more intelligent decision-making built in.</p><p>In this series, I want to share my learnings, walk you through the practical steps to build your own agents step by step, and share key principles for designing <strong>enterprise-grade agents</strong> that are secure, reliable, and actually make life easier for teams.</p><p>I promise to keep things as simple and hands-on as possible. So to kick things off, let’s build a quick <strong>web/test automation agent</strong> in under <strong>10</strong> <strong>minutes, </strong>all by using natural language instructions with Playwright and the GitHub AI Agent Toolkit. By the end, you’ll have a working example you can tweak, extend, or plug into bigger workflows.</p><p>And this is just the start. In the coming weeks, I’ll dive deeper into how to take these agents from side projects to production-ready tools that handle real workloads safely and efficiently. Here’s a glimpse of what’s coming up next in this series:</p><h3>Building Enterprise-Grade Agents (What’s Next)</h3><p><strong>Upcoming Topics:</strong></p><ul><li>Agentic Framework — <em>How to pick the right design for your use case</em></li><li>Architecture — <em>Patterns for reliability and fault tolerance</em></li><li>Model Context Protocol — <em>Build/Integrate with MCP servers</em></li><li>Writing Effective &amp; Reliable Prompts</li><li>Single-Agent vs. Multi-Agent Orchestration</li><li>Adaptability — <em>Making your agents easy to reuse, replace, and extend</em></li><li>Real-world Deployment — <em>CI/CD for agents, versioning, and governance</em></li><li>Cost Optimization —<em> Keeping your agent runs efficient and affordable</em></li><li>Governance &amp; Security — <em>Managing secrets, IAM, sandboxing, and safe execution</em></li><li>Performance — <em>Avoiding costly calls, model performnce and sluggish workflows</em></li><li>Monitoring &amp; Observability —<em> Logging, tracing, and operational insights</em></li></ul><h3>Let’s Build Your First Agent</h3><p>Alright, time to roll up our sleeves. To keep things real and practical, let’s build a simple <strong>web/test automation agent (Stock Analysis Agent) </strong>that does something useful:</p><ul><li>Open a browser</li><li>Search for stock price (like AAPL)</li><li>Read the stock price</li><li><strong>Decide</strong> if it’s a <em>Buy</em> or <em>Sell</em> based on the price</li><li>Format the results and display it in a table</li></ul><p>And the best part? We’ll do this with <strong>natural language instructions, </strong>no hardcoded click selectors, no coding. We’ll use the <strong>GitHub AI Toolkit</strong> + <strong>Playwright</strong> + a smart LLM (Claude, in my case) to run this as an autonomous agent.</p><p>You can try this with a different LLM like GPT4.1 or Gemini 2.5 Flash.</p><h3>Prerequisites</h3><p>Before you run your first agent, make sure you have the following ready:</p><ul><li>Install the latest version of <a href="https://code.visualstudio.com/download"><em>Visual Studio Code</em></a></li><li>Access to <a href="https://code.visualstudio.com/docs/copilot/setup"><em>Copilot</em></a><em>. </em><a href="https://github.com/github-copilot/signup"><em>Copilot Free plan</em></a> and get a monthly limit of completions and chat interactions.</li><li><strong>VS Code Extenstions</strong> — Install both the <em>GitHub Copilot</em> extension and the <em>AI Toolkit</em> extension.</li><li><strong>Playwright MCP Server</strong> — We’ll use Microsoft’s Playwright MCP server, so you don’t need to install Playwright separately.</li><li><strong>LLM &amp; API Key</strong> — You’ll need access to a Large Language Model . For this example, I’m using <em>Claude</em>. Log in to <a href="https://console.anthropic.com/">Anthropic Console</a>, create an API key, and <strong>save it safely</strong> — you’ll need it later.</li></ul><h3>Agent Design</h3><h3>AI Agent Tool Kit</h3><p>Launch VS code and AI tool kit, refer the image below for reference</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RK3CKcLQHgJzYLpN2jZb-Q.png" /><figcaption>AI Tool Kit</figcaption></figure><h3>Model Catalog</h3><p>The <strong>Model Catalog</strong> in the <strong>VS Code AI Agent Toolkit</strong> is a handy feature that helps you manage which AI models your agent can use right inside your IDE.</p><p>With the Model Catalog, you can:</p><ul><li><strong>Browse available models</strong> → see which providers and versions you can plug into your agent.</li><li><strong>Configure API keys and endpoints</strong> →no need to hardcode them into your scripts.</li><li><strong>Switch models</strong> easily → test your agent with GPT, then try Claude or another provider.</li><li><strong>Manage credentials</strong> securely →VS Code handles the secret storage so you don’t leak keys in your repo.</li></ul><p>In practice, it makes it super simple to <strong>point your agent to the right model. </strong>For this example, i’ve added <strong>Claude 3.7 Sonnet. </strong>You may choose the model of your choice however to keep it simple pick Claude 3.7.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cFPxDBq3YiihApyRKQ6IYg.png" /><figcaption>Model Catalog</figcaption></figure><h3>Agent Builder</h3><p>The <strong>Agent Builder</strong> is one of the key features of the <strong>VS Code AI Toolkit. I</strong>t’s like a visual workspace for designing, testing, and running your AI agents right inside VS Code.</p><p>In simple terms, the Agent Builder lets you:<br><em> </em>• Create an agent project step by step, pick a model, add tools, and define instructions.<br> • Describe what your agent should do in natural language.<br> • Connect tools like Playwright or other MCP servers<br> • Run and test your agent in the same place you code, no need to switch to the terminal or browser.<br> • Iterate quickly, tweak prompts, add capabilities, and see the results instantly.</p><p>Think of it as a <strong>no-fuss control panel</strong> for turning your idea into a working AI-powered helper, whether that’s a test automation bot, a data scraper, or something more advanced.</p><ul><li>Model → Under the model selcet “Claude 3.7 Sonnett or the model you added in the previous step”.</li><li>Prompts → Use the attached system prompt and user prompt in the article</li></ul><pre>SYTEM Prompt<br><br>You are a web automation agent specializing in navigating web pages, scanning content, and taking action. Your task is to retrieve stock prices from Google search and provide buy/sell signals based on price thresholds.<br><br># Steps<br>1. Open the default web browser and navigate to Google.com<br>2. Search for the stock price mentioned in the user&#39;s prompt<br>3. Extract the current stock price from the search results<br>4. Determine the buy/sell signal based on the price threshold ($200)<br>5. Present the results in a formatted table<br><br># Tool Use Guidelines<br>To complete this task, I will use the following browser tools:<br>- Use browser_navigate to go to Google.com<br>- Use browser_type to enter the stock search query<br>- Use browser_click to submit the search<br>- Use browser_snapshot to capture the page content with stock price information<br>- Use browser_navigate or browser_close as needed to complete the task<br><br># Output Format<br>I will provide:<br>1. A brief summary of the actions taken<br>2. The stock information in a markdown table with the following columns:<br>   - Stock Name<br>   - Stock Price<br>   - Signal (Buy if price &lt; $200, Sell if price ≥ $200)<br><br>Example format:<br>```<br>| Stock Name | Stock Price | Signal |<br>|------------|-------------|--------|<br>| MSFT       | $230        | Sell   |<br>```<br><br># Examples<br>Input: Check the stock price for AAPL<br>Output:<br>I searched for AAPL stock price on Google and found the current price is $198. Since this is less than $200, the signal is Buy.<br><br>| Stock Name | Stock Price | Signal |<br>|------------|-------------|--------|<br>| AAPL       | $198        | Buy    |<br><br># Notes<br>- I will extract the stock price from Google search results without navigating to any financial websites<br>- The buy/sell signal is determined solely based on the $200 threshold (Buy if &lt; $200, Sell if ≥ $200)<br>- Stock prices may fluctuate, so the information provided reflects the data available at the time of the search</pre><pre>User Prompt<br><br>NVDA stock analysis.<br></pre><ul><li>Tools → Tools are the actions or external capabilities your agent can call like browsing a webpage, running a test, or fetching data. Let’s integrate the built in Playwrigth MCP server with our agent.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/751/1*TsADzRVnH0cyxO1mEH7eCw.png" /><figcaption>Add Tools -&gt; Select MCP Server</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/906/1*NNSVVKhhD6LNPYQP_D7SUg.png" /><figcaption>Add Server</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/897/1*pQMiUf32rsQFPkg-tZSi5A.png" /><figcaption>Featured MCP Server</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/901/1*zlLIwfhr3jEFwty0OwmjKA.png" /><figcaption>Select Playright &amp; enter the servername</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*QTXwid66NOTWiYc6dS8TLQ.png" /><figcaption>Select all tools and click ok</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/498/1*dHMtHxCbz5GX5GQAV5uE0w.png" /></figure><h3>Execution</h3><p>Now that all the configuration is done, you’re ready to run your first agent and see it in action!</p><h3><strong>What to Expect</strong></h3><p>You built a agent that:</p><ul><li>Uses Playwright via <strong>MCP</strong> (Model Context Protocol).</li><li>Connects to <strong>Anthropic’s Claude model</strong>.</li><li>Navigates the web (e.g., Google Finance).</li><li>Extracts stock price.</li><li>Makes a decision: <em>“Buy or Sell.”</em></li></ul><p>We didn’t write any programming logic, use HTML objects, or manually handle web page coordinates, so how did this work? Your agent uses the AI model (Claude 3.7) to <strong>plan the browsing steps</strong>, talk to Playwright for actions like <em>navigate</em>, <em>search</em>, <em>click</em>, <em>extract text</em>, and validate the condition returns the final decision. Checkout the output from the Model reponse section for detailed output.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/691/1*VgLHtVauNOfA0Hx-uFUKtw.png" /><figcaption>Model Response</figcaption></figure><h3>Over to you</h3><p>Try it out, with your usecase:</p><ol><li>Expand the idea to your imagination.</li><li>Try with different models</li><li>Add your own prompts, change the stock, the threshold, or the output format.</li><li>Use different tools (Screenshots, Webscrappers, etc..)</li><li>Run the scritp and watch your first autonomous test agent at work!</li></ol><p>Next, I’ll break down how this ties into bigger <strong>agentic patterns</strong> from chaining tasks to connecting multiple tools. But for now, <strong><em>congrats</em></strong>! You just built your first tiny <strong>web/test automation agent</strong> with Playwright.</p><p>Ready to see what’s possible when you take this idea to production? Stay tuned for the next piece in the series and I’d love to hear about your experience in the comments below!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1ee43155f8ba" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How a Simple Null Pointer Exception Bug Triggered the Biggest Cloud Crash of the Year]]></title>
            <link>https://medium.com/@elango.sms/how-a-simple-null-pointer-exception-bug-triggered-the-biggest-cloud-crash-of-the-year-052856f1e736?source=rss-77e9b1052803------2</link>
            <guid isPermaLink="false">https://medium.com/p/052856f1e736</guid>
            <category><![CDATA[cloud]]></category>
            <category><![CDATA[google-cloud-platform]]></category>
            <category><![CDATA[site-reliability-engineer]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[reliability-engineering]]></category>
            <dc:creator><![CDATA[Elangovan Sivalingam]]></dc:creator>
            <pubDate>Wed, 18 Jun 2025 11:56:28 GMT</pubDate>
            <atom:updated>2025-06-18T22:07:44.102Z</atom:updated>
            <content:encoded><![CDATA[<p>A Deep Dive into One of the Most Pervasive Cloud Failures and What It Teaches SREs and Architects</p><p>On June 12, 2025, a null pointer exception in Google Cloud’s Service Control system led to a cascading outage affecting 50+ services globally. The error, triggered by a malformed policy update, was rapidly replicated through Spanner, Google’s globally-distributed database. Key issues included lack of a feature flag, missing input validation, and poor isolation of observability tools. This incident offers critical lessons in fault isolation, graceful failure, and resilient architecture.</p><p><strong>Introduction</strong></p><p>On June 12, 2025, the internet faltered in a way that shook the very foundation of cloud reliability. A wave of outages began with intermittent issues on popular platforms like Gmail and Spotify. Within the hour, the problem had cascaded across continents. Developer tools stalled, authentication services failed, and even Google’s own observability infrastructure went dark.</p><p>The root cause? A hidden vulnerability inside Google Cloud’s Service Control system triggered by a single malformed policy update.</p><p>This article breaks down what happened, how it unfolded, and most importantly, what we as SREs and cloud architects must learn to avoid a similar fate.</p><p><strong>What Failed?</strong></p><p>At the heart of the outage was Google Cloud’s <em>Service Control</em>, a critical system that acts as the guardian of Google Cloud’s API infrastructure. Every API request that flows through the cloud passes through Service Control. Its job is to:</p><ul><li>Verify authorization for API calls</li><li>Enforce quota and rate limits</li><li>Apply organization and project-level policies</li><li>Perform logging, auditing, and billing tasks</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/934/1*PcVv5GZZhQGn9jhjtnJzlw.png" /><figcaption>Service Control (Source- Google Cloud)</figcaption></figure><p>When Service Control fails, everything that depends on it grinds to a halt. That’s exactly what unfolded.</p><p>The trouble started with a new feature released into Service Control on May 29, 2025. The feature introduced a more advanced quota policy evaluation system. But it came with a dangerous flaw: it lacked a feature flag. The new code was live in production and quietly waiting for the right (or wrong) input to trigger it.</p><p>That moment arrived on June 12, when a malformed policy update entered the system. The policy included blank fields an unexpected structure that wasn’t accounted for in the new logic path.</p><p>Here’s where the critical bug lay: <strong>there was no null check</strong> in the code path introduced by the new feature. As the system processed the malformed policy, it attempted to access a value from a field that didn’t exist. This caused a <strong>null pointer exception</strong> a crash-level error that immediately terminated the Service Control process in that region.</p><p>Crucially, this wasn’t just an isolated crash. Because the policy metadata is stored and managed in Google’s globally-distributed Spanner database, the malformed policy was <strong>instantly replicated to all other regions</strong>. Each regional Service Control instance began to process the same faulty data and each one crashed in turn.</p><p>Within minutes, over 50 services across 40+ regions were returning HTTP 503 errors. The null pointer bug, tiny in code size but massive in impact, had cascaded into one of the largest global cloud outages of the year.</p><p><strong>A Closer Look at Spanner</strong></p><p><strong>Spanner</strong> is Google’s globally-distributed, horizontally scalable relational database. It’s one of the engineering marvels behind Google Cloud’s promise of high availability and consistency across regions.</p><p>Spanner ensures:</p><ul><li>Synchronous replication of metadata and configuration across regions</li><li>Global consistency through a distributed TrueTime API</li><li>High fault tolerance and uptime</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/637/1*wHKhrDwxSUCUScftRPGKOg.png" /><figcaption>Spanner Server Organization (Source — Spanner Documentation)</figcaption></figure><p>While Spanner did exactly what it was supposed to replicating policy updates globally, it did so without any built-in safeguards to check for schema or structural validity in the new data. There was no circuit breaker or quarantine to isolate malformed updates before they spread.</p><p>In this incident, that lack of validation allowed a single corrupt policy object to poison Service Control instances worldwide. What made Spanner powerful also made it dangerous without additional safeguards in place.</p><p><strong>The Domino Effect: Timeline of the Outage</strong></p><pre>[May 29, 2025]  New quota logic deployed without afeature flag<br>[Jun 12, 10:45 AM PDT]  Malformed policy update pushed to Spanner<br>[Jun 12, 10:51 AM PDT]  First Service Control crashes begin<br>[Jun 12, 10:52–11:00 AM]  Global crash cascade via replicated data<br>[Jun 12, 11:10 AM]  50+ services including Gmail and Vertex AI fail<br>[Jun 12, 11:30 AM]  Google SREs trigger red button bypass<br>[Jun 12, 12:30 PM]  Most regions stabilize<br>[Jun 12, 1:30 PM]  Final recovery in us-central1</pre><p><strong>Key Engineering Failures</strong></p><ul><li><strong>No Feature Flag</strong>: The new quota logic was pushed live across all binaries without the ability to toggle it off regionally.</li><li><strong>Insufficient Input Validation</strong>: A missing null check turned a malformed policy into a crash trigger.</li><li><strong>Aggressive Global Replication</strong>: Spanner’s replication worked perfectly which meant the bug was replicated perfectly.</li><li><strong>No Backoff on Restart</strong>: In us-central1, the lack of exponential backoff caused a flood of retries that overwhelmed Spanner.</li><li><strong>Monitoring Outage</strong>: Google’s own observability tools and health dashboards were hosted on the same infrastructure and failed along with everything else.</li></ul><p><strong>Lessons for SREs and Architects</strong></p><ol><li><strong>Always Use Feature Flags for Critical Logic</strong><br> Never release backend features without the ability to enable/disable them in isolation.</li><li><strong>Validate Before Replication</strong><br> Build gating mechanisms to prevent malformed configurations from spreading across environments.</li><li><strong>Implement Fail-Safe Defaults</strong><br> Code defensively. Assume bad input will happen.</li><li><strong>Design Recovery Mechanisms</strong><br> Use randomized backoff and load throttling during restarts to avoid secondary failures.</li><li><strong>Isolate Observability Systems</strong><br> Don’t host monitoring tools on the same infrastructure they are meant to observe.</li></ol><p><strong>Conclusion</strong></p><p>The June 2025 Google Cloud outage reminds us that even the most sophisticated infrastructures can fail and often, the weakest links are the assumptions we make about safety. Spanner did its job. So did Service Control. But together, without the right safeguards, they created a perfect storm.</p><p>For SREs and architects, this is a case study not just in failure, but in foresight. Resilience isn’t just about uptime, it’s about limiting the blast radius when things do go wrong.</p><p>We build cloud-native systems to be fast, scalable, and elastic. But above all, we must build them to fail gracefully. Open to hear your thoughts and the takeaways from your perspective.</p><p><strong>References</strong></p><p><a href="https://cloud.google.com/service-infrastructure/docs/service-control/reference?utm_source=substack&amp;utm_medium=email">Overview | Service Infrastructure | Google Cloud</a></p><p><a href="https://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf?">Spanner Distributed Database</a></p><p><a href="https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW?">Google Cloud Service Health — Incident Report</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=052856f1e736" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Buy vs. Build in Observability: Step 2 – Avoiding the Licensing Trap]]></title>
            <link>https://medium.com/@elango.sms/buy-vs-build-in-observability-step-2-avoiding-the-licensing-trap-84d041d68030?source=rss-77e9b1052803------2</link>
            <guid isPermaLink="false">https://medium.com/p/84d041d68030</guid>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[licensing]]></category>
            <category><![CDATA[site-reliability]]></category>
            <dc:creator><![CDATA[Elangovan Sivalingam]]></dc:creator>
            <pubDate>Wed, 21 May 2025 22:39:36 GMT</pubDate>
            <atom:updated>2025-05-23T12:14:27.157Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hG1nYd7J_1QsYkI3N-dLRA.png" /><figcaption>Licensing Pitfalls</figcaption></figure><p>“It looked affordable… until our usage scaled.”</p><p>This is a sentence I’ve heard more than once from engineering leaders and platform teams burned by unexpected software costs especially in the realm of observability.</p><p>In <strong>Step 1</strong> of this series [<a href="https://medium.com/@elango.sms/build-vs-buy-in-observability-a-pragmatic-look-at-roi-d5518e93f135">Build Vs Buy In Observability</a>], we explored the broader dilemma of buying versus building observability tools. Now, in <strong>Step 2</strong>, let’s dig into one of the most common (and costly) traps when buying: <strong>licensing</strong>.</p><h3>The Hidden Costs Behind a Slick Demo</h3><p>When we evaluate observability tools, we usually start with a demo, a trial, or a limited PoC. Pricing might look manageable at first, often even compelling. But as your usage grows, that seemingly fair pricing model can become an anchor on your budget and flexibility.</p><p>The book <a href="https://g.co/kgs/cERsAVK"><em>Observability Engineering</em></a> puts it plainly:</p><p><em>“It’s not unfair to charge for software. What’s unfair is hiding what it’s going to cost when you actually use it for its intended purpose.”</em></p><p>That’s the core issue. Licensing models that <strong>obscure Total Cost of Ownership (TCO)</strong> or penalize successful adoption can turn an observability success story into a financial headache.</p><h3>Common Licensing Pitfalls (and How to Dodge Them)</h3><h3>1. Pricing Models That Don’t Scale With You</h3><p>Many vendors use pricing based on:</p><ul><li><strong>Per seat</strong></li><li><strong>Per host or container</strong></li><li><strong>Per query</strong></li><li><strong>Per service</strong></li><li><strong>Per GB of ingested data</strong></li></ul><p>Individually, these might seem reasonable. But together, they create a fog of unpredictability. If you&#39;re doing observability right, instrumenting broadly, querying often, and sharing access your usage will grow. Fast.</p><h3>2. The Trap of Long-Term Contracts</h3><p>One of the most overlooked licensing pitfalls is signing <strong>multi-year contracts</strong> with the promise of cost savings — only to find yourself stuck with tools that <strong>can’t keep pace with evolving tech landscapes</strong>.</p><p>Take <strong>AppDynamics</strong> and <strong>Splunk</strong>, for example:</p><ul><li><strong>AppDynamics</strong>, once a leader in monitoring traditional applications, now struggles to support cloud-native environments. Cisco’s own pivot to different tools like Splunk Observability Cloud and the halt in development of Cisco Cloud Observability has <strong>left customers fragmented and forced to stitch together multiple tools</strong> to maintain visibility.</li><li><strong>Splunk</strong>, primarily known for log management, has pushed into observability — but <strong>customers report it’s immature, hard to scale, and lacks topology awareness</strong>. Integration is often manual, and managing it becomes a burden as observability needs grow.</li></ul><p>The result? Organizations locked into long-term deals are now forced to either double down on aging solutions or pay again to modernize. <strong>Always evaluate how well a tool scales with your future, not just your present.</strong></p><h3>3. The Pay-As-You-Go Mirage</h3><p>Flexible pricing sounds nice. But if you can’t predict your future usage (and who can, really?), you risk locking yourself into an exponentially growing budget.</p><h3>4. Vendor Lock-In via Proprietary Instrumentation</h3><p>Some tools offer quick setup via proprietary agents. Fast? Yes. Future-proof? No.</p><p>Migrating later often means <strong>re-instrumenting from scratch</strong>, which is time-consuming and error-prone. That’s why many teams are moving toward <strong>OpenTelemetry </strong>a vendor-agnostic standard that gives you flexibility without sacrificing speed.</p><h3>5. Penalizing Curiosity</h3><p>The more observability becomes a shared asset across your org, the more value you unlock but also the more you pay if the pricing model isn’t aligned.</p><p><em>“You will want to slice and dice your observability data in many ways… you should see exponential growth in data queries as a culture of observability spreads.”</em></p><p>If your vendor charges per query or user, you might find yourself discouraging adoption to avoid cost spikes. That’s backwards.</p><h3>Smart Strategies to Avoid Licensing Regret</h3><p>Here’s how thoughtful engineering and business leaders approach licensing decisions in observability:</p><h3>1. Demand Transparency</h3><p>Ask vendors to model pricing across realistic future scenarios:</p><ul><li>What happens when your team doubles?</li><li>What if usage increases by 10x?</li><li>How does pricing change if other teams start querying data?</li></ul><p>If they hesitate, that’s a red flag.</p><h3>2. Start with OpenTelemetry</h3><p>By defaulting to OpenTelemetry (OTel), you reduce long-term risk. OTel lets you switch backends without ripping out your instrumentation. Use vendor distros if you must, but <strong>instrument natively in OTel</strong> wherever possible.</p><h3>3. Avoid Licensing Models That Penalize Success</h3><p>Curiosity should be rewarded, not punished. Prefer tools with pricing models that <strong>scale with business value, not technical adoption</strong>. If more usage = more insights, the pricing should reflect that benefit not become a tax.</p><h3>4. Align Licenses with Real Usage Patterns</h3><p>Many teams overpay for seats or hosts they don’t use. On the flip side, under-licensing can expose you during an audit. Track usage actively with a <strong>software asset management (SAM)</strong> approach.</p><h3>5. Use the Right Tools for the Right Purpose</h3><p>Not all data tools are observability tools. A common (and costly) mistake is using <strong>log aggregation platforms like Splunk</strong> for infrastructure monitoring.</p><p><em>Log profiling tools are excellent for search and forensic analysis but not for real-time observability.</em></p><p>When organizations rely on tools like Splunk to monitor infrastructure by piping in logs, they often face two issues:</p><ul><li><strong>Skyrocketing costs</strong> due to log ingestion volume</li><li><strong>Delayed insights</strong>, since logs weren’t designed for proactive monitoring or alerting</li></ul><p>Instead, use telemetry-native observability platforms with proper support for metrics, traces, and real-time alerting. Let each tool do what it does best.</p><h3>⦿ Final Thoughts</h3><p>Licensing might seem like a finance or procurement concern, but it&#39;s deeply strategic especially for observability. Your choices now affect how freely your engineers can ask questions of your systems, how many people can explore insights, and how adaptable your stack will be as your org evolves.</p><p>Don’t let licensing limit your culture of curiosity.</p><h3>⦿ Observability Licensing Checklist for Leaders</h3><p>Use this list before signing any contract:</p><p>🔲 Is the pricing model predictable and transparent?<br> 🔲 Are costs tied to adoption metrics (e.g., per user, per query, per host)?<br> 🔲 Has the vendor modeled cost scenarios based on future scale?<br> 🔲 Is usage-based pricing easy to monitor and forecast?<br> 🔲 Does the tool rely on proprietary agents or lock-in mechanisms?<br> 🔲 Are you using OpenTelemetry as your instrumentation standard?<br> 🔲 Are there true-up or overage clauses?<br> 🔲 Can you switch vendors without re-instrumenting apps?<br> 🔲 Are costs aligned with value created, not just technical usage?<br> 🔲 Are license renewals and audits clearly defined?<br> 🔲 Are you using the right tool for the right job?</p><p>If your observability tool penalizes growth, it’s not a platform, it’s a bottleneck.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=84d041d68030" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build vs Buy in Observability: A Pragmatic Look at ROI]]></title>
            <link>https://medium.com/@elango.sms/build-vs-buy-in-observability-a-pragmatic-look-at-roi-d5518e93f135?source=rss-77e9b1052803------2</link>
            <guid isPermaLink="false">https://medium.com/p/d5518e93f135</guid>
            <category><![CDATA[site-reliability-engineer]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[return-on-investment]]></category>
            <dc:creator><![CDATA[Elangovan Sivalingam]]></dc:creator>
            <pubDate>Tue, 20 May 2025 22:28:01 GMT</pubDate>
            <atom:updated>2025-05-23T11:57:58.542Z</atom:updated>
            <content:encoded><![CDATA[<h3>Build vs Buy in Observability: Step 1 — A Pragmatic Look at ROI</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oISs7PvMQ0gW1Bo1Fj7bHw.png" /><figcaption>Observability ROI</figcaption></figure><p>As organizations grow and their systems become increasingly complex, observability is no longer a luxury ,it’s a necessity. But a key decision many engineering and platform teams face is whether to <strong>build</strong> an observability solution in-house or <strong>buy</strong> a commercial tool. This decision isn’t just technical; it’s fundamentally about ROI,<strong>return on investment</strong>.</p><h3>🧠 The Strategic Decision: Build vs Buy</h3><p>At first glance, building might seem attractive. It gives you full control, tailored integrations, and the potential for long-term cost savings. But it also demands significant engineering effort, deep domain expertise, and ongoing maintenance. Buying, on the other hand, offers speed, reliability, and vendor support but at a recurring cost.</p><p>So how do you decide?</p><p>Let’s break it down.</p><h3>🧩 The Hidden Costs of Building</h3><p>Building an observability platform from scratch isn’t just about standing up a few open-source tools. You need:</p><ul><li><strong>Time:</strong> Expect quarters, not weeks, to build a production-ready solution.</li><li><strong>Talent:</strong> Engineers with deep expertise in observability patterns, telemetry pipelines, distributed tracing, alerting logic, and UI/UX.</li><li><strong>Maintenance:</strong> Tool upgrades, scaling, integrations, and support overhead.</li><li><strong>Opportunity Cost:</strong> Every hour spent on platform work is time not spent delivering core product features.</li></ul><p>While it may seem “free” to use open-source software, the real costs are often buried in engineering hours and operational complexity.</p><h3>💳 The Case for Buying</h3><p>Buying an observability solution like Dynatrace, AppDynamics or Datadog means:</p><ul><li><strong>Immediate value:</strong> Fast setup and out-of-the-box insights.</li><li><strong>Reduced cognitive load:</strong> Engineers focus on interpreting signals, not managing pipelines.</li><li><strong>Predictable costs:</strong> Especially helpful when forecasting budgets.</li><li><strong>Product maturity:</strong> Commercial tools often come with battle-tested features like RBAC, anomaly detection, SLO tracking, and robust visualizations.</li></ul><p>In many cases, <strong>buying offers faster time to insight</strong>, which is critical when every minute of downtime can cost thousands — or millions.</p><h3>⚖️ Making the ROI Case</h3><p>Whether you’re building or buying, the ROI should be front and center:</p><ul><li>Are engineers resolving incidents faster?</li><li>Is on-call fatigue decreasing?</li><li>Are you reducing MTTR and improving customer experience?</li><li>Can you support more users with fewer production incidents?</li></ul><p>The best observability investments free your teams to focus on what matters: <strong>shipping reliable features, not debugging pipelines.</strong></p><h3>🧭 When Building Makes Sense</h3><p>That said, there are legitimate cases for building:</p><ul><li>You have <strong>unique internal needs</strong> commercial tools can’t address.</li><li>You’re at <strong>massive scale</strong> where vendor pricing becomes prohibitive.</li><li>You have a <strong>platform engineering team</strong> with capacity and expertise to own the stack.</li></ul><p>In such scenarios, the build route may offer a better long-term ROI, if you’re ready to invest heavily.</p><h3>🧠 Final Thought</h3><p>Observability is about gaining confidence in the systems you operate. Whether you build or buy, the end goal is the same: <strong>actionable insight, not just data</strong>.</p><p>So before spinning up your next Jaeger or Prometheus cluster, ask yourself:<br> 👉 <em>“Are we solving the right problem, or just building another tool?”</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d5518e93f135" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>