<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Steef-Jan Wiggers</title>
    <description>The latest articles on DEV Community by Steef-Jan Wiggers (@steefjan_wiggers_34a415b).</description>
    <link>https://dev.to/steefjan_wiggers_34a415b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4108081%2Fbc7c1eee-c91f-4098-a748-7fd0e58a971f.jpg</url>
      <title>DEV Community: Steef-Jan Wiggers</title>
      <link>https://dev.to/steefjan_wiggers_34a415b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/steefjan_wiggers_34a415b"/>
    <language>en</language>
    <item>
      <title>The Microsoft AI Stack in 2026 and the Certification Trail That Runs Through It</title>
      <dc:creator>Steef-Jan Wiggers</dc:creator>
      <pubDate>Thu, 03 Sep 2026 13:35:30 +0000</pubDate>
      <link>https://dev.to/steefjan_wiggers_34a415b/the-microsoft-ai-stack-in-2026-and-the-certification-trail-that-runs-through-it-2e5h</link>
      <guid>https://dev.to/steefjan_wiggers_34a415b/the-microsoft-ai-stack-in-2026-and-the-certification-trail-that-runs-through-it-2e5h</guid>
      <description>&lt;p&gt;I spent some time observing what's inside the Microsoft AI stack. Foundry, Agent Framework, Logic Apps, AI Search, Purview, Entra. After a while, I had a picture of how the pieces fit and decided to draw one myself to share.&lt;/p&gt;

&lt;p&gt;Then recently Microsoft published &lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/exams/ai-500/" rel="noopener noreferrer"&gt;AI-500&lt;/a&gt;, an expert certification for multi-agent systems. That made me curious whether Microsoft's view of the platform matches my own. So I plotted the certification trail against my diagram. This post shows the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Microsoft AI stack as I see it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9j2by5ri0d49t818n22n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9j2by5ri0d49t818n22n.png" alt=" " width="800" height="780"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Six layers. Five of them stack vertically. The sixth runs down the side, through all the others.&lt;/p&gt;

&lt;p&gt;Models sit at the bottom: GPT-5, Claude, Mistral, Grok, Microsoft’s own MAI and Phi, Llama, DeepSeek, and the open catalog. This is the least differentiated layer. In Foundry, swapping one model for another is a configuration change. It gets the most attention and deserves the least.&lt;/p&gt;

&lt;p&gt;Infrastructure comes next. Foundry is the hub, alongside Azure OpenAI, Azure ML, AKS, Container Apps, App Service, and Foundry Local for the edge. This is hosting, serving, and compute. Solid and well understood.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data and context: the real moat
&lt;/h2&gt;

&lt;p&gt;I split the data layer in two, because it hides the most important part of the platform. Layer 3a holds the sources of truth: Microsoft Graph, SharePoint, Exchange, Fabric and OneLake, Dataverse, and the vector stores in Cosmos DB, Azure SQL, and PostgreSQL.&lt;/p&gt;

&lt;p&gt;Layer 3b is context. Work IQ, Fabric IQ, Foundry IQ, and Azure AI Search turn enterprise data into grounding that respects who is asking. Permission-trimmed retrieval must honor Entra ACLs at query time, not filter after ranking. AI Search supports this through document-level access control. Get it wrong and answers leak, or recall collapses.&lt;/p&gt;

&lt;p&gt;This is where the hard engineering hours go. Swapping a model is a config change. Graph-grounded context is months of work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents, Copilots, and the layer vendors leave out
&lt;/h2&gt;

&lt;p&gt;The agentic platform sits above the data. Microsoft Agent Framework merged Semantic Kernel and AutoGen. Next to it sit Foundry Agent Service, Copilot Studio, Logic Apps, Azure Functions, Service Bus, and Event Grid. MCP and A2A handle tools and agent-to-agent communication.&lt;/p&gt;

&lt;p&gt;The Copilot layer is on top: Microsoft 365, GitHub, Security, Dynamics 365, Power Platform, and Teams. This is distribution. These are the surfaces people already live in. As a result, enterprise AI adoption is easier when data, permissions, infrastructure, and applications already exist in one ecosystem.&lt;/p&gt;

&lt;p&gt;Then comes the sixth layer of the Microsoft AI stack, the one vendor diagrams leave out: governance and evidence. Entra ID and Entra Agent ID handle identity. Purview covers labels, DLP, and audit. Content Safety and API Management provide guardrails and the AI gateway. Defender, Sentinel, Azure Monitor, Log Analytics, and Azure Policy deliver traces, evaluations, and control evidence.&lt;/p&gt;

&lt;p&gt;I work for a regulated organization. Before anything goes live, Legal and Internal Audit ask four questions. Who approved the agent? What data did it access? Which controls applied? What happened when it made a wrong decision? Distribution makes deployment easier. However, without traceable evidence it does not make the system production ready. That is why this layer runs vertically through my drawing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Microsoft AI certification trail
&lt;/h2&gt;

&lt;p&gt;I knew AI-900. I had not followed what replaced it. This week I learned that Microsoft now offers a full set of AI certifications, from fundamentals to an expert exam. The expert exam, AI-500, is in beta. I read the study guide. Its scope says a lot: orchestration patterns, agent-to-agent protocols, observability, guardrails, and cost control. Architecture work, end to end.&lt;/p&gt;

&lt;p&gt;What made it click was laying the whole trail side by side. Each step has its own verb.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/exams/ai-901/" rel="noopener noreferrer"&gt;AI-901&lt;/a&gt;, Azure AI Fundamentals. Understand the concepts and services.&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/azure-ai-apps-and-agents-developer-associate/" rel="noopener noreferrer"&gt;AI-103&lt;/a&gt;, AI Apps and Agents Developer. Build applications and agentic solutions on Foundry.&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/exams/ai-200/" rel="noopener noreferrer"&gt;AI-200&lt;/a&gt;, Azure AI Cloud Developer. Engineer cloud-native AI properly.&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/exams/ai-300/" rel="noopener noreferrer"&gt;AI-300&lt;/a&gt;, ML Operations Engineer. Operate models in production.&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/gh-300" rel="noopener noreferrer"&gt;GH-300&lt;/a&gt; and &lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/gh-600" rel="noopener noreferrer"&gt;GH-600&lt;/a&gt;, Copilot and Agentic AI Developer. Ship with agents working beside you.&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/exams/ai-500/" rel="noopener noreferrer"&gt;AI-500&lt;/a&gt;, Multi-Agent AI Solutions Expert. Orchestrate systems of agents at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plotting the trail on the Microsoft AI stack
&lt;/h2&gt;

&lt;p&gt;Six exams, six layers of the Microsoft AI stack. I mapped each exam to its layers, in its study guide exercises, and its center of gravity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv9jz8costbum9to675d9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv9jz8costbum9to675d9.png" alt=" " width="799" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft AI certification trail from AI-901 to AI-500 plotted against the six layers of the Microsoft AI stack&lt;br&gt;
The fundamentals exam touches every layer at concept depth. AI-103 lives in models, infrastructure, context, and the agentic platform. AI-200 moves down into infrastructure and data. AI-300 sits on infrastructure and the evidence plane, because operating models in production is mostly monitoring and evaluation. Meanwhile, the GitHub exams live at the top, where developers meet agents in the editor.&lt;/p&gt;

&lt;p&gt;AI-500 is the interesting one. It spans context, the agentic platform, and governance. It does not test models at all. In fact, three of its five headline topics belong to the plane most stack diagrams leave out.&lt;/p&gt;

&lt;p&gt;That was the moment the two pictures agreed. My diagram says the hard part of the Microsoft AI stack is context and evidence, not model choice. Microsoft’s expert exam tests context and evidence, not model choice. I did not expect a certification roadmap to confirm an architecture opinion, but here we are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is the wrong answer
&lt;/h2&gt;

&lt;p&gt;Do not read the trail as a ladder you must climb in order. If you already run agents in production, AI-500 reflects your work, and AI-901 will teach you nothing. Platform engineers should look at AI-200 and AI-300 first. Developers should start with the GitHub exams.&lt;/p&gt;

&lt;p&gt;Also, do not read my layer mapping as Microsoft’s. It is my reading of the study guides, and beta study guides move.&lt;/p&gt;

&lt;p&gt;Finally, do not confuse the certificate with the evidence. Passing AI-500 shows you know what a control looks like. It does not produce the audit trail for your agent. That still takes Purview configured, Entra Agent ID issued, traces flowing to Log Analytics, and someone signing off. The exam is a map of the work. The work is still the work!&lt;/p&gt;

&lt;p&gt;Original post from sjwiggers.com: Cloud Perspectives - &lt;a href="https://sjwiggers.com/2026/09/02/microsoft-ai-stack-2026-certification-trail/" rel="noopener noreferrer"&gt;The Microsoft AI Stack in 2026 and the Certification Trail That Runs Through It&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>certification</category>
      <category>azure</category>
    </item>
    <item>
      <title>When Agentic Workloads Break the PaaS Assumptions</title>
      <dc:creator>Steef-Jan Wiggers</dc:creator>
      <pubDate>Thu, 03 Sep 2026 13:21:18 +0000</pubDate>
      <link>https://dev.to/steefjan_wiggers_34a415b/when-agentic-workloads-break-the-paas-assumptions-4a28</link>
      <guid>https://dev.to/steefjan_wiggers_34a415b/when-agentic-workloads-break-the-paas-assumptions-4a28</guid>
      <description>&lt;p&gt;This series started with a &lt;a href="https://sjwiggers.com/2026/07/02/azure-paas-for-integration-architects/" rel="noopener noreferrer"&gt;map&lt;/a&gt; and grew into seven pieces. Five layers came first: &lt;a href="https://sjwiggers.com/2026/07/10/azure-app-service-architecture-integration-architects/" rel="noopener noreferrer"&gt;compute&lt;/a&gt;, where load shape picks the service; &lt;a href="https://sjwiggers.com/2026/07/16/azure-messaging-and-orchestration-for-integration-architects/" rel="noopener noreferrer"&gt;messaging and orchestration&lt;/a&gt;, where two questions replace four product choices; &lt;a href="https://sjwiggers.com/2026/08/05/azure-data-patterns-for-integration-architects/" rel="noopener noreferrer"&gt;data patterns&lt;/a&gt;, where idempotency and the outbox keep a platform correct; &lt;a href="https://sjwiggers.com/2026/08/11/azure-governance-and-identity-for-integration-architects/" rel="noopener noreferrer"&gt;governance and identity&lt;/a&gt;, where policy and audit become the compliance posture; and &lt;a href="https://sjwiggers.com/2026/08/20/azure-observability-and-finops-for-integration-architects/" rel="noopener noreferrer"&gt;observability and FinOps&lt;/a&gt;, where behaviour and cost become visible. Then came the lens: &lt;a href="https://sjwiggers.com/2026/08/25/from-design-to-demonstrable-operation/" rel="noopener noreferrer"&gt;from design to demonstrable operation&lt;/a&gt;, the shift from "is it built?" to "can we operate it responsibly?"&lt;/p&gt;

&lt;p&gt;Every one of those pieces rests on a shared assumption. The system does what you told it to do. You wrote the workflow, you defined the routes, you set the policies, and the platform executes them. That assumption has held for every integration platform I've built. Agentic workloads break it. So this capstone asks what changes when the thing making decisions inside your platform is a model, not your code, and why each layer, plus the readiness lens itself, deserves a second look because of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The assumption agentic workloads break
&lt;/h2&gt;

&lt;p&gt;Conventional integration is deterministic. A message arrives, a workflow runs its defined steps, a router sends it where the rules say. You can read the code and know what will happen. You can test every path. When something fails, you trace it to a step you wrote.&lt;/p&gt;

&lt;p&gt;Agentic workloads replace part of that determinism with a model that decides at runtime. The agent reads context, picks a tool, interprets the result, and chooses the next action. Moreover, it does so differently depending on inputs you didn't fully anticipate. That's the point of it: the flexibility is the feature. But it means you can no longer read the code and know what will happen. So the ground under every layer shifts: behavior is no longer exactly what you specified.&lt;/p&gt;

&lt;p&gt;None of this argues against agentic workloads. It argues for revisiting each layer with the shift named explicitly. Let's do that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compute: the loop changes the shape of the work
&lt;/h2&gt;

&lt;p&gt;The compute layer sorted workloads by load shape: steady request traffic to App Service, event-driven bursts to Functions or Container Apps. Agentic workloads add a shape that sorting didn't account for: the loop.&lt;/p&gt;

&lt;p&gt;An agent doesn't process a request and return. It reasons, calls a tool, waits, observes, and reasons again, sometimes for many cycles, before it finishes. That's neither a clean request-response nor a discrete event. Instead, it's a long-running loop of unpredictable duration with external calls in the middle. So the compute question changes. You're no longer asking "steady or bursty" alone. You're asking how to host something that runs for seconds or minutes, holds state across tool calls, and scales on a dimension — concurrent reasoning loops — that CPU-and-memory autoscale captures poorly. Container Apps with event-driven scaling often fit better here than App Service, and the orchestration frequently belongs in a workflow engine rather than raw compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Messaging and orchestration: the agent is a non-deterministic router
&lt;/h2&gt;

&lt;p&gt;The messaging layer drew a clean line. Deterministic routing rules sent messages where the logic dictated. An agent orchestrating tool calls is, in effect, a router too, but a non-deterministic one. It decides which tool to call from its reading of the context, not from a rule you wrote.&lt;/p&gt;

&lt;p&gt;The reliability consequences are real. Delivery guarantees still matter; an agent that triggers a business action still needs that action to occur exactly once, so Service Bus and the idempotency store in the data layer remain as relevant as ever. What changes is predictability. You can't fully anticipate which actions the agent will trigger, or in what order. Therefore, the orchestration has to stay correct under sequences you didn't design for. One practical lesson from building these loops applies directly: agent outputs rarely arrive as the clean structures a deterministic step would emit, so you build explicit bridges between agent actions rather than assuming shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data: state and correctness under non-determinism
&lt;/h2&gt;

&lt;p&gt;The data patterns held a platform correct when systems it didn't control misbehaved. Agentic workloads make those patterns more necessary, not less, and they add one more.&lt;/p&gt;

&lt;p&gt;Idempotency matters more because an agent may retry a tool call or repeat an action as it reasons, so the dedup store carries a heavier load. The outbox matters just as much, because an agent-triggered write still has to propagate reliably. Workflow state matters more too, since the reasoning loop is exactly the kind of long-running, restart-surviving process that needs durable state and a correlation ID. And then the new one: conversation and context state. An agent carries context across turns, and that context has to live somewhere durable and queryable, which explains why a flexible document store keeps showing up as the default for agentic conversation state. The access pattern points at the store. Same principle as the map, applied to a new kind of state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Governance and identity: where the assumptions break hardest
&lt;/h2&gt;

&lt;p&gt;This layer changes most, and I'd insist any integration architect think it through before shipping an agentic workload.&lt;/p&gt;

&lt;p&gt;The governance layer secured a deterministic platform. Identity answered who the caller was; policy constrained what the platform could be. Both still matter. However, agentic workloads open a gap that neither fully closes. Identity secures who the agent is. It does not touch what a poisoned tool result or a manipulated retrieved document makes the agent do. Prompt injection rides in through the data the agent requested inside the reasoning loop, downstream of the perimeter check everyone assumes protects them.&lt;/p&gt;

&lt;p&gt;So the governance layer needs additions a deterministic platform never required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authorization moves per-action: A validated identity at the edge isn't enough. Each tool call the agent makes needs its own check: is this specific action allowed for this tenant right now? The perimeter check happens once; the risk recurs on every call inside the loop.&lt;/li&gt;
&lt;li&gt;Recovery means compensation, not retry: Agent actions have side effects across systems. A failed sequence three actions deep can't restart from the top; it needs compensating actions to undo what already happened. That's saga-style thinking, and you design it; it doesn't emerge.&lt;/li&gt;
&lt;li&gt;Containment has to be possible: When an agent misbehaves, you stop it fast, and at more than one layer. Layered containment, from a single configuration flip-up to a full block, turns "contain the agent" from an incident-call debate into a seconds-long operation.&lt;/li&gt;
&lt;li&gt;Evaluation becomes a first-class layer: Operational observability tells you the agent is running. It doesn't tell you the agent's outputs are quietly degrading. Under the EU AI Act's oversight and transparency duties, that stops being optional polish and becomes evidence you're meeting an obligation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The readiness lens, asked again
&lt;/h2&gt;

&lt;p&gt;The design-to-operation post posed the question that decides go-live: not "is it built?" but "can we operate it safely, recoverably, auditably, and predictably?" Agentic workloads sharpen every word of that sentence.&lt;/p&gt;

&lt;p&gt;Safely now includes per-action authorization and containment, because the threat walks in as data. Recoverably now means compensation and sagas, because retry alone can't undo side effects. Auditably now covers what the agent accessed, which tool it called, why it acted, and what policy constrained it — evidence the EU AI Act increasingly expects. And predictably is precisely the property the agent gave up, which is why the surrounding architecture has to supply it instead. The production baseline, the demonstrable-versus-designed test, the three moments of readiness — all of it still applies. Each bar sits higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  The revised framework
&lt;/h2&gt;

&lt;p&gt;The map closes with five questions. For agentic workloads, they hold, and each gains a harder edge. Before an agentic workload goes near a real system, I'd add these:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can I host a long-running reasoning loop, not just a request or an event? Can my orchestration stay correct when I can't predict the action sequence? Does my data layer hold conversation state as well as business state, with idempotency doing heavier duty? Is authorisation per-action, not just per-identity? Can I contain a misbehaving agent in seconds? And can I evidence what the agent did, why, and whether its quality held?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those aren't different questions from the series. They're the same layers, asked again under non-determinism, and then held up against the readiness lens one more time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The shape of it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53fjhpshgxy1ce7oyqr7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53fjhpshgxy1ce7oyqr7.png" alt=" " width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each layer in the series meets its agentic stressor: the loop, the non-deterministic router, conversation state, injection past the perimeter, the evaluation question, and the readiness lens. Spanning them all, the workload surrendered predictability, so the architecture supplies it.&lt;/p&gt;

&lt;p&gt;Agentic workloads don't replace the Azure PaaS foundation an integration architect builds on. They stress it. Every layer in this series still includes compute, messaging, data, governance, and observability, but each one now supports a workload that decides for itself at runtime. The compute layer meets the loop. The messaging layer meets a non-deterministic router. The data layer meets conversation state and heavier idempotency. The governance layer meets a threat that walks in through the front door as data. And the readiness lens meets a workload that surrendered predictability, so the architecture has to supply it.&lt;/p&gt;

&lt;p&gt;The through-line of the whole series holds here too. The model is the least differentiated part of a production agent. What separates a demo from something you can run against real systems in a regulated industry is the architecture around it: the same layers, asked harder, and proven in operation rather than promised in design. So the foundation was never wasted. It's exactly what agentic workloads need, applied with the assumptions made explicit.&lt;/p&gt;

&lt;p&gt;That's the series. Start at the &lt;a href="https://sjwiggers.com/2026/07/02/azure-paas-for-integration-architects/" rel="noopener noreferrer"&gt;Azure PaaS map&lt;/a&gt; for the layer-by-layer foundation, take the &lt;a href="https://sjwiggers.com/2026/08/25/from-design-to-demonstrable-operation/" rel="noopener noreferrer"&gt;design-to-operation lens&lt;/a&gt; with you as the test, and come back here for what changes when the workload thinks for itself.&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://sjwiggers.com/2026/08/27/when-agentic-workloads-break-the-paas-assumptions/" rel="noopener noreferrer"&gt;Cloud Perspectives&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Why Cosmos DB Ends Up as the Agent Memory Database</title>
      <dc:creator>Steef-Jan Wiggers</dc:creator>
      <pubDate>Thu, 03 Sep 2026 12:57:42 +0000</pubDate>
      <link>https://dev.to/steefjan_wiggers_34a415b/why-cosmos-db-ends-up-as-the-agent-memory-database-5371</link>
      <guid>https://dev.to/steefjan_wiggers_34a415b/why-cosmos-db-ends-up-as-the-agent-memory-database-5371</guid>
      <description>&lt;p&gt;The first post in a series on Cosmos DB agent memory for AI agents, starting nine years before "AI agent" was a category.&lt;/p&gt;

&lt;p&gt;In 2017, I built a proof of concept for a customer: a knowledge base on Cosmos DB, using the Graph model and Search, running at roughly 1,000 euros a month. I presented it at CloudBrew. One attendee wasn't impressed:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The most uninteresting talk of the day came from Steef-Jan Wiggers, who, in my opinion, delivered an hour-long marketing pitch for CosmosDB. I think it's expensive for what it currently offers, and many developers could architect something with just as much performance without needing CosmosDB.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He wasn't wrong that 1,000 euros a month raises eyebrows as a line item. He was wrong about what the line item paid for: the knowledge base was the product a subscription business planned to sell. Compare the cost to the revenue it enabled, and it's negligible. Compare it to nothing, and of course it looks "expensive." I made the same point about Figma's AWS bill last year: $109 million a year sounds alarming until you check it against $821 million in revenue and a business model that requires sub-100ms real-time collaboration for 13 million users. In short, cost without context is just a number that sounds big.&lt;/p&gt;

&lt;p&gt;So here's the same argument, nine years later, with a different workload. Agent memory — chat turns, tool call results, embeddings, user preferences — is expensive to store the wrong way and reasonably cheap to store the right way, and increasingly "the right way" means one database instead of three. I'll come back to the actual RU numbers in post 6; for now, this post is about why the architecture argument holds up before cost even enters the picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Same Shape of Problem, Nine Years Apart
&lt;/h2&gt;

&lt;p&gt;Strip away "AI agent" and look at what you're actually storing: short-lived, high-volume, time-ordered records that need fast writes and selective recall. That's chat turns and tool outputs today. It's also, structurally, what I modeled in a Cosmos DB Conf 2023 talk on end-to-end retail process monitoring — messages and batches flowing between an ERP, a WMS, and a PIM system, which I tracked so a retailer could tell where something broke.&lt;/p&gt;

&lt;p&gt;Different domain, same shape, though: append-heavy writes, a need to reconstruct "what happened, in order," and a downstream system (an incident manager then, an LLM now) that needs the right slice of history on demand, not the whole history every time.&lt;/p&gt;

&lt;p&gt;In general, agent memory falls into two categories:&lt;/p&gt;

&lt;p&gt;Short-term (episodic/working) memory — the last 5–10 turns of a conversation, intermediate tool call results, partial task state. Useful for the current task, disposable afterward (Cosmos DB's time-to-live feature is a natural fit here — more on that in post 2).&lt;br&gt;
Long-term memory — user preferences, summarized threads, facts the agent should persist and recall across sessions.&lt;/p&gt;

&lt;p&gt;Both need somewhere to live, but the default answer for the last few years has been: somewhere different.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Stitched Stack Breaks Down for Cosmos DB Agent Memory
&lt;/h2&gt;

&lt;p&gt;The common pattern from 2022 through 2025 was to give each concern its own database — an in-memory store for caching and session state, a relational database for operational data and conversation logs, a purpose-built vector database for embeddings. A reasonable instinct, in theory: each tool for its own job.&lt;/p&gt;

&lt;p&gt;In practice, though, it doesn't hold up once an agent is the thing reading and writing across all three, on every turn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23qvvev5njgc6qdxzcpc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23qvvev5njgc6qdxzcpc.png" alt="Diagram comparing a stitched cache, SQL, and vector stack to a unified Cosmos DB agent memory layer feeding an AI agent" width="799" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three databases, three failure modes — versus one Cosmos DB agent memory layer.&lt;/p&gt;

&lt;p&gt;Each piece has a real weakness once agents are the workload, not an afterthought:&lt;/p&gt;

&lt;p&gt;Pure vector databases tend to offer no strong read/write guarantees, limited ingestion throughput, availability below 99.9%, a single (eventual) consistency level, and thin multitenancy support. Fine for an embeddings side-project. Shaky as the record of what an agent told a customer.&lt;br&gt;
Relational databases fight the fluid, evolving schema of agent state — new fields, new memory types, nested tool outputs — without migrations and, often, downtime.&lt;br&gt;
In-memory caches are fast and don't persist, which is exactly backwards from what long-term memory needs.&lt;/p&gt;

&lt;p&gt;As a result, three systems also means three consistency models, three availability profiles, and three places a multi-agent system can silently desynchronize. And that complexity tax doesn't show up in any single service's bill, which is part of why it's easy to miss until something breaks in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unified Case — and How Much of It I'd Already Used
&lt;/h2&gt;

&lt;p&gt;The pitch for Cosmos DB agent memory as a unified layer rests on a small set of properties: single-digit-millisecond latency, a 99.999% availability SLA on the NoSQL API, DiskANN-based vector indexing built into the same store as the operational data, multi-master writes, and five selectable consistency levels from strong to eventual. In plain terms, that's one system that's fast enough for the hot path, available enough for production, and flexible enough to hold embeddings next to the record they came from.&lt;/p&gt;

&lt;p&gt;In fact, two of the pieces that make this work aren't new to me, or new to this blog.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7uo19ns2oqop2256qjc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7uo19ns2oqop2256qjc6.png" alt="Timeline showing the author's Cosmos DB work from a 2017 proof of concept to 2023 retail monitoring to 2026 agent memory" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Change feed and hierarchical partition keys weren't built for AI agents — they just turned out to be exactly what Cosmos DB agent memory needed.&lt;/p&gt;

&lt;p&gt;Change feed, for example. In the retail monitoring solution, change feed was the mechanism that turned a write into a trigger — a new record landing in Cosmos DB fired a Function, which could raise an incident. That's the same primitive I'll use in post 4 to coordinate handoffs between agents in a multi-agent system: one agent's write becomes another agent's signal to act, without polling.&lt;/p&gt;

&lt;p&gt;Hierarchical partition keys, likewise. I covered these in Azure Cosmos DB's Latest Performance Features back in 2023 — partitioning by tenant, then by item, to keep related data colocated while avoiding the 20 GB logical partition ceiling. The mechanism hasn't changed; what's changed is the workload. Post 2 uses the exact same [tenantId, threadId] pattern to isolate one customer's agent conversations from another's.&lt;/p&gt;

&lt;p&gt;Even so, I didn't build either feature for AI agents. Both turned out to be exactly what agent memory needs — a decent sign that the underlying database was solid before the AI use case arrived, and nobody retrofitted it to fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where This Series Is Headed
&lt;/h2&gt;

&lt;p&gt;This post is the framing argument for Cosmos DB agent memory. From here, the rest of the series gets specific:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sjwiggers.com/2026/09/01/cosmos-db-agent-memory-schema/" rel="noopener noreferrer"&gt;Post 2&lt;/a&gt; — designing the agent memory schema itself: partition key choice, TTL, and the turn-based data model that works best in practice.&lt;br&gt;
&lt;a href="https://sjwiggers.com/2026/09/03/cosmos-db-agent-memory-search/" rel="noopener noreferrer"&gt;Post 3&lt;/a&gt; — vector, full-text, and hybrid search for recalling the right memories, not just any memories.&lt;br&gt;
Post 4 (TBD) — multi-agent state and coordination, including change feed as the handoff mechanism.&lt;br&gt;
Post 5 (TBD) — wiring Cosmos DB into Microsoft Foundry Agent Service as bring-your-own thread storage.&lt;br&gt;
Post 6 (TBD) — the cost conversation, properly this time: RU drivers, semantic caching, and what this actually costs to run at scale.&lt;/p&gt;

&lt;p&gt;The 2017 knowledge base cost 1,000 euros a month and paid for itself many times over as a revenue-generating product. Ultimately, the question worth asking about agent memory infrastructure in 2026 isn't "is this expensive" — it's the same question it always was: expensive relative to what?&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/azure/cosmos-db/ai-agents" rel="noopener noreferrer"&gt;AI agents in Azure Cosmos DB&lt;/a&gt;&lt;br&gt;
Microsoft Learn — &lt;a href="https://learn.microsoft.com/en-us/azure/cosmos-db/time-to-live" rel="noopener noreferrer"&gt;Time to live (TTL) in Azure Cosmos DB&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sjwiggers.com/2023/07/20/azure-cosmos-dbs-latest-performance-features/" rel="noopener noreferrer"&gt;Azure Cosmos DB's Latest Performance Features&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sjwiggers.com/2025/07/16/figma-aws-costs-cloud-spend-explained/" rel="noopener noreferrer"&gt;Figma AWS Costs Explained: Beyond the Hype and Panic&lt;/a&gt;&lt;br&gt;
Microsoft Learn Shows — &lt;a href="https://learn.microsoft.com/nl-nl/shows/azure-cosmos-db-conf-2023/leveraging-azure-cosmos-db-for-end-to-end-monitoring-of-retail-processes" rel="noopener noreferrer"&gt;Leveraging Azure Cosmos DB for End-to-End Monitoring of Retail Processes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://sjwiggers.com/2026/08/30/why-cosmos-db-ends-up-as-the-agent-memory-database/" rel="noopener noreferrer"&gt;Cloud Perspectives&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cosmosdb</category>
      <category>agents</category>
      <category>database</category>
    </item>
  </channel>
</rss>
