Files
nexus/sreweekly/articles/451/07-when-to-use-cosmos-db.html
2026-09-12 17:23:01 +08:00

233 lines
170 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html><html lang="en-US" prefix="og: http://ogp.me/ns#"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=5"><script>var segmentWriteKey="UK90Ofwacetj5VCPJ7cUgkbNcKLSHO3u",snippetName="C8Y429BDEy/06ujkUhzfL.min.js";window.growthbook_sdk_key="sdk-psPofGr6jFV2ja9O",window.growthbook_decrypt_key="9NsAVMNWaDS+Oky3rhLQ+A==",window.growthbook_dev_mode=!1</script><link rel="preconnect" href="https://cdn.segment.com" crossorigin><link rel="preconnect" href="https://cdn.growthbook.io" crossorigin><link rel="preconnect" href="https://cdn.cr-relay.com" crossorigin><link rel="preconnect" href="https://bzrcdn.openai.com" crossorigin><link rel="preload" href="/fonts/monaspace-neon-regular.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/inter-regular.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/inter-semibold.woff2" as="font" type="font/woff2" crossorigin><link rel="llms-txt" href="/llms.txt"><script src="/js/bundle.6c1f5611.js" defer></script><script src="/js/algolia.0829731d.js" defer></script><link rel="stylesheet" href="/css/bundle.push-cbf96af2.css"><meta name="google-site-verification" content="N-ezSTIu4P3bSc4TqidV4wWCkMzFiMN269ZgDYArGkk"><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@id":"#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://www.pulumi.com","name":"Home","position":1},{"@type":"ListItem","item":"https://www.pulumi.com/blog/","name":"Blog","position":2},{"@type":"ListItem","name":"When to Use Cosmos DB","position":3}]},{"@id":"#main-content","@type":"BlogPosting","articleSection":"General","author":[{"@id":"https://www.pulumi.com/authors/adam-gordon-bell/#person","@type":"Person","affiliation":{"@id":"https://www.pulumi.com/#organization","@type":"Organization","name":"Pulumi"},"image":"https://www.pulumi.com/images/team/adam-gordon-bell.jpg","jobTitle":"Community Engineer","knowsAbout":["Infrastructure as Code","Cloud Computing","DevOps","Software Engineering"],"name":"Adam Gordon Bell","sameAs":["https://github.com/adamgordonbell","https://x.com/adamgordonbell","https://linkedin.com/in/adamgordonbell"],"url":"https://www.pulumi.com/blog/author/adam-gordon-bell/","worksFor":{"@id":"https://www.pulumi.com/#organization","@type":"Organization","name":"Pulumi"}}],"dateModified":"2026-09-03T18:09:29-05:00","datePublished":"2024-11-11T17:39:54-05:00","description":"Discover when to use Cosmos DB and how it compares with PostgreSQL, MongoDB, Cassandra, and DynamoDB. Learn about scalability, performance, cost \u0026 use cases.","headline":"When to Use Cosmos DB","image":"https://www.pulumi.com/images/generated/blog/when-to-use-azure-cosmos-db/index.png","inLanguage":"en-US","isPartOf":{"@id":"https://www.pulumi.com/#website"},"keywords":"azure","mainEntityOfPage":{"@id":"https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/#webpage"},"publisher":{"@id":"https://www.pulumi.com/#organization"},"speakable":{"@type":"SpeakableSpecification","cssSelector":["article h1","article \u003e section:first-of-type \u003e p:first-of-type"]},"timeRequired":"PT18M","url":"https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/","wordCount":3723},{"@id":"https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/#webpage","@type":"WebPage","breadcrumb":{"@id":"#breadcrumb"},"dateModified":"2026-09-03T18:09:29-05:00","datePublished":"2024-11-11T17:39:54-05:00","description":"Discover when to use Cosmos DB and how it compares with PostgreSQL, MongoDB, Cassandra, and DynamoDB. Learn about scalability, performance, cost \u0026 use cases.","headline":"When to Use Cosmos DB","inLanguage":"en-US","isPartOf":{"@id":"https://www.pulumi.com/#website"},"mainEntity":{"@id":"#main-content"},"mentions":[{"@id":"https://en.wikipedia.org/wiki/Kubernetes","@type":"SoftwareApplication","alternateName":"K8s","name":"Kubernetes","sameAs":"https://www.wikidata.org/wiki/Q22661306"},{"@id":"https://en.wikipedia.org/wiki/C_Sharp_(programming_language)","@type":"ComputerLanguage","alternateName":"CSharp","name":"C#","sameAs":"https://www.wikidata.org/wiki/Q2370"},{"@id":"https://en.wikipedia.org/wiki/PostgreSQL","@type":"SoftwareApplication","alternateName":"Postgres","name":"PostgreSQL","sameAs":"https://www.wikidata.org/wiki/Q192490"},{"@id":"https://en.wikipedia.org/wiki/MongoDB","@type":"SoftwareApplication","name":"MongoDB","sameAs":"https://www.wikidata.org/wiki/Q1165204"},{"@id":"https://en.wikipedia.org/wiki/Redis","@type":"SoftwareApplication","name":"Redis","sameAs":"https://www.wikidata.org/wiki/Q2136322"}],"name":"When to Use Cosmos DB","url":"https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/"},{"@id":"https://www.pulumi.com/#organization","@type":["Organization","Corporation"],"alternateName":"Pulumi","description":"Pulumi enables cloud infrastructure teams to define, deploy, and manage cloud resources using familiar programming languages.","foundingDate":"2017","logo":{"@type":"ImageObject","height":299,"url":"https://brand.pulumi.com/media/images/logos/horizontal-1200w.png","width":1200},"name":"Pulumi Corporation","sameAs":["https://github.com/pulumi","https://twitter.com/PulumiCorp","https://x.com/PulumiCorp","https://www.linkedin.com/company/pulumi","https://www.youtube.com/channel/UC2Dhyn4Ev52YSbcpfnfP0Mw","https://www.wikidata.org/wiki/Q122864080","https://en.wikipedia.org/wiki/Pulumi","https://www.crunchbase.com/organization/pulumi-corporation"],"url":"https://www.pulumi.com"},{"@id":"https://www.pulumi.com/#website","@type":"WebSite","alternateName":"Pulumi IaC Platform","description":"Infrastructure as Code platform with AI. Deploy to any cloud using TypeScript, Python, Go, C#, Java, or YAML.","inLanguage":"en-US","name":"Pulumi","publisher":{"@id":"https://www.pulumi.com/#organization"},"url":"https://www.pulumi.com"},{"@id":"https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/#video","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=XcB1Prpx-OE?rel=0","description":"Discover when to use Cosmos DB and how it compares with PostgreSQL, MongoDB, Cassandra, and DynamoDB. Learn about scalability, performance, cost \u0026 use cases.","embedUrl":"https://www.youtube.com/embed/XcB1Prpx-OE?rel=0","name":"When to Use Cosmos DB","publisher":{"@id":"https://www.pulumi.com/#organization"},"thumbnailUrl":"https://img.youtube.com/vi/XcB1Prpx-OE?rel=0/maxresdefault.jpg","uploadDate":"2024-11-11T17:39:54-05:00"}]}</script><meta property="og:image" content="https://www.pulumi.com/images/generated/blog/when-to-use-azure-cosmos-db/index.png"><meta property="og:type" content="article"><meta property="og:url" content="https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/"><meta property="og:site_name" content="pulumi"><meta name="twitter:image" content="https://www.pulumi.com/images/generated/blog/when-to-use-azure-cosmos-db/index.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@PulumiCorp"><meta property="article:author" content="Adam Gordon Bell"><meta name="author" content="Adam Gordon Bell"><meta property="article:published_time" content="2024-11-11T17:39:54-05:00"><meta property="article:modified_time" content="2026-09-03T18:09:29-05:00"><meta property="og:title" content="When to Use Cosmos DB"><meta name="description" content="Discover when to use Cosmos DB and how it compares with PostgreSQL, MongoDB, Cassandra, and DynamoDB. Learn about scalability, performance, cost & use cases."><meta property="og:description" content="Discover when to use Cosmos DB and how it compares with PostgreSQL, MongoDB, Cassandra, and DynamoDB. Learn about scalability, performance, cost & use cases."><title>When to Use Cosmos DB | Pulumi Blog</title><link rel="icon" type="image/x-icon" href="/images/favicon.ico"><link rel="canonical" href="https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/"><link rel="alternate" type="application/rss+xml" href="https://www.pulumi.com/blog/rss.xml" title="Pulumi Blog"><script>userAgentBlocklist=["Mozilla/5.0 (compatible; SiteAuditBot/0.97; +http://www.semrush.com/bot.html)","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"],!function(){var n,s,t="analytics",e=window[t]=window[t]||[];if(!e.initialize)if(e.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else if(userAgentBlocklist.includes(navigator.userAgent))console.log("Segment snippet not loaded for user agent: "+navigator.userAgent);else{e.invoked=!0,e.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"],e.factory=function(n){return function(){if(window[t].initialized)return window[t][n].apply(window[t],arguments);var o,s=Array.prototype.slice.call(arguments);return["track","screen","alias","group","page","identify"].indexOf(n)>-1&&(o=document.querySelector("link[rel='canonical']"),s.push({__t:"bpc",c:o&&o.getAttribute("href")||0[0],p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})),s.unshift(n),e.push(s),e}};for(n=0;n<e.methods.length;n++)s=e.methods[n],e[s]=e.factory(s);e.load=function(n,s){var i,o=document.createElement("script");o.type="text/javascript",o.async=!0,o.setAttribute("data-global-segment-analytics-key",t),o.src="https://evs.analytics.pulumi.com/"+snippetName,i=document.getElementsByTagName("script")[0],i.parentNode.insertBefore(o,i),e._loadOptions=s},e._writeKey=segmentWriteKey,e._cdn="https://evs.analytics.pulumi.com",e.SNIPPET_VERSION="5.2.0",e.page()}}()</script><script>window.consentManagerConfig={writeKey:segmentWriteKey,cdnHost:"evs.analytics.pulumi.com",container:"#segment-consent-manager",privacyPolicyUrl:"/privacy/",bannerText:"We use cookies (and other similar technologies) to collect data to improve your experience on our site. By using our website, youʼre agreeing to the collection of data as described in our",preferencesDialogTitle:"Website Data Collection Preferences",preferencesDialogContent:"We use data collected by cookies and JavaScript libraries to improve your browsing experience, analyze site traffic, deliver personalized advertisements, and increase the overall performance of our site.",cancelDialogTitle:"Are you sure you want to cancel?",cancelDialogContent:"Your preferences have not been saved. By continuing to use our website, you are agreeing to our Website Data Collection Policy."}</script><script>window.addEventListener("load",function(){var e=document.createElement("script");e.src="/js/consent-manager.9f70d491.js",document.body.appendChild(e)})</script><meta name="facebook-domain-verification" content="phlf6qes2bxa9ufzk8zt2es0qivg8j"><script>window.addEventListener("load",function(){if(typeof window.signals!="undefined")return;var e=document.createElement("script");e.src="https://cdn.cr-relay.com/v1/site/a725b5ba-75f1-44dc-b250-11023fc10b9d/signals.js",e.async=!0,window.signals=Object.assign([],["page","identify","form"].reduce(function(e,t){return e[t]=function(){return signals.push([t,arguments]),signals},e},{})),document.head.appendChild(e)})</script><script>window.addEventListener("load",function(){function e(){!function(e,t,n,s){if(e.oaiq)return;var o,a,i=function(){i.q.push(arguments)};i.q=[],e.oaiq=i,o=t.createElement(n),o.async=1,o.src=s,a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(o,a)}(window,document,"script","https://bzrcdn.openai.com/sdk/oaiq.min.js"),oaiq("init",{pixelId:"7KRuATZtZE3j5BSAZErZAb",debug:!1})}window.analytics&&typeof window.analytics.ready=="function"&&window.analytics.ready(e)})</script><script async defer src="/js/anchor-js.min.js"></script><script>window.addEventListener("load",function(){anchors&&anchors.add(".blog-post-content :is(h1, h2, h3, h4, h5, h6):not(.no-anchor)")})</script><meta http-equiv="last-modified" content="2025-03-11T00:00:00Z"><script>try{var c=document.cookie.split("; ").find(function(e){return e.indexOf("pulumi_web_user_info=")===0}),v=c?JSON.parse(decodeURIComponent(c.slice(c.indexOf("=")+1)).slice(2)):null;v&&v.userId&&document.documentElement.classList.add("is-signed-in")}catch{}</script></head><body class="section-blog antialiased min-h-screen flex flex-col"><a href="#main" class="btn btn-outline fixed left-2 top-2.5 z-[100] -translate-y-16 no-underline focus:translate-y-0">Skip to main content</a>
<pulumi-root></pulumi-root><script>(function(){try{var e,t,s,o,i=["blog-pulumi-neo-security-2026-08-Nx9vQ7"],n=[];try{s=JSON.parse(localStorage.getItem("announcement-banner")||"{}"),Array.isArray(s.dismissed)&&(n=s.dismissed)}catch{}if(e=i.filter(function(e){return n.indexOf(e)<0}),e.length===0)return;o=e[Math.floor(Math.random()*e.length)],t=document.createElement("style"),t.id="announcement-banner-reveal",t.textContent='#announcement-banner{display:block!important}#announcement-banner .announcement[data-announcement-id="'+o+'"]{display:flex!important}',document.head.appendChild(t),document.documentElement.setAttribute("data-announcement-chosen",o)}catch{}})()</script><div id="announcement-banner" class="hidden w-full bg-violet-950 text-white group text-sm" data-announcement-banner role="region" aria-label="Site announcement"><div class="announcement hidden h-10 items-center gap-3 px-4 md:px-6" data-announcement-id="blog-pulumi-neo-security-2026-08-Nx9vQ7"><div class="flex flex-1 min-w-0 items-center gap-3"><a href="/blog/pulumi-neo-security/" tabindex="-1" class="contents text-white group-hover:text-white/90 hover:no-underline"><svg class="ph-icon ph-icon--fill size-5 shrink-0 text-violet-300" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-shield-check-fill"/></svg><div class="min-w-0 overflow-hidden whitespace-nowrap" data-announcement-marquee><span class="inline-block" data-announcement-content><span class="announcement-text inline-block"><strong>Identify weaknesses before attackers do.</strong> Neo Security finds and fixes exploitable flaws in your infrastructure. Now in research preview.</span></span></div></a><a href="/blog/pulumi-neo-security/" class="shrink-0 inline-flex items-center rounded-md border border-white/20 px-2 py-0.5 text-xs font-medium text-white hover:bg-white/10 hover:no-underline">Read the blog</a></div><button type="button" aria-label="Dismiss announcement" class="shrink-0 inline-flex h-6 w-6 items-center justify-center rounded text-white hover:bg-white/10" data-announcement-dismiss>
<svg class="ph-icon ph-icon--regular size-3" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-x-regular"/></svg></button></div></div><header class="sticky top-0 z-40 w-full border-b border-gray-200 bg-white"><div class="flex h-16 items-center justify-between gap-2 px-4 md:px-6"><a href="/" data-track="header-pulumi-logo" data-logo-brand-menu class="flex shrink-0 items-center rounded-md transition-opacity hover:opacity-80 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:ring-offset-4 focus-visible:outline-1 focus-visible:outline-transparent" aria-label="Pulumi home"><img class="docs-logo-light h-7 w-auto" src="/fingerprinted/logos/brand/logo-on-white.325f59b356d06fbea052c320e4d50d5b40a392616680cd6c72a0e807869f4bba.svg" alt="Pulumi logo" width="112" height="28" loading="eager" decoding="async">
<img class="docs-logo-dark h-7 w-auto" src="/fingerprinted/logos/brand/logo-on-black.cc9e57571fcea31f6ed8dfbdb619a59755570083e72a35ed490569a3dcb83ac6.svg" alt="Pulumi logo" width="112" height="28" loading="eager" decoding="async"></a><nav data-nav-root class="hidden nav-desktop:flex relative self-stretch items-center" aria-label="Primary"><ul class="flex items-center gap-0"><li><button type="button" data-nav-trigger-button data-nav-index="0" aria-expanded="false" aria-haspopup="menu" aria-controls="nav-desktop-popup" class="btn btn-ghost-nav group/trigger inline-flex items-center justify-center px-4">
Product
<svg class="ph-icon ph-icon--bold text-gray-500 group-hover/trigger:text-violet-500 [[data-open=true]_&]:text-violet-300 relative top-px size-3 transition duration-300 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button></li><li><button type="button" data-nav-trigger-button data-nav-index="1" aria-expanded="false" aria-haspopup="menu" aria-controls="nav-desktop-popup" class="btn btn-ghost-nav group/trigger inline-flex items-center justify-center px-4">
For engineers
<svg class="ph-icon ph-icon--bold text-gray-500 group-hover/trigger:text-violet-500 [[data-open=true]_&]:text-violet-300 relative top-px size-3 transition duration-300 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button></li><li><button type="button" data-nav-trigger-button data-nav-index="2" aria-expanded="false" aria-haspopup="menu" aria-controls="nav-desktop-popup" class="btn btn-ghost-nav group/trigger inline-flex items-center justify-center px-4">
For enterprises
<svg class="ph-icon ph-icon--bold text-gray-500 group-hover/trigger:text-violet-500 [[data-open=true]_&]:text-violet-300 relative top-px size-3 transition duration-300 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button></li><li><a href="/docs/" data-track="header-docs" class="btn btn-ghost-nav inline-flex items-center justify-center">Docs</a></li><li><a href="/registry/" data-track="header-registry" class="btn btn-ghost-nav inline-flex items-center justify-center">Registry</a></li><li><a href="/blog/" data-track="header-blog" class="btn btn-ghost-nav inline-flex items-center justify-center">Blog</a></li><li><a href="/pricing/" data-track="header-pricing" class="btn btn-ghost-nav inline-flex items-center justify-center">Pricing</a></li><li><button type="button" data-nav-trigger-button data-nav-index="3" aria-expanded="false" aria-haspopup="menu" aria-controls="nav-desktop-popup" class="btn btn-ghost-nav group/trigger inline-flex items-center justify-center px-4">
Company
<svg class="ph-icon ph-icon--bold text-gray-500 group-hover/trigger:text-violet-500 [[data-open=true]_&]:text-violet-300 relative top-px size-3 transition duration-300 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button></li></ul><div data-nav-popup id="nav-desktop-popup" class="card absolute z-50 bg-white text-gray-950 shadow" style="display:none;top:calc(100% - .5rem);left:0;opacity:0;transform:scale(.95);transform-origin:top left;transition:none"><div data-nav-viewport style="position:relative;overflow:hidden;width:100%;height:100%"><div data-nav-content="0" style="position:absolute;top:0;left:0;opacity:0;transform:translateX(0);will-change:opacity,transform"><div class="grid gap-x-6 gap-y-4 p-2 w-[640px] grid-cols-2"><div class="flex flex-col gap-1 col-span-full"><span class="px-3 pt-2 font-mono text-xs uppercase tracking-wide text-gray-600">Core product</span><ul class="grid gap-x-6 gap-y-0.5 grid-cols-2"><li><a href="/product/" data-track="header-product-platform" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-cloud-arrow-up-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Platform overview</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Everything platform engineering teams need to build, secure, and scale cloud infrastructure</span></span></a></li><li><a href="/product/infrastructure-as-code/" data-track="header-product-iac" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-iac-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Infrastructure as code</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">IaC for any cloud, in any language — Node.js, Python, Go, .NET, Java, and YAML</span></span></a></li></ul></div><div class="flex flex-col gap-1 col-span-full"><span class="px-3 pt-2 font-mono text-xs uppercase tracking-wide text-gray-600">Key capabilities</span><ul class="grid gap-x-6 gap-y-0.5 grid-cols-2"><li><a href="/product/neo/" data-track="header-product-neo" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--fill size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-neo-fill"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">AI infrastructure agent</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Meet Neo, our AI-powered infrastructure engineering agent</span></span></a></li><li><a href="/product/secrets-management/" data-track="header-product-secrets" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-secrets-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Secrets & configuration</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Environments, secrets, and configuration management</span></span></a></li><li><a href="/product/discovery-governance/" data-track="header-product-insights" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-insights-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Discovery & governance</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Asset management, compliance remediation, and AI insights over the cloud</span></span></a></li><li><a href="/product/internal-developer-platforms/" data-track="header-product-idp" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-idp-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Internal developer platform</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">The fastest, most secure way to deliver cloud infrastructure</span></span></a></li></ul></div></div></div><div data-nav-content="1" style="position:absolute;top:0;left:0;opacity:0;transform:translateX(0);will-change:opacity,transform"><div class="grid gap-x-6 gap-y-4 p-2 w-[640px] grid-cols-2"><div class="flex flex-col gap-1 col-span-full"><ul class="grid gap-x-6 gap-y-0.5 grid-cols-2"><li><a href="/docs/get-started/" data-track="header-engineers-get-started" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-rocket-launch-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Get started</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Install Pulumi and deploy your first project in minutes</span></span></a></li><li><a href="/docs/" data-track="header-engineers-docs" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-book-open-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Documentation</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Complete guides and API references</span></span></a></li><li><a href="/registry/" data-track="header-engineers-registry" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-package-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Registry</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Browse hundreds of cloud providers and packages</span></span></a></li><li><a href="/dev/" data-track="header-engineers-learn" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-compass-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Dev Center</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Tutorials, templates, examples, and more</span></span></a></li><li><a href="/events#upcoming" data-track="header-engineers-events" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-calendar-blank-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Events and workshops</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Live sessions and workshops</span></span></a></li><li><a href="/community/" data-track="header-engineers-community" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-users-three-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Community</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Join 10k+ developers on Slack</span></span></a></li><li><a href="/testimonials/" data-track="header-engineers-testimonials" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-heart-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Engineers love Pulumi</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Hear from engineers why they love us</span></span></a></li><li><a href="/releases/" data-track="header-engineers-releases" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-megaphone-simple-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Releases</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Major platform updates from the team</span></span></a></li></ul></div></div></div><div data-nav-content="2" style="position:absolute;top:0;left:0;opacity:0;transform:translateX(0);will-change:opacity,transform"><div class="grid gap-x-6 gap-y-4 p-2 w-[320px] grid-cols-1"><div class="flex flex-col gap-1"><ul class="grid gap-x-6 gap-y-0.5 grid-cols-1"><li><a href="/enterprise/" data-track="header-enterprise-solutions" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-buildings-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Enterprise solutions</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Security, compliance, and support for teams</span></span></a></li><li><a href="/case-studies/" data-track="header-enterprise-case-studies" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-article-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Case studies</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">How Snowflake, Mercedes-Benz, and others use Pulumi</span></span></a></li><li><a href="/request-a-demo/" data-track="header-enterprise-demo" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-chalkboard-teacher-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Request a demo</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">See how Pulumi can help your team</span></span></a></li><li><a href="/proserv/" data-track="header-enterprise-proserv" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-briefcase-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Professional services</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Get expert help with your implementation</span></span></a></li><li><a href="/contact/" data-track="header-enterprise-contact" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-chat-circle-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Contact sales</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Talk to our team about your needs</span></span></a></li></ul></div></div></div><div data-nav-content="3" style="position:absolute;top:0;left:0;opacity:0;transform:translateX(0);will-change:opacity,transform"><div class="grid gap-x-6 gap-y-4 p-2 w-[320px] grid-cols-1"><div class="flex flex-col gap-1"><ul class="grid gap-x-6 gap-y-0.5 grid-cols-1"><li><a href="/about/" data-track="header-company-about" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-quotes-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">About us</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Our purpose and values</span></span></a></li><li><a href="/careers/" data-track="header-company-careers" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-briefcase-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Careers</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Come work for Pulumi</span></span></a></li><li><a href="/about/newsroom/" data-track="header-company-newsroom" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-newspaper-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Newsroom</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Pulumi in the news</span></span></a></li><li><a href="/awards/" data-track="header-company-awards" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-trophy-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Awards</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Recognition from press and analysts</span></span></a></li></ul></div></div></div></div></div></nav><div class="flex items-center gap-2"><a href="https://github.com/pulumi/pulumi" target="_blank" rel="noopener" data-track="header-github-stars" class="btn btn-ghost-nav px-2.5 gap-1.5 hidden nav-desktop:inline-flex" aria-label="Star pulumi/pulumi on GitHub — 25669 stars"><svg class="ph-icon size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-github"/></svg>
<span>25.7K</span></a>
<a href="/contact/" data-track="header-contact" class="hidden nav-desktop:inline-flex btn btn-outline">Contact us
</a><a href="https://app.pulumi.com/signin" data-track="header-console" data-nav-loggedout class="hidden nav-desktop:inline-flex btn btn-outline">Sign in
</a><a href="https://app.pulumi.com" data-track="header-dashboard" data-nav-dashboard class="hidden nav-desktop:inline-flex btn btn-primary">Dashboard
</a><a href="https://app.pulumi.com/signup" data-track="header-signup" data-role="cta-get-started" data-nav-loggedout class="hidden nav-desktop:inline-flex btn btn-primary">Get started</a><div class="flex gap-2 nav-desktop:hidden"><div class="max-sm:hidden flex gap-2"><a href="https://github.com/pulumi/pulumi" target="_blank" rel="noopener" data-track="header-github-stars-mobile" class="btn btn-ghost-nav px-2.5 gap-1.5 inline-flex" aria-label="Star pulumi/pulumi on GitHub — 25669 stars"><svg class="ph-icon size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-github"/></svg>
<span>25.7K</span></a>
<a href="/contact/" data-track="header-contact" class="btn btn-outline">Contact us
</a><a href="https://app.pulumi.com/signin" data-track="header-console" data-nav-loggedout class="btn btn-outline">Sign in
</a><a href="https://app.pulumi.com" data-track="header-dashboard" data-nav-dashboard class="btn btn-primary">Dashboard
</a><a href="https://app.pulumi.com/signup" data-track="header-signup-mobile" data-role="cta-get-started" data-nav-loggedout class="btn btn-primary">Get started</a></div><button type="button" data-nav-sheet-trigger aria-label="Open navigation" aria-expanded="false" aria-controls="nav-mobile-sheet" class="btn btn-outline btn-icon">
<svg class="ph-icon ph-icon--bold size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-list-bold"/></svg></button></div></div></div></header><div data-nav-sheet-overlay data-state="closed" class="fixed inset-0 z-50 bg-black/10 opacity-0 pointer-events-none transition-opacity duration-150
data-[state=open]:opacity-100 data-[state=open]:pointer-events-auto
supports-[backdrop-filter]:backdrop-blur-xs"></div><aside data-nav-sheet data-state="closed" data-side="right" id="nav-mobile-sheet" role="dialog" aria-modal="true" aria-labelledby="nav-mobile-sheet-title" class="fixed inset-y-0 right-0 z-50 flex w-3/4 flex-col gap-0 border-l border-gray-100 bg-white text-gray-950 shadow-lg opacity-0 pointer-events-none translate-x-[2.5rem] transition duration-200 ease-in-out p-0 sm:max-w-md
data-[state=open]:translate-x-0 data-[state=open]:opacity-100 data-[state=open]:pointer-events-auto"><div class="flex flex-col gap-1.5 p-4"><h2 id="nav-mobile-sheet-title" class="sr-only">Navigation</h2><button type="button" data-nav-sheet-close aria-label="Close navigation" class="btn btn-ghost btn-icon-sm absolute top-4 right-4">
<svg class="ph-icon ph-icon--bold size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-x-bold"/></svg></button></div><nav class="flex flex-1 flex-col overflow-y-auto px-3 py-2"><div data-nav-collapsible class="border-b border-gray-100"><button type="button" data-nav-collapsible-trigger aria-expanded="false" aria-controls="nav-mobile-panel-product" class="group flex w-full items-center justify-between rounded-md px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">
Product
<svg class="ph-icon ph-icon--bold size-4 transition-transform duration-200 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button><div data-nav-collapsible-panel data-state="closed" inert id="nav-mobile-panel-product" class="overflow-hidden max-h-0 opacity-0 transition-all duration-200
data-[state=open]:max-h-[2000px] data-[state=open]:opacity-100"><div class="flex flex-col gap-3 pb-3"><div class="flex flex-col gap-1"><span class="px-3 pt-2 font-mono text-xs uppercase tracking-wide text-gray-600">Core product</span><ul class="flex flex-col gap-0.5"><li><a href="/product/" data-nav-sheet-close data-track="header-product-platform" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-cloud-arrow-up-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Platform overview</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Everything platform engineering teams need to build, secure, and scale cloud infrastructure</span></span></a></li><li><a href="/product/infrastructure-as-code/" data-nav-sheet-close data-track="header-product-iac" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-iac-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Infrastructure as code</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">IaC for any cloud, in any language — Node.js, Python, Go, .NET, Java, and YAML</span></span></a></li></ul></div><div class="flex flex-col gap-1"><span class="px-3 pt-2 font-mono text-xs uppercase tracking-wide text-gray-600">Key capabilities</span><ul class="flex flex-col gap-0.5"><li><a href="/product/neo/" data-nav-sheet-close data-track="header-product-neo" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--fill size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-neo-fill"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">AI infrastructure agent</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Meet Neo, our AI-powered infrastructure engineering agent</span></span></a></li><li><a href="/product/secrets-management/" data-nav-sheet-close data-track="header-product-secrets" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-secrets-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Secrets & configuration</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Environments, secrets, and configuration management</span></span></a></li><li><a href="/product/discovery-governance/" data-nav-sheet-close data-track="header-product-insights" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-insights-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Discovery & governance</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Asset management, compliance remediation, and AI insights over the cloud</span></span></a></li><li><a href="/product/internal-developer-platforms/" data-nav-sheet-close data-track="header-product-idp" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#c-pulumi-idp-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Internal developer platform</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">The fastest, most secure way to deliver cloud infrastructure</span></span></a></li></ul></div></div></div></div><div data-nav-collapsible class="border-b border-gray-100"><button type="button" data-nav-collapsible-trigger aria-expanded="false" aria-controls="nav-mobile-panel-for-engineers" class="group flex w-full items-center justify-between rounded-md px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">
For engineers
<svg class="ph-icon ph-icon--bold size-4 transition-transform duration-200 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button><div data-nav-collapsible-panel data-state="closed" inert id="nav-mobile-panel-for-engineers" class="overflow-hidden max-h-0 opacity-0 transition-all duration-200
data-[state=open]:max-h-[2000px] data-[state=open]:opacity-100"><div class="flex flex-col gap-3 pb-3"><div class="flex flex-col gap-1"><ul class="flex flex-col gap-0.5"><li><a href="/docs/get-started/" data-nav-sheet-close data-track="header-engineers-get-started" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-rocket-launch-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Get started</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Install Pulumi and deploy your first project in minutes</span></span></a></li><li><a href="/docs/" data-nav-sheet-close data-track="header-engineers-docs" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-book-open-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Documentation</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Complete guides and API references</span></span></a></li><li><a href="/registry/" data-nav-sheet-close data-track="header-engineers-registry" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-package-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Registry</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Browse hundreds of cloud providers and packages</span></span></a></li><li><a href="/dev/" data-nav-sheet-close data-track="header-engineers-learn" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-compass-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Dev Center</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Tutorials, templates, examples, and more</span></span></a></li><li><a href="/events#upcoming" data-nav-sheet-close data-track="header-engineers-events" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-calendar-blank-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Events and workshops</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Live sessions and workshops</span></span></a></li><li><a href="/community/" data-nav-sheet-close data-track="header-engineers-community" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-users-three-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Community</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Join 10k+ developers on Slack</span></span></a></li><li><a href="/testimonials/" data-nav-sheet-close data-track="header-engineers-testimonials" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-heart-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Engineers love Pulumi</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Hear from engineers why they love us</span></span></a></li><li><a href="/releases/" data-nav-sheet-close data-track="header-engineers-releases" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-megaphone-simple-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Releases</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Major platform updates from the team</span></span></a></li></ul></div></div></div></div><div data-nav-collapsible class="border-b border-gray-100"><button type="button" data-nav-collapsible-trigger aria-expanded="false" aria-controls="nav-mobile-panel-for-enterprises" class="group flex w-full items-center justify-between rounded-md px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">
For enterprises
<svg class="ph-icon ph-icon--bold size-4 transition-transform duration-200 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button><div data-nav-collapsible-panel data-state="closed" inert id="nav-mobile-panel-for-enterprises" class="overflow-hidden max-h-0 opacity-0 transition-all duration-200
data-[state=open]:max-h-[2000px] data-[state=open]:opacity-100"><div class="flex flex-col gap-3 pb-3"><div class="flex flex-col gap-1"><ul class="flex flex-col gap-0.5"><li><a href="/enterprise/" data-nav-sheet-close data-track="header-enterprise-solutions" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-buildings-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Enterprise solutions</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Security, compliance, and support for teams</span></span></a></li><li><a href="/case-studies/" data-nav-sheet-close data-track="header-enterprise-case-studies" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-article-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Case studies</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">How Snowflake, Mercedes-Benz, and others use Pulumi</span></span></a></li><li><a href="/request-a-demo/" data-nav-sheet-close data-track="header-enterprise-demo" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-chalkboard-teacher-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Request a demo</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">See how Pulumi can help your team</span></span></a></li><li><a href="/proserv/" data-nav-sheet-close data-track="header-enterprise-proserv" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-briefcase-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Professional services</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Get expert help with your implementation</span></span></a></li><li><a href="/contact/" data-nav-sheet-close data-track="header-enterprise-contact" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-chat-circle-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Contact sales</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Talk to our team about your needs</span></span></a></li></ul></div></div></div></div><a href="/docs/" data-nav-sheet-close data-track="header-docs" class="block rounded-md border-b border-gray-100 px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">Docs
</a><a href="/registry/" data-nav-sheet-close data-track="header-registry" class="block rounded-md border-b border-gray-100 px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">Registry
</a><a href="/blog/" data-nav-sheet-close data-track="header-blog" class="block rounded-md border-b border-gray-100 px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">Blog
</a><a href="/pricing/" data-nav-sheet-close data-track="header-pricing" class="block rounded-md border-b border-gray-100 px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">Pricing</a><div data-nav-collapsible class="border-b border-gray-100"><button type="button" data-nav-collapsible-trigger aria-expanded="false" aria-controls="nav-mobile-panel-company" class="group flex w-full items-center justify-between rounded-md px-3 py-4 text-base font-semibold text-gray-950 outline-none transition-colors hover:text-violet-700 focus-visible:text-violet-700 focus-visible:ring-3 focus-visible:ring-violet-400/50 focus-visible:outline-1">
Company
<svg class="ph-icon ph-icon--bold size-4 transition-transform duration-200 [[data-open=true]_&]:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-bold"/></svg></button><div data-nav-collapsible-panel data-state="closed" inert id="nav-mobile-panel-company" class="overflow-hidden max-h-0 opacity-0 transition-all duration-200
data-[state=open]:max-h-[2000px] data-[state=open]:opacity-100"><div class="flex flex-col gap-3 pb-3"><div class="flex flex-col gap-1"><ul class="flex flex-col gap-0.5"><li><a href="/about/" data-nav-sheet-close data-track="header-company-about" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-quotes-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">About us</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Our purpose and values</span></span></a></li><li><a href="/careers/" data-nav-sheet-close data-track="header-company-careers" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-briefcase-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Careers</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Come work for Pulumi</span></span></a></li><li><a href="/about/newsroom/" data-nav-sheet-close data-track="header-company-newsroom" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-newspaper-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Newsroom</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Pulumi in the news</span></span></a></li><li><a href="/awards/" data-nav-sheet-close data-track="header-company-awards" class="group flex flex-row items-start gap-3 rounded-md p-3 outline-none transition-all hover:bg-violet-50 focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span aria-hidden="true" class="mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border group-hover:border-violet-200 border-gray-200 group-hover text-violet-700"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-trophy-regular"/></svg>
</span><span class="flex min-w-0 flex-col gap-0.5"><span class="text-sm font-semibold text-gray-950 group-hover:text-violet-primary">Awards</span>
<span class="text-xs text-gray-600 group-hover:text-gray-800">Recognition from press and analysts</span></span></a></li></ul></div></div></div></div></nav><div class="flex flex-col gap-2 border-t border-gray-100 p-4"><a href="https://github.com/pulumi/pulumi" target="_blank" rel="noopener" data-track="header-github-stars-sheet" class="btn btn-ghost-nav px-2.5 gap-1.5 inline-flex justify-center" aria-label="Star pulumi/pulumi on GitHub — 25669 stars"><svg class="ph-icon size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-github"/></svg>
<span>25.7K</span></a>
<a href="/contact/" data-track="header-contact" class="btn btn-outline">Contact us
</a><a href="https://app.pulumi.com/signin" data-track="header-console" data-nav-loggedout class="btn btn-outline">Sign in
</a><a href="https://app.pulumi.com" data-track="header-dashboard" data-nav-dashboard class="btn btn-primary">Dashboard
</a><a href="https://app.pulumi.com/signup" data-track="header-signup-mobile" data-role="cta-get-started" data-nav-loggedout class="btn btn-primary">Get started</a></div></aside><div data-brand-menu role="menu" aria-label="Pulumi logo options" hidden class="card fixed z-50 min-w-[220px] bg-white p-2 text-gray-950 shadow"><ul class="flex flex-col gap-0.5"><li role="none"><button type="button" role="menuitem" data-brand-menu-copy class="flex w-full items-center justify-between gap-3 rounded-md px-3 py-2 text-left text-sm font-normal text-gray-950 outline-none transition-colors hover:bg-violet-50 hover:text-violet-primary focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50">
<span data-brand-menu-copy-label>Copy logo SVG</span></button></li><li role="none"><a role="menuitem" data-brand-menu-close href="/logos/brand/pulumi_mark_on_light.svg" download="pulumi-logo-mark-color.svg" class="flex w-full items-center justify-between gap-3 rounded-md px-3 py-2 text-left text-sm font-normal text-gray-950 outline-none transition-colors hover:bg-violet-50 hover:text-violet-primary focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50">Download mark</a></li><li role="none"><a role="menuitem" data-brand-menu-close href="https://brand.pulumi.com/identity/logo/#get-the-logo" target="_blank" rel="noopener" class="flex w-full items-center justify-between gap-3 rounded-md px-3 py-2 text-left text-sm font-normal text-gray-950 outline-none transition-colors hover:bg-violet-50 hover:text-violet-primary focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span>Get other variants</span><svg class="ph-icon ph-icon--regular size-3.5 shrink-0 text-gray-400" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-arrow-square-out-regular"/></svg></a></li><li role="none"><a role="menuitem" data-brand-menu-close href="https://brand.pulumi.com" target="_blank" rel="noopener" class="flex w-full items-center justify-between gap-3 rounded-md px-3 py-2 text-left text-sm font-normal text-gray-950 outline-none transition-colors hover:bg-violet-50 hover:text-violet-primary focus-visible:bg-violet-50 focus-visible:ring-3 focus-visible:ring-violet-400/50"><span>Read brand guide</span><svg class="ph-icon ph-icon--regular size-3.5 shrink-0 text-gray-400" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-arrow-square-out-regular"/></svg></a></li></ul></div><script src="/js/header-nav.a99ba15a.js" defer></script><main id="main" tabindex="-1" class="focus:outline-none flex-1"><div class="blog-header border-b border-gray-200"><div class="container mx-auto flex flex-nowrap items-center justify-between gap-4 px-4 py-6 lg:h-26 lg:py-0"><div class="flex min-w-0 items-center gap-3 lg:gap-4"><div class="heading-2 m-0! flex min-w-0 items-center gap-2"><a href="/blog/" class="shrink-0 text-service-black transition-colors hover:text-violet-primary">Blog</a></div></div><div class="flex shrink-0 items-center"><div class="hidden items-center xl:flex mr-4"><pulumi-hubspot-form form-id="027b4c6d-9b73-4ad8-b149-3c8b07fff608" class="newsletter newsletter-inline newsletter-header newsletter-btn-outline"></pulumi-hubspot-form></div><div><div id="search" data-app-id="P6KICOKU8E" data-search-key="9ac9f1177f81bc8cb5f6cf30485e62db" data-facets="Blog" data-index="production"></div></div><a href="/blog/rss.xml" target="_blank" rel="noopener" aria-label="Pulumi Blog RSS feed" data-track="blog-rss" class="btn btn-icon btn-ghost shrink-0"><svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-rss-regular"/></svg></a></div></div></div><div data-post-progress aria-hidden="true" style="transform:scaleX(0)" class="fixed inset-x-0 top-16 z-30 h-[3px] origin-left bg-violet-primary"></div><div class="mx-auto max-w-[1220px] px-4 py-8 lg:py-10"><header class="grid grid-cols-1 items-center gap-8"><div class="order-2 flex flex-col items-start gap-5 lg:order-1"><a href="/blog/category/general/" data-track="blog-category-general" class="relative z-10 badge badge-outline">General</a><h1 class="heading-xl m-0!">When to Use Cosmos DB</h1><div class="body-sm flex flex-wrap items-center gap-1.5"><time datetime="2024-11-11">Nov 11, 2024</time>
<span aria-hidden="true" class="text-gray-500">•</span><span>Updated Mar 11, 2025</span>
<span aria-hidden="true" class="text-gray-500">•</span><span class="whitespace-nowrap">18 min read</span></div><div class="flex flex-wrap items-center gap-x-6 gap-y-3"><span class="flex items-center gap-2"><a href="/community/team/adam-gordon-bell/" data-track="blog-author-adam-gordon-bell" class="flex items-center gap-2"><img src="/images/team/adam-gordon-bell.jpg" alt="Adam Gordon Bell" class="size-8 rounded-full bg-violet-200 object-cover border border-gray-100" loading="lazy" decoding="async">
<span class="body-sm text-service-black transition-colors hover:text-violet-primary">Adam Gordon Bell</span></a></span></div></div></header><hr class="my-8 border-gray-200 lg:my-10"><div class="lg:flex lg:gap-12"><div class="min-w-0 lg:flex-1"><div class="mb-8 empty:hidden md:hidden"><details class="group border-b py-3 -mt-8"><summary class="flex cursor-pointer list-none items-center justify-between gap-4 marker:hidden [&::-webkit-details-marker]:hidden"><span class="font-overline-sm text-service-black">In this post</span>
<svg class="ph-icon ph-icon--regular size-4 shrink-0 text-gray-500 transition-transform group-open:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-regular"/></svg></summary><ul class="m-0 mt-4 flex list-none flex-col gap-3 p-0"><li class="m-0 leading-snug"><a href="#tldr" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">TL;DR</a></li><li class="m-0 leading-snug"><a href="#what-is-cosmos-db-features--architecture-explained" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">What is Cosmos DB? Features & Architecture Explained</a></li><li class="m-0 leading-snug"><a href="#types-of-databases" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Types Of Databases</a></li><li class="m-0 leading-snug"><a href="#cosmos-db-vs-sql-server--azure-sql-database--or-postgres" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Cosmos DB Vs. SQL Server ( Azure SQL Database ) or Postgres</a></li><li class="m-0 leading-snug"><a href="#document-database--nosql-trade-offs" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Document Database / NoSQL Trade-Offs</a></li><li class="m-0 leading-snug"><a href="#cosmos-db-vs-mongodb" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Cosmos DB Vs MongoDB</a></li><li class="m-0 leading-snug"><a href="#how-cosmos-db-partitions--scales-data-efficiently" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">How Cosmos DB Partitions & Scales Data Efficiently</a></li><li class="m-0 leading-snug"><a href="#mongodb-vs-cosmos-db-cost-comparison" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">MongoDB Vs. Cosmos DB Cost Comparison</a></li><li class="m-0 leading-snug"><a href="#cosmos-db-vs-cassandra" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Cosmos DB Vs Cassandra</a></li><li class="m-0 leading-snug"><a href="#dynamo-db-vs-cosmos-db" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Dynamo DB Vs Cosmos DB</a></li><li class="m-0 leading-snug"><a href="#tangent-azure-table-storage-vs-cosmos-db" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Tangent: Azure Table Storage vs. Cosmos DB</a></li><li class="m-0 leading-snug"><a href="#when-cosmos-db-makes-sense" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">When Cosmos DB Makes Sense</a></li><li class="m-0 leading-snug"><a href="#when-to-avoid-cosmos-db" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">When to Avoid Cosmos DB</a></li><li class="m-0 leading-snug"><a href="#managing-database-infrastructure-with-pulumi" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Managing Database Infrastructure with Pulumi</a></li><li class="m-0 leading-snug"><a href="#summary" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Summary</a></li></ul></details></div><section class="blog-post-content max-w-3xl"><p>When should you use Cosmos DB on Azure? It&rsquo;s a hard question to answer.</p><p>Azure Cosmos DB tries to do it all - which makes it both powerful and, honestly, kind of confusing. The marketing doesn&rsquo;t help either. Yeah, it&rsquo;s a flexible database, but before you jump in, you need to understand how it actually works under the hood, what it&rsquo;ll cost you, and what trade-offs you&rsquo;re making by choosing it.</p><p>I&rsquo;m going to break all that down. Here&rsquo;s a roadmap:</p><p><img src="roadmap.png" alt="Roadmap depicting stages when to use Azure Cosmos DB in comnparison to relational, Mongo, Cassandra, and Dynamo databases, in addition to recommendations"></p><h2 id="tldr">TL;DR</h2><p>The short version is: <strong>you should use it on Azure when you&rsquo;d use DynamoDB on AWS.</strong> That&rsquo;s to say, you should use it when you&rsquo;re OK with being cloud-specific, when you want hands-off scalability, and when you know the query pattern and potential cost ramifications ahead of time.</p><div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XcB1Prpx-OE?rel=0?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0" title="YouTube video"></iframe></div><p>But let&rsquo;s start at the beginning.</p><h2 id="what-is-cosmos-db-features--architecture-explained">What is Cosmos DB? Features & Architecture Explained</h2><p><a href="https://azure.microsoft.com/en-us/products/cosmos-db">Cosmos DB</a> is Microsoft high availability distributed database. First released as DocumentDB in 2014 and rebranded to Cosmos DB in 2017, its used internally at MS for Bing and Office 365 and available on Azure in all regions.</p><h2 id="types-of-databases">Types Of Databases</h2><p>Different databases are good at different things. Relational databases focus on strong consistency and complex relationships. Key-value stores are optimized for speed and simplicity. Document databases trade schema rigidity for flexibility. NewSQL systems attempt to combine consistency and scale.</p><div class="table-wrapper table-responsive"><table><thead><tr><th>Type</th><th>Example</th><th>Best For</th></tr></thead><tbody><tr><td data-label="Type">Relational</td><td data-label="Example">PostgreSQL</td><td data-label="Best For">Traditional business applications with complex transactions</td></tr><tr><td data-label="Type">Key-Value</td><td data-label="Example">Redis</td><td data-label="Best For">Caching and session management</td></tr><tr><td data-label="Type">Document</td><td data-label="Example">MongoDB</td><td data-label="Best For">Applications with evolving data structures</td></tr><tr><td data-label="Type">NewSQL</td><td data-label="Example">Spanner, CockroachDB</td><td data-label="Best For">Global applications requiring both scale and consistency</td></tr><tr><td data-label="Type">Dynamo-Inspired</td><td data-label="Example">DynamoDB, Cassandra</td><td data-label="Best For">High write throughput, eventually consistent applications</td></tr></tbody></table></div><p>Cosmos DB can look like each of those categories. This is because it&rsquo;s a multi-model DB, with a number of APIs that correspond to each model type. Despite it having a SQL interface (often recognized as the most used and recommended interface), and despite it purporting to be multi-model, at its lowest layer, it is actually backed by a document-based storage layer. It is a powerful document database, one with tunable consistency, distribution by logical and physical partition, and more, but it&rsquo;s helpful to know how the storage layer works to understand everything else. I&rsquo;m going to show some examples, but first let&rsquo;s clear up what Cosmos DB is not.</p><p><img src="apis.png" alt="Diagram showing Azure Cosmos DB’s multi-model architecture. SQL, MQL, and CQL interact via NoSQL, MongoDB, and Cassandra APIs, converting data into JSON for storage in DocumentDB’s JSON-based ARS format."></p><div class="note note-info"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-info-fill"/></svg><div class="line"></div></div><div class="content">If you are going to use Cosmos DB, you should probably be using the Core API, also called the &ldquo;API for NoSQL&rdquo;. It&rsquo;s the quickest to get new features. Confusingly, despite being called a NoSQL API, data is queried and added using SQL.</div></div><h2 id="cosmos-db-vs-sql-server--azure-sql-database--or-postgres">Cosmos DB Vs. SQL Server ( Azure SQL Database ) or Postgres</h2><p>This is a personal opinion, but if you have a use case that is well served by a traditional relational database, you should choose that. Postgres and SQL Server are both great and both available on Azure ( Postgres as Azure Database for PostgreSQL ). They both have great query planners; they have great tooling for migration and backups, as well as schema management. The SQL API from Cosmos should <strong>not</strong> be considered an alternative to a relational database unless you have specific needs because it&rsquo;s a different type of beast designed for different use cases. But let me show you.</p><p>If you grab our <a href="https://www.pulumi.com/registry/packages/azure-native/how-to-guides/azure-cs-cosmosdb-logicapp/">CosmoDB how to guide</a> and <code>pulumi up</code>, you&rsquo;ll see from that, the first hint of its <a href="https://github.com/pulumi/examples/blob/master/azure-cs-cosmosdb-logicapp/MyStack.cs#L6">document roots</a> in that the pulumi namespace is <code>Pulumi.AzureNative.DocumentDB</code>, but it goes deeper because although I can insert and select with sql in Cosmos DB, there is no schema.</p><h3 id="how-to-insert--query-data-in-cosmos-db-nosql">How to Insert & Query Data in Cosmos DB NoSQL</h3><p>If I insert this customer:</p><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-csharp" data-lang="csharp"><span class="line"><span class="cl"><span class="n">CosmosDatabase</span> <span class="n">database</span> <span class="p">=</span> <span class="k">await</span> <span class="n">client</span><span class="p">.</span>
</span></span><span class="line"><span class="cl"> <span class="n">CreateDatabaseIfNotExistsAsync</span><span class="p">(</span><span class="n">databaseId</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="n">CosmosContainer</span> <span class="n">container</span> <span class="p">=</span> <span class="k">await</span> <span class="n">database</span><span class="p">.</span>
</span></span><span class="line"><span class="cl"> <span class="n">CreateContainerIfNotExistsAsync</span><span class="p">(</span><span class="n">containerId</span><span class="p">,</span> <span class="s">&#34;/customerId&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Insert a customer document</span>
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">customer</span> <span class="p">=</span> <span class="k">new</span> <span class="n">Customer</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">Id</span> <span class="p">=</span> <span class="n">Guid</span><span class="p">.</span><span class="n">NewGuid</span><span class="p">().</span><span class="n">ToString</span><span class="p">(),</span>
</span></span><span class="line"><span class="cl"> <span class="n">CustomerId</span> <span class="p">=</span> <span class="s">&#34;12345&#34;</span><span class="p">,</span> <span class="c1">// Cosmos DB Partition key</span>
</span></span><span class="line"><span class="cl"> <span class="n">Name</span> <span class="p">=</span> <span class="s">&#34;John Doe&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">Email</span> <span class="p">=</span> <span class="s">&#34;john.doe@example.com&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">await</span> <span class="n">InsertCustomer</span><span class="p">(</span><span class="n">container</span><span class="p">,</span> <span class="n">customer</span><span class="p">);</span>
</span></span></code></pre></div><p>I can do selects against it like <code>SELECT * FROM c WHERE c.customerId = '12345"</code> but when I look in that container in Azure Data Explorer, I see something like this:</p><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-csharp" data-lang="csharp"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;id&#34;</span><span class="p">:</span> <span class="s">&#34;1d4e26b3-7a02-4e97-8a9d-eccc0b2fd537&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;customerId&#34;</span><span class="p">:</span> <span class="s">&#34;12345&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;name&#34;</span><span class="p">:</span> <span class="s">&#34;John Doe&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;email&#34;</span><span class="p">:</span> <span class="s">&#34;john.doe@example.com&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;_rid&#34;</span><span class="p">:</span> <span class="s">&#34;&lt;resource id&gt;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;_self&#34;</span><span class="p">:</span> <span class="s">&#34;&lt;document URI&gt;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;_etag&#34;</span><span class="p">:</span> <span class="s">&#34;\&#34;00000000-0000-0000-0000-000000000000\&#34;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;_attachments&#34;</span><span class="p">:</span> <span class="s">&#34;attachments/&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">&#34;_ts&#34;</span><span class="p">:</span> <span class="m">1609459200</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>As with any document database, rather than a schema, it&rsquo;s just a JSON document. That&rsquo;s all good, but because there is no schema, if I needed to do something like migrate <code>name</code> to <code>fullname</code>, how do I do it? Well, there are a bunch of strategies, but they all involve writing some application code to go record by record and move the value from <code>name</code> to <code>full name</code>.</p><p>So don&rsquo;t be fooled by the SQL usage in the API. Cosmos DB is not a relational database; before you use a document database, you should be clear of the trade-offs.</p><h2 id="document-database--nosql-trade-offs">Document Database / NoSQL Trade-Offs</h2><ul><li><p><strong>Joins and Relationships</strong>: Cosmos DB lacks support for complex joins and foreign key constraints. Cosmos DB typically requires denormalization or application-level management of relationships.</p></li><li><p><strong>ACID Transactions and Consistency</strong>: Cosmos DB supports ACID transactions but only within single partitions (more on partitions soon). Cross-partition operations in Cosmos DB may require manual consistency handling.</p></li><li><p><strong>Schema Evolution and Migrations</strong>: Relational databases enforce a schema and support migration tools. Cosmos DB&rsquo;s schemaless design offers flexibility but requires custom logic for data migrations, which can increase operational overhead with frequent schema changes.</p></li><li><p><strong>Query Optimization and Indexing</strong>: Postgres, SQL Server, and any relational database will have a query optimization layer with a sophisticated planner and manual indexing control. Cosmos DB auto-indexes all fields, simplifying queries but potentially increasing costs. Custom indexing policies offer less control than you would see in SQL Server or Postgres.</p></li><li><p><strong>Cost Structure</strong>: Relational database costs are tied to compute and storage resources. Scaling might be a challenge past some point, but costs are fixed. Cosmos DB uses Request Units (RUs) for billing and charging per read, write, and query. This can lead to unpredictable costs if not carefully tuned.</p></li><li><p><strong>Operational Maturity</strong>: Relational databases are mature with mature solutions for backup, replication, and monitoring. Cosmos DB is fully managed but has fewer third-party tools. Postgres or another relational DB may be easier to integrate into existing workflows requiring mature operational support.</p></li></ul><p>If your use case aligns well with relational databases, consider using PostgreSQL or SQL Server. You have multiple Azure options, including Azure Database for PostgreSQL and Azure SQL Database. There&rsquo;s even Azure Cosmos DB for PostgreSQL, which confusingly uses native PostgreSQL combined with the Citus extension for distributed capabilities. It&rsquo;s <strong>not</strong> based on Cosmos DB&rsquo;s NoSQL DocumentDB storage layer and is a Postgres database.</p><p>Cosmos DB is best for other use cases, so on we go to &lsquo;NoSQL&rsquo; document databases.</p><div class="note note-info"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-info-fill"/></svg><div class="line"></div></div><div class="content">Azure offers various services under the &ldquo;Cosmos DB&rdquo; brand like Azure Cosmos DB for PostgreSQL, Azure Cosmos DB for MongoDB (VCore), and a managed instance for Cassandra. These are <em>not</em> based on the core Cosmos DB engine, they are not an API into Cosmos, they are a whole different things - hosted instances of specific database types.</div></div><h2 id="cosmos-db-vs-mongodb">Cosmos DB Vs MongoDB</h2><p>So, let&rsquo;s talk MongoDB then. Cosmos DB is multi-model in a specific way. It has a single storage layer, the DocumentDB, and then various APIs. One of these is a MongoDB interface. This Mongo interface, on top of Cosmos DB, might be a great choice if you are used to Mongo, because you can often just change your query string on your existing mongodb code and start using cosmos.</p><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-csharp" data-lang="csharp"><span class="line"><span class="cl"><span class="k">using</span> <span class="nn">MongoDB.Driver</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="k">using</span> <span class="nn">MongoDB.Bson</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Connect to Cosmos DB using MongoDB API</span>
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">MongoClient</span><span class="p">(</span><span class="s">&#34;mongodb://&lt;account&gt;:&lt;key&gt;@&lt;account&gt;.mongo.cosmos.azure.com:10255/?ssl=true&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">db</span> <span class="p">=</span> <span class="n">client</span><span class="p">.</span><span class="n">GetDatabase</span><span class="p">(</span><span class="s">&#34;customersdb&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">collection</span> <span class="p">=</span> <span class="n">db</span><span class="p">.</span><span class="n">GetCollection</span><span class="p">&lt;</span><span class="n">BsonDocument</span><span class="p">&gt;(</span><span class="s">&#34;customers&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">docs</span> <span class="p">=</span> <span class="k">await</span> <span class="n">collection</span><span class="p">.</span><span class="n">Find</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">BsonDocument</span><span class="p">(</span><span class="s">&#34;customerId&#34;</span><span class="p">,</span> <span class="s">&#34;12345&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">).</span><span class="n">ToListAsync</span><span class="p">();</span>
</span></span></code></pre></div><p>That will totally work. You can query using MQL, assuming you avoid Mongo&rsquo;s advanced features. Still, you will quickly need to understand Cosmos-specific things, like RUs and partitions, or else you might end up with unexpected performance or costs.</p><div class="note note-info"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-info-fill"/></svg><div class="line"></div></div><div class="content">Reddit Azure users report some challenges with using the Mongo API, and Microsoft also recommends using the SQL-based &ldquo;API for NoSQL&rdquo; if you can. So Mongo fans may want to consider not choosing Cosmos&rsquo; Mongo API.</div></div><p>However, the big advantage of Cosmos over Mongo is distribution and scaling up. But to understand that, we need to explain partitions.</p><p>With MongoDB, you&rsquo;re setting up shards, configuring keys, and managing replica sets. Sure, you get control, but you&rsquo;re also the one staying up late managing infrastructure as your data grows.</p><p>In Cosmos DB, scaling and partitioning are more hands-off – you just have to enable &lsquo;automatic scaling&rsquo; – but you need the correct partition key from the start. So you need to understand your access patterns and be aware that &lsquo;automatic scaling&rsquo; does what it says, but costs will increase as you scale.</p><h2 id="how-cosmos-db-partitions--scales-data-efficiently">How Cosmos DB Partitions & Scales Data Efficiently</h2><p><img src="shards.png" alt="Diagram comparing MongoDB sharding and Cosmos DB partitioning. MongoDB uses config servers and a Mongos router to distribute data across shards with replica sets, while Cosmos DB partitions data into logical partitions mapped to physical partitions via its managed service."></p><p>In MongoDB, a shard is a collection of data stored on a specific server, used to distribute data across multiple servers for horizontal scaling. Partitioning is really an improvement on this idea. Cosmos separates partitions into logical and physical partitions. You choose the logical partitions only and leave the DB to decide the best way to group these onto specific physical servers. The physical groupings are physical partitions, and the system manages scaling by handling data distribution across physical partitions without user intervention.</p><h3 id="cosmos-db-partitioning">Cosmos DB Partitioning</h3><ul><li><strong>Logical Partitions:</strong> Like MongoDB&rsquo;s shards, logical partitions group documents with the same partition key. However, each logical partition can store up to 20 GB of data and is automatically managed by Cosmos DB.</li><li><strong>Physical Partitions:</strong> Cosmos DB hides the complexity of managing the physical servers. Physical partitions store and serve one or more logical partitions, and Cosmos DB handles how data is distributed across physical partitions for you. This allows Cosmos DB to automatically scale and balance the load as needed.</li></ul><h3 id="comparison-to-mongodb">Comparison To MongoDB</h3><div class="table-wrapper table-responsive"><table><thead><tr><th><strong>Feature</strong></th><th><strong>MongoDB Sharding</strong></th><th><strong>Cosmos DB Partitioning</strong></th></tr></thead><tbody><tr><td data-label="Feature"><strong>Data Distribution</strong></td><td data-label="MongoDB Sharding">Manual sharding with shard key and replica sets</td><td data-label="Cosmos DB Partitioning">Automatic partitioning with partition key</td></tr><tr><td data-label="Feature"><strong>Scaling</strong></td><td data-label="MongoDB Sharding">Manual scaling (add shards)</td><td data-label="Cosmos DB Partitioning">Automatic scaling (Azure-managed)</td></tr><tr><td data-label="Feature"><strong>Operational Complexity</strong></td><td data-label="MongoDB Sharding">Requires manual setup and maintenance</td><td data-label="Cosmos DB Partitioning">Minimal operational overhead</td></tr><tr><td data-label="Feature"><strong>Global Distribution</strong></td><td data-label="MongoDB Sharding">Requires manual setup of replica sets</td><td data-label="Cosmos DB Partitioning">Built-in global distribution</td></tr><tr><td data-label="Feature"><strong>Consistency Models</strong></td><td data-label="MongoDB Sharding">Eventual (with strong for replica sets)</td><td data-label="Cosmos DB Partitioning">5 consistency models, including strong</td></tr><tr><td data-label="Feature"><strong>Query Performance</strong></td><td data-label="MongoDB Sharding">Requires index management, can result in scatter-gather queries</td><td data-label="Cosmos DB Partitioning">Auto-indexing, but cross-partition queries can be costly</td></tr><tr><td data-label="Feature"><strong>Cost Model</strong></td><td data-label="MongoDB Sharding">Based on instance, storage, and IO usage</td><td data-label="Cosmos DB Partitioning">Request Units (RUs) per operation, with potential for high costs</td></tr></tbody></table></div><h2 id="mongodb-vs-cosmos-db-cost-comparison">MongoDB Vs. Cosmos DB Cost Comparison</h2><p>Your exact numbers may vary, but by my back-of-the-napkin math, Cosmos DB is cheaper more than MongoDB Atlas for similar workloads. It also has SLAs on read speed and scaling is much easier.</p><div class="table-wrapper table-responsive"><table><thead><tr><th><strong>Service</strong></th><th><strong>Cost (500 reads/sec, 50 writes/sec, 10 KB document)</strong></th><th><strong>Pricing Model</strong></th></tr></thead><tbody><tr><td data-label="Service"><strong>MongoDB Atlas</strong></td><td data-label="Cost (500 reads/sec, 50 writes/sec, 10 KB document)">~$387.62/month</td><td data-label="Pricing Model">Based on instance size (M30), fixed pricing</td></tr><tr><td data-label="Service"><strong>Cosmos DB</strong></td><td data-label="Cost (500 reads/sec, 50 writes/sec, 10 KB document)">~$227.28/month</td><td data-label="Pricing Model">Request Units (RUs) based, scales with document size and operations</td></tr></tbody></table></div><div class="note note-info"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-info-fill"/></svg><div class="line"></div></div><div class="content">See also <a href="/what-is/cosmos-db-vs-mongodb-know-the-differences/">Cosmos DB vs MongoDB, Know The Differences</a></div></div><h2 id="cosmos-db-vs-cassandra">Cosmos DB Vs Cassandra</h2><figure><img src="/blog/when-to-use-azure-cosmos-db/cassandra.png" width="75%"></figure><p>After learning about partitioning and seeing the Cassandra API, you might think Cosmos DB is basically managed by Cassandra. And there are some key similarities. In many ways, Cosmos DB is Cassandra-inspired, but there are key differences.</p><div class="note note-tip"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-lightbulb-fill"/></svg><div class="line"></div></div><div class="content"><p><strong>You might also like:</strong></p><ul><li><a href="https://www.pulumi.com/blog/azure-deployment-environments/">Pulumi + Azure Deployment Environments: Better Together for Enterprise Developers</a></li><li><a href="https://www.pulumi.com/blog/introducing-azure-native-v2/">Azure Native Provider 2.0: Streamlined, Expanded, and More Powerful than Ever</a></li></ul></div></div><h3 id="how-cosmos-db-and-cassandra-relate">How Cosmos DB and Cassandra Relate</h3><ol><li><strong>Partitioning</strong>: Both use logical partition keys for scalability to distribute data across nodes. Cassandra requires manual management, while Cosmos DB automates partitioning and scaling, reducing operational burdens, though at the cost of flexibility.</li><li><strong>Tunable Consistency</strong>: Like Cassandra, Cosmos DB offers tunable consistency but expands on it with five levels: Strong, Bounded Staleness, Session, Consistent Prefix, and Eventual—allowing finer control over consistency vs. performance.</li></ol><h3 id="key-differences">Key Differences</h3><ol><li><p><strong>Cassandra API</strong>: Though Cosmos DB offers a Cassandra API, it&rsquo;s not running Cassandra under the hood. So, while the API is familiar, the system behaves differently, especially in terms of performance.</p></li><li><p><strong>Operational Complexity</strong>: Cassandra gives complete control over nodes and replication but requires hands-on management. Cosmos DB automates these tasks, offering hands-off operations while maintaining high availability, making it easier to manage at scale.</p></li></ol><h3 id="api-for-apache-cassandra">API for Apache Cassandra</h3><p>If you have existing Apache Cassandra usage, in theory, the API for Apache Cassandra lets you use CosmosDB equivalently by just changing the query string. As with the Mongo API above, if possible you are probably better to use Core NoSQL API, but that will required rewriting dataaccess code.</p><h3 id="cosmos-db-cql-querying">Cosmos DB CQL Querying</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-csharp" data-lang="csharp"><span class="line"><span class="cl"><span class="k">using</span> <span class="nn">Cassandra</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Connect to Cosmos DB&#39;s Cassandra API</span>
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">cluster</span> <span class="p">=</span> <span class="n">Cluster</span><span class="p">.</span><span class="n">Builder</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="p">.</span><span class="n">WithCredentials</span><span class="p">(</span><span class="s">&#34;&lt;username&gt;&#34;</span><span class="p">,</span> <span class="s">&#34;&lt;password&gt;&#34;</span><span class="p">)</span> <span class="c1">// From Azure Portal</span>
</span></span><span class="line"><span class="cl"> <span class="p">.</span><span class="n">WithPort</span><span class="p">(</span><span class="m">10350</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="p">.</span><span class="n">AddContactPoint</span><span class="p">(</span><span class="s">&#34;&lt;account&gt;.cassandra.cosmos.azure.com&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="p">.</span><span class="n">WithSSL</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="p">.</span><span class="n">Build</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">session</span> <span class="p">=</span> <span class="k">await</span> <span class="n">cluster</span><span class="p">.</span><span class="n">ConnectAsync</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">cql</span> <span class="p">=</span> <span class="s">&#34;SELECT * FROM customersdb.customers WHERE customer_id = ?&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">results</span> <span class="p">=</span> <span class="k">await</span> <span class="n">session</span><span class="p">.</span><span class="n">ExecuteAsync</span><span class="p">(</span><span class="n">cql</span><span class="p">,</span> <span class="s">&#34;12345&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">foreach</span> <span class="p">(</span><span class="kt">var</span> <span class="n">row</span> <span class="k">in</span> <span class="n">results</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">$&#34;Customer: {row[&#34;</span><span class="n">name</span><span class="s">&#34;]}&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h3 id="when-to-use-cassandra-vs-cosmos-db">When to Use Cassandra Vs Cosmos DB</h3><ul><li><strong>Cassandra</strong>: Use when you need control and can manage partitioning and scaling manually.</li><li><strong>Cosmos DB</strong>: Use when you want hands-off scalability and a fully managed service with the option to use Cassandra-like APIs.</li></ul><p>So use Cassandra when you need complete control over partitioning and scaling and are prepared to manage infrastructure manually. Opt for Cosmos DB when you want a hands-off managed service that handles the operational complexity for you, even if you&rsquo;re using the familiar Cassandra API.</p><h2 id="dynamo-db-vs-cosmos-db">Dynamo DB Vs Cosmos DB</h2><p>After comparing Cosmos DB to Cassandra, it&rsquo;s natural to think of DynamoDB next. Like Cosmos DB, DynamoDB is fully managed and Dynamo-inspired, but being part of AWS, it operates differently from both Cassandra and Cosmos DB, especially in terms of operational simplicity and pricing.</p><h3 id="managed-operations">Managed Operations</h3><p>DynamoDB and Cosmos DB remove the ops overhead you&rsquo;d get with Cassandra. If Cassandra gives you full control over nodes and partitioning, DynamoDB and Cosmos DB automate much of the complexity behind the scenes. With DynamoDB, you don&rsquo;t have to manually manage shards or replication—AWS handles that for you, just like Cosmos DB on Azure.</p><p>Both databases also rely heavily on partition keys for data distribution. In DynamoDB, choosing the right partition key is critical to avoid hot spots, just like you need a well-thought-out partition key in Cosmos DB to balance the load across physical partitions. But where DynamoDB allows you to toggle between on-demand and provisioned capacity to manage scaling, Cosmos DB simply auto-scales as your traffic grows, offering a more seamless experience if you&rsquo;re willing to pay for it.</p><h3 id="cosmos-db-consistency-levels">Cosmos DB Consistency Levels</h3><p>While Cassandra offers tunable consistency, DynamoDB simplifies this down to just two options: eventual consistency (default) or strong consistency. It&rsquo;s enough for many use cases, but Cosmos DB follows Cassandra in covering many levels of consistency ranging from strong to eventual. One level, Session level consistency, seems both unique to Cosmos and valuable. It ensures you are always able to read your writes in the same session without impacting performance as much as higher consistency levels can. This makes Cosmos DB pretty unique if you to fine-tune consistency for globally distributed applications.</p><h3 id="cosmos-db-vs-dynamo-db-costs">Cosmos DB vs Dynamo DB Costs</h3><p>Again, using some back-of-the-napkin math, DynamoDB in provisioned Mode is more cost-effective than Cosmos DB for the same workload with 10 kb document sizes, but the numbers could swing the other way based on your use case. This is with estimating 500 reads / second ( 400 point reads or get-time, 100 more complex queries) and 50 writes.</p><div class="table-wrapper table-responsive"><table><thead><tr><th><strong>Service</strong></th><th><strong>Workload</strong> (500 reads/sec, 50 writes/sec)</th><th><strong>3 KB Document Size</strong></th><th><strong>10 KB Document Size</strong></th><th><strong>Key Difference</strong></th></tr></thead><tbody><tr><td data-label="Service"><strong>DynamoDB</strong></td><td data-label="Workload (500 reads/sec, 50 writes/sec)">500 reads/sec, 50 writes/sec</td><td data-label="3 KB Document Size">$137.67/month</td><td data-label="10 KB Document Size">$54.84/month</td><td data-label="Key Difference"></td></tr><tr><td data-label="Service"><strong>Cosmos DB</strong></td><td data-label="Workload (500 reads/sec, 50 writes/sec)">500 reads/sec, 50 writes/sec</td><td data-label="3 KB Document Size">$227.28/month</td><td data-label="10 KB Document Size">$212.92/month</td><td data-label="Key Difference"></td></tr></tbody></table></div><div class="note note-info"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-info-fill"/></svg><div class="line"></div></div><div class="content">See also <a href="/what-is/database-comparison-cosmos-db-vs-dynamodb/">Cosmos DB vs DynamoDB, Know The Differences</a></div></div><h2 id="tangent-azure-table-storage-vs-cosmos-db">Tangent: Azure Table Storage vs. Cosmos DB</h2><p>Cosmos DB also has a Azure Table API and marketing material saying it&rsquo;s a better choice than Azure Table Storage. My take is Azure Table and Cosmos DB&rsquo;s Table API both provide key-value storage with distinct trade-offs. Azure Table Storage is cost-effective and ideal for simpler, predictable workloads, requiring minimal complexity. Cosmos DB&rsquo;s Table API adds flexibility, optional global distribution, and tunable consistency, but also brings more complexity and cost.</p><p>While both offer similar functionality, Cosmos DB&rsquo;s advanced features will cost you. If you know you aren&rsquo;t going to need scale read and writes or need multi-region writes or other features, Azure Table Storage&rsquo;s simpler, predictable pricing is the way to go.</p><div class="rounded-lg bg-violet-50 p-6 my-8"><p class="heading-4 m-0 mb-3 flex items-center gap-1.5">Provision Azure databases as code</p><div class="body-base m-0 text-gray-950">Whether you land on Cosmos DB, Azure SQL, or PostgreSQL, Pulumi lets you define and manage your entire Azure data layer in the language you already use.</div><a href="https://app.pulumi.com/signup" data-track="blog-body-cta" class="btn btn-primary mt-4">Get started
<svg class="ph-icon ph-icon--regular size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-arrow-right-regular"/></svg></a></div><h2 id="when-cosmos-db-makes-sense">When Cosmos DB Makes Sense</h2><p><img src="pro-con.png" alt="Diagram outlining the pros and cons of Cosmos DB. Pros include scale, flexibility, and consistency, while cons include cost, tooling limitations, and vendor lock-in."></p><p>OK, I think all these comparisons give us a solid grounding to talk about trade-offs. So, with all this in mind, when should you use Cosmos DB?</p><ol><li><p><strong>Document Database with Global Distribution</strong>: Cosmos DB is a strong choice if you need a document database that supports global distribution with multiple consistency models. Its automatic scaling and geo-replication mean you can reach a global audience and a high level of throughput with minimal operational overhead.</p></li><li><p><strong>Hands-Off Scalability</strong>: This came up again and again. When you want to focus more on development and less on database administration, Cosmos DB offers hands-off scalability. It automatically handles partitioning, indexing, and replication, which is great for teams that prefer highly managed services.</p></li><li><p><strong>Schema Flexibility</strong>: When your data structure is not fixed and might evolve over time, Cosmos DB&rsquo;s schema-less nature is an advantage. This flexibility is helpful in cases where your application data needs to adapt frequently without the constraints of a rigid schema. Also, there is a taste aspect to this. While I like schemas and structure, some teams have extensive experience working with document-based NoSQL solutions, and they will find CosmosDB a great fit.</p></li></ol><h2 id="when-to-avoid-cosmos-db">When to Avoid Cosmos DB</h2><ol><li><p><strong>Cost Sensitivity</strong>: Cosmos DB can be expensive, when you start working multi-region or start writing a lot of data per partition. If cost is a primary concern, especially for smaller projects, it might be better to consider alternatives.</p></li><li><p><strong>Complex Joins and Transactions</strong>: If your application requires complex joins, foreign key relationships, or cross-partition transactions, Cosmos DB might not be the best fit. A relational database like PostgreSQL or SQL Server would serve these requirements more effectively.</p></li><li><p><strong>Predictable Workloads with Lower Complexity</strong>: For applications that have predictable workloads and do not need the complexity of multi-region consistency or scaling to varying demand levels, a simpler solution like a traditional relational database might be more cost-effective and easier to manage.</p></li><li><p><strong>Need for Strong Schema Enforcement</strong>: Long-term, there is a lot to be said for having a scheme and an easy way to evolve your data. If your application benefits from strict schema enforcement to ensure data integrity and reduce developer errors, a relational database like PostgreSQL or SQL Server will be a better choice than Cosmos DB. Cosmos DB&rsquo;s schema-less nature can introduce challenges if your data model needs strict consistency and structure.</p></li><li><p><strong>Avoiding Vendor Lock-In</strong>: If you want to maintain portability and avoid vendor lock-in, Cosmos DB might not be ideal for you. A highly managed database service, whether CosmosDB, Dynamo, or Spanner, will be hard to replace on another cloud vendor. A more portable database like PostgreSQL or Cassandra might be preferable for multi-cloud or cloud-agnostic strategies.</p></li></ol><div class="note note-info"><div class="icon-and-line"><svg class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-info-fill"/></svg><div class="line"></div></div><div class="content"><h2 id="more-reasons-for-cosmos-db--update-">More Reasons for Cosmos DB ( Update )</h2><p>Since this article came out, I&rsquo;ve had a chance to talk to several Cosmos DB users inside and outside Microsoft. I spoke with Mark Brown on the Cosmos DB team, and he highlighted two additional reasons why teams choose Cosmos DB, that I had originally under emphasized:</p><ul><li><p><strong>High Availability:</strong> Cosmos DB is designed for mission-critical applications requiring always-on availability. It&rsquo;s the only Azure database with five 9s availability and active-active multi-region writes. This high availability is why services like Azure Active Directory and Teams use it.</p></li><li><p><strong>Guaranteed Low Latency:</strong> Cosmos DB offers SLAs on read and write latency (&lt;10ms P99), a guarantee few other databases can match. This speed is achieved by co-locating compute and storage on the same cluster, minimizing data access times.</p></li></ul></div></div><h2 id="managing-database-infrastructure-with-pulumi">Managing Database Infrastructure with Pulumi</h2><p>Whether you choose Cosmos DB, PostgreSQL, or Azure Table Storage Pulumi simplifies the process of provisioning and managing database infrastructure on Azure. With infrastructure as code in your favorite programming languages, you can define, deploy, and maintain your entire database infrastructure using familiar development practices. Pulumi&rsquo;s <a href="/registry/packages/azure-native/">Azure Native provider</a> helps you implement the right database solution for your specific needs. Getting started only takes a few minutes: <a href="/docs/install/">install the Pulumi CLI</a> and point it at your existing Azure subscription.</p><p>With Pulumi, you get:</p><ul><li><a href="/docs/integrations/clouds/azure/">Rich Azure database provisioning</a> capabilities for Cosmos DB, PostgreSQL, and Azure SQL</li><li><a href="/docs/iac/concepts/config/">Automated configuration management</a> to handle connection strings and secrets securely</li><li><a href="/docs/iac/concepts/testing/">Infrastructure testing capabilities</a> to validate your database configuration before deployment</li><li><a href="/docs/iac/concepts/stacks/#stackreferences">Stack references</a> for managing multiple database environments</li><li><a href="/docs/iac/concepts/components/">Custom components</a> for creating reusable database infrastructure patterns</li></ul><p>Ready to streamline your database infrastructure management?</p><a href="/docs/get-started/" class="btn btn-primary">Try Pulumi for Free</a><h2 id="summary">Summary</h2><p>If you need something that is document-based, scales globally, and handles different consistency levels well, Cosmos DB could be a great choice - especially if you&rsquo;re already using Azure. Azure takes it seriously - it&rsquo;s in every data center they have, and they treat it as mission-critical. But here&rsquo;s the thing - while it&rsquo;s easier to manage than the alternatives we looked at, you&rsquo;ll pay more for that convenience.</p><p>Many times, that cost is not the variable being optimized for. Data is paramount, and Cosmos DB works well for many. James Thurley, Co-founder of Canopy Simulations, found it a perfect fit for their needs:</p><blockquote><p>We&rsquo;ve been using Cosmos DB as a document database since it was called DocumentDB, and it&rsquo;s been fast, reliable, and straightforward for our needs. We store large, arbitrarily structured JSON documents, and Cosmos DB&rsquo;s full indexing has handled that effortlessly. For us, the simplicity works—we don&rsquo;t need to scale to millions of users, and with auto-scaling, each customer&rsquo;s database runs smoothly without any partitioning.</p></blockquote><p>For help provisioning Cosmos DB, check out our <a href="https://www.pulumi.com/registry/packages/azure-native/how-to-guides/azure-cs-cosmosdb-logicapp/">Azure Cosmos DB How to guide</a> and if you decide to go with Azure Tables instead, our <a href="https://www.pulumi.com/registry/packages/azure-native/">Azure Native provider</a> is there to help you all the same.</p><p>And if you have a Cosmos DB experience to share ( or I got something wrong ): <a href="/blog/author/adam-gordon-bell/">reach out</a>. And, if you haven&rsquo;t already, give Pulumi IaC a try:</p><section class="my-16"><div class="container mx-auto max-w-5xl md:flex my-8 align-top justify-center text-center"><div class="md:w3-/12 mr-4"><h2 class="no-anchor">Get Started with Pulumi</h2><p class="text-gray-700 dark:text-gray-300 text-sm">Use Pulumi's open-source SDK to create, deploy, and manage infrastructure on any cloud.</p></div></div><div class="mx-auto max-w-4xl"><div class="tiles flex-wrap mt-4"><div class="pb-4 md:pr-4 md:w-1/2"><a class="tile p-8" href="/docs/iac/get-started/aws/"><img class="h-10 mx-auto" src="/logos/tech/aws.svg" alt="AWS"></a></div><div class="pb-4 md:w-1/2"><a class="tile p-8" href="/docs/iac/get-started/azure/"><img class="h-10 mx-auto" src="/logos/tech/azure.svg" alt="Azure"></a></div><div class="pb-4 md:pr-4 md:w-1/2"><a class="tile p-8" href="/docs/iac/get-started/gcp/"><img class="h-10 mx-auto" src="/logos/tech/gcp.svg" alt="Google Cloud"></a></div><div class="pb-4 md:w-1/2"><a class="tile p-8" href="/docs/iac/get-started/kubernetes/"><img class="h-10 mx-auto" src="/logos/tech/k8s.svg" alt="Kubernetes"></a></div></div></div></section></section><div class="mt-8 flex flex-wrap items-center gap-2 border-t border-gray-200 pt-8"><span class="body-sm font-semibold text-service-black">Tagged as:</span>
<a href="/blog/tag/azure/" data-track="blog-tag-azure" class="relative z-10 badge badge-secondary">azure</a></div><details class="group mt-8 border-t border-gray-200 pt-8"><summary class="flex cursor-pointer list-none items-center justify-between gap-4 text-sm font-semibold marker:hidden [&::-webkit-details-marker]:hidden hover:text-service-black"><span>Archived feature image</span>
<svg class="ph-icon ph-icon--regular size-4 shrink-0 transition-transform group-open:rotate-180" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-down-regular"/></svg></summary><img class="mt-4 rounded-lg border border-gray-200" src="/blog/when-to-use-azure-cosmos-db/meta-legacy_hu_7da12120d16f1826.webp" srcset="/blog/when-to-use-azure-cosmos-db/meta-legacy_hu_7da12120d16f1826.webp 1x, /blog/when-to-use-azure-cosmos-db/meta-legacy_hu_63547a0e26d04145.webp 2x" width="960" height="502" loading="lazy" decoding="async" alt="Original feature image for this post"></details><nav aria-label="Previous and next posts" class="mt-12 grid grid-cols-1 gap-4 sm:grid-cols-2"><a href="/blog/p3-some-assembly-required/" data-track="blog-prev-post" class="group flex min-w-0 flex-col items-start gap-2 rounded-lg border border-gray-300 bg-white p-5 transition-colors hover:border-gray-500 hover:bg-gray-100"><span class="font-overline-sm flex items-center gap-1 text-service-black"><svg class="ph-icon ph-icon--bold size-3" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-left-bold"/></svg>Previous</span>
<span class="heading-4 m-0 w-full truncate text-service-black transition-colors group-hover:text-violet-primary">Pulumi Patterns and Practices Platform (P3): Some Assembly Required</span>
</a><a href="/blog/kubecon-na-2024-roundup/" data-track="blog-next-post" class="group flex min-w-0 flex-col items-end gap-2 rounded-lg border border-gray-300 bg-white p-5 text-right transition-colors hover:border-gray-500 hover:bg-gray-100 sm:col-start-2"><span class="font-overline-sm flex items-center gap-1 text-service-black">Next<svg class="ph-icon ph-icon--bold size-3" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-caret-right-bold"/></svg></span>
<span class="heading-4 m-0 w-full truncate text-service-black transition-colors group-hover:text-violet-primary">Pulumi's Latest Kubernetes Updates from KubeCon North America</span></a></nav><section class="newsletter-input mt-12"><div class="rounded-lg bg-violet-50 px-6 py-8 text-center"><h4 class="mb-4">Subscribe to the Pulumi Monthly Newsletter</h4><div class="inline-block"><pulumi-hubspot-form form-id="6d45d68a-4244-4f23-bbec-941f8ccb2b44" class="newsletter newsletter-blog"></pulumi-hubspot-form></div></div></section></div><aside class="mt-10 lg:mt-0 lg:w-[19rem] lg:shrink-0"><div class="flex flex-col gap-8 lg:sticky lg:top-24"><div class="hidden md:block md:empty:hidden"><nav data-blog-toc aria-label="Table of contents"><p class="font-overline-sm mb-4 text-service-black">In this post</p><ul class="m-0 flex list-none flex-col gap-2 p-0"><li class="m-0 leading-snug"><a href="#tldr" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">TL;DR</a></li><li class="m-0 leading-snug"><a href="#what-is-cosmos-db-features--architecture-explained" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">What is Cosmos DB? Features & Architecture Explained</a></li><li class="m-0 leading-snug"><a href="#types-of-databases" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Types Of Databases</a></li><li class="m-0 leading-snug"><a href="#cosmos-db-vs-sql-server--azure-sql-database--or-postgres" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Cosmos DB Vs. SQL Server ( Azure SQL Database ) or Postgres</a></li><li class="m-0 leading-snug"><a href="#document-database--nosql-trade-offs" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Document Database / NoSQL Trade-Offs</a></li><li class="m-0 leading-snug"><a href="#cosmos-db-vs-mongodb" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Cosmos DB Vs MongoDB</a></li><li class="m-0 leading-snug"><a href="#how-cosmos-db-partitions--scales-data-efficiently" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">How Cosmos DB Partitions & Scales Data Efficiently</a></li><li class="m-0 leading-snug"><a href="#mongodb-vs-cosmos-db-cost-comparison" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">MongoDB Vs. Cosmos DB Cost Comparison</a></li><li class="m-0 leading-snug"><a href="#cosmos-db-vs-cassandra" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Cosmos DB Vs Cassandra</a></li><li class="m-0 leading-snug"><a href="#dynamo-db-vs-cosmos-db" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Dynamo DB Vs Cosmos DB</a></li><li class="m-0 leading-snug"><a href="#tangent-azure-table-storage-vs-cosmos-db" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Tangent: Azure Table Storage vs. Cosmos DB</a></li><li class="m-0 leading-snug"><a href="#when-cosmos-db-makes-sense" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">When Cosmos DB Makes Sense</a></li><li class="m-0 leading-snug"><a href="#when-to-avoid-cosmos-db" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">When to Avoid Cosmos DB</a></li><li class="m-0 leading-snug"><a href="#managing-database-infrastructure-with-pulumi" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Managing Database Infrastructure with Pulumi</a></li><li class="m-0 leading-snug"><a href="#summary" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Summary</a></li></ul></nav></div><div><p class="font-overline-sm mb-4 text-service-black">Share</p><ul class="m-0 flex list-none items-center gap-3 p-0"><li class="m-0"><button type="button" data-copy-link data-url="https://www.pulumi.com/blog/when-to-use-azure-cosmos-db/" aria-label="Copy link" data-track="blog-share-copy-link" class="block cursor-pointer text-gray-500 transition-colors hover:text-violet-primary">
<span data-copy-link-idle><svg class="ph-icon ph-icon--regular text-lg" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-link-regular"/></svg></span>
<span data-copy-link-done hidden class="text-green-500"><svg class="ph-icon ph-icon--regular text-lg" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-check-regular"/></svg></span></button></li><li class="m-0"><a href="https://www.linkedin.com/feed/?shareActive=true&text=When%20to%20Use%20Cosmos%20DB%20https%3a%2f%2fwww.pulumi.com%2fblog%2fwhen-to-use-azure-cosmos-db%2f" target="_blank" rel="noopener" aria-label="Share on LinkedIn" data-track="blog-share-linkedin" class="text-gray-500 transition-colors hover:text-violet-primary"><svg class="ph-icon text-lg" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-linkedin"/></svg></a></li><li class="m-0"><a href="https://www.reddit.com/submit?url=https%3a%2f%2fwww.pulumi.com%2fblog%2fwhen-to-use-azure-cosmos-db%2f&title=When%20to%20Use%20Cosmos%20DB" target="_blank" rel="noopener" aria-label="Share on Reddit" data-track="blog-share-reddit" class="text-gray-500 transition-colors hover:text-violet-primary"><svg class="ph-icon text-lg" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-reddit"/></svg></a></li><li class="m-0"><a href="https://x.com/intent/post?text=When%20to%20Use%20Cosmos%20DB&url=https%3a%2f%2fwww.pulumi.com%2fblog%2fwhen-to-use-azure-cosmos-db%2f" target="_blank" rel="noopener" aria-label="Share on X" data-track="blog-share-x" class="text-gray-500 transition-colors hover:text-violet-primary"><svg class="ph-icon text-base" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-x"/></svg></a></li><li class="m-0"><a href="https://news.ycombinator.com/submitlink?u=https%3a%2f%2fwww.pulumi.com%2fblog%2fwhen-to-use-azure-cosmos-db%2f&t=When%20to%20Use%20Cosmos%20DB" target="_blank" rel="noopener" aria-label="Share on Hacker News" data-track="blog-share-hackernews" class="text-gray-500 transition-colors hover:text-violet-primary"><svg class="ph-icon text-lg" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-hackernews"/></svg></a></li></ul></div><div class="rounded-lg bg-violet-50 p-4 pb-2"><p class="font-overline-sm m-0 mb-4 flex items-center gap-1.5 text-violet-primary"><svg class="ph-icon size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-pulumi"/></svg>Program the Cloud</p><p class="body-sm m-0">Create, deploy, and manage cloud infrastructure using your favorite language.</p><a href="/docs/get-started/" data-track="sidebar" class="btn btn-ghost-primary mt-2 -ml-2.5 hover:bg-violet-100">Get started
<svg class="ph-icon ph-icon--regular size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-arrow-right-regular"/></svg></a></div></div></aside></div></div><section class="border-t border-gray-200"><div class="mx-auto max-w-[1220px] px-4 py-10 lg:py-12"><p class="font-overline m-0! mb-6 text-service-black">Related posts</p><div class="flex flex-col"><article data-post-row data-category="general" class="group relative border-b border-gray-200 last:border-0"><div data-row-compact class="flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 py-6"><h4 class="m-0! min-w-0 flex-1 md:truncate"><a href="/blog/infrastructure-as-code-tools/" data-track="blog-row-best-infrastructure-as-code-iac-tools-for-2026" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Best Infrastructure as Code (IaC) Tools for 2026</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">General</span></span>
<span class="w-32 mx-auto hidden md:inline-flex justify-center"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/asaf-ashirov.jpg" alt="Asaf Ashirov" title="Asaf Ashirov" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"><img src="/images/team/isaac-harris.jpg" alt="Isaac Harris" title="Isaac Harris" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0 -ml-3" loading="lazy" decoding="async"></span></span>
</span><time class="body-sm whitespace-nowrap text-service-black md:w-28 md:text-right" datetime="2026-07-05">Jul 5, 2026</time></div></div><div data-row-card class="hidden items-center gap-4 py-6 md:gap-8"><div class="flex min-w-0 flex-1 flex-col items-start gap-2"><span class="badge badge-outline">General</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/infrastructure-as-code-tools/" data-track="blog-card-best-infrastructure-as-code-iac-tools-for-2026" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Best Infrastructure as Code (IaC) Tools for 2026</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Compare 10 IaC tools for 2026 on pricing, licensing, release cadence, and AI-agent readiness: Pulumi, Terraform, OpenTofu, CDK, Bicep, and more.</p><div class="mt-1"><div class="flex flex-wrap items-center gap-x-2 gap-y-1 body-sm"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/asaf-ashirov.jpg" alt="Asaf Ashirov" title="Asaf Ashirov" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"><img src="/images/team/isaac-harris.jpg" alt="Isaac Harris" title="Isaac Harris" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0 -ml-3" loading="lazy" decoding="async"></span><span class="body-sm text-service-black whitespace-nowrap">2 authors</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2026-07-05">Jul 5, 2026</time></div></div></div></div></article><article data-post-row data-category="general" class="group relative border-b border-gray-200 last:border-0"><div data-row-compact class="flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 py-6"><h4 class="m-0! min-w-0 flex-1 md:truncate"><a href="/blog/why-azure-resource-manager-templates-suck-for-deployments/" data-track="blog-row-why-azure-teams-are-moving-from-arm-templates-to-.net" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Why Azure Teams Are Moving from ARM Templates to .NET</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">General</span></span>
<span class="w-32 mx-auto hidden md:inline-flex justify-center"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/sara-huddleston.jpg" alt="Sara Huddleston" title="Sara Huddleston" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span></span>
</span><time class="body-sm whitespace-nowrap text-service-black md:w-28 md:text-right" datetime="2025-08-22">Aug 22, 2025</time></div></div><div data-row-card class="hidden items-center gap-4 py-6 md:gap-8"><div class="flex min-w-0 flex-1 flex-col items-start gap-2"><span class="badge badge-outline">General</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/why-azure-resource-manager-templates-suck-for-deployments/" data-track="blog-card-why-azure-teams-are-moving-from-arm-templates-to-.net" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Why Azure Teams Are Moving from ARM Templates to .NET</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">ARM slowing you down? Ditch the JSON pain and deploy Azure like a pro with Pulumi + C#. Faster, cleaner, and actually developer-friendly.</p><div class="mt-1"><div class="flex flex-wrap items-center gap-x-2 gap-y-1 body-sm"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/sara-huddleston.jpg" alt="Sara Huddleston" title="Sara Huddleston" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span><span class="body-sm text-service-black whitespace-nowrap">Sara Huddleston</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2025-08-22">Aug 22, 2025</time></div></div></div></div></article><article data-post-row data-category="general" class="group relative border-b border-gray-200 last:border-0"><div data-row-compact class="flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 py-6"><h4 class="m-0! min-w-0 flex-1 md:truncate"><a href="/blog/azure-container-solutions/" data-track="blog-row-azure-container-services-compared-aci-vs-app-service-vs-aks" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Azure Container Services Compared: ACI vs App Service vs AKS</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">General</span></span>
<span class="w-32 mx-auto hidden md:inline-flex justify-center"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/lee-briggs.jpg" alt="Lee Briggs" title="Lee Briggs" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span></span>
</span><time class="body-sm whitespace-nowrap text-service-black md:w-28 md:text-right" datetime="2021-10-12">Oct 12, 2021</time></div></div><div data-row-card class="hidden items-center gap-4 py-6 md:gap-8"><div class="flex min-w-0 flex-1 flex-col items-start gap-2"><span class="badge badge-outline">General</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/azure-container-solutions/" data-track="blog-card-azure-container-services-compared-aci-vs-app-service-vs-aks" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Azure Container Services Compared: ACI vs App Service vs AKS</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Compare Azure container services like ACI, AKS, and App Service. Learn the pros, cons, pricing, and use cases to pick the best option for your workload.</p><div class="mt-1"><div class="flex flex-wrap items-center gap-x-2 gap-y-1 body-sm"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/lee-briggs.jpg" alt="Lee Briggs" title="Lee Briggs" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span><span class="body-sm text-service-black whitespace-nowrap">Lee Briggs</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2021-10-12">Oct 12, 2021</time></div></div></div></div></article><article data-post-row data-category="product" class="group relative border-b border-gray-200 last:border-0"><div data-row-compact class="flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 py-6"><h4 class="m-0! min-w-0 flex-1 md:truncate"><a href="/blog/azure-v6-release/" data-track="blog-row-pulumi-azure-classic-provider-version-6.0.0" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Pulumi Azure Classic Provider Version 6.0.0</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">Product</span></span>
<span class="w-32 mx-auto hidden md:inline-flex justify-center"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/daniel-bradley.jpg" alt="Daniel Bradley" title="Daniel Bradley" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span></span>
</span><time class="body-sm whitespace-nowrap text-service-black md:w-28 md:text-right" datetime="2024-09-27">Sep 27, 2024</time></div></div><div data-row-card class="hidden items-center gap-4 py-6 md:gap-8"><div class="flex min-w-0 flex-1 flex-col items-start gap-2"><span class="badge badge-outline">Product</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/azure-v6-release/" data-track="blog-card-pulumi-azure-classic-provider-version-6.0.0" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Pulumi Azure Classic Provider Version 6.0.0</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Release of the next version of the Azure Classic Pulumi Provider</p><div class="mt-1"><div class="flex flex-wrap items-center gap-x-2 gap-y-1 body-sm"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/daniel-bradley.jpg" alt="Daniel Bradley" title="Daniel Bradley" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span><span class="body-sm text-service-black whitespace-nowrap">Daniel Bradley</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2024-09-27">Sep 27, 2024</time></div></div></div></div></article><article data-post-row data-category="product" class="group relative border-b border-gray-200 last:border-0"><div data-row-compact class="flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 py-6"><h4 class="m-0! min-w-0 flex-1 md:truncate"><a href="/blog/azure-deployment-environments/" data-track="blog-row-pulumi-+-azure-deployment-environments-better-together-for-enterprise-developers" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Pulumi + Azure Deployment Environments: Better Together for Enterprise Developers</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">Product</span></span>
<span class="w-32 mx-auto hidden md:inline-flex justify-center"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/mikhail-shilkov.jpg" alt="Mikhail Shilkov" title="Mikhail Shilkov" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span></span>
</span><time class="body-sm whitespace-nowrap text-service-black md:w-28 md:text-right" datetime="2024-05-21">May 21, 2024</time></div></div><div data-row-card class="hidden items-center gap-4 py-6 md:gap-8"><div class="flex min-w-0 flex-1 flex-col items-start gap-2"><span class="badge badge-outline">Product</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/azure-deployment-environments/" data-track="blog-card-pulumi-+-azure-deployment-environments-better-together-for-enterprise-developers" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Pulumi + Azure Deployment Environments: Better Together for Enterprise Developers</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Author Azure Deployment Environments definitions with Pulumi using your favorite programming language.</p><div class="mt-1"><div class="flex flex-wrap items-center gap-x-2 gap-y-1 body-sm"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/mikhail-shilkov.jpg" alt="Mikhail Shilkov" title="Mikhail Shilkov" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span><span class="body-sm text-service-black whitespace-nowrap">Mikhail Shilkov</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2024-05-21">May 21, 2024</time></div></div></div></div></article><article data-post-row data-category="tutorials" class="group relative border-b border-gray-200 last:border-0"><div data-row-compact class="flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 py-6"><h4 class="m-0! min-w-0 flex-1 md:truncate"><a href="/blog/fully-automated-ai-inference-aws-azure-gcp-pulumi/" data-track="blog-row-fully-automated-ai-inference-on-aws-azure-and-google-cloud-with-pulumi" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Fully Automated AI Inference on AWS, Azure, and Google Cloud with Pulumi</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">Tutorials</span></span>
<span class="w-32 mx-auto hidden md:inline-flex justify-center"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/engin-diri.jpg" alt="Engin Diri" title="Engin Diri" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span></span>
</span><time class="body-sm whitespace-nowrap text-service-black md:w-28 md:text-right" datetime="2026-06-30">Jun 30, 2026</time></div></div><div data-row-card class="hidden items-center gap-4 py-6 md:gap-8"><div class="flex min-w-0 flex-1 flex-col items-start gap-2"><span class="badge badge-outline">Tutorials</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/fully-automated-ai-inference-aws-azure-gcp-pulumi/" data-track="blog-card-fully-automated-ai-inference-on-aws-azure-and-google-cloud-with-pulumi" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Fully Automated AI Inference on AWS, Azure, and Google Cloud with Pulumi</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">A zero-touch Ollama GPU inference server on AWS, Azure, or Google Cloud as one Pulumi program, with OIDC credentials from Pulumi ESC and no static keys.</p><div class="mt-1"><div class="flex flex-wrap items-center gap-x-2 gap-y-1 body-sm"><span class="flex items-center gap-2"><span class="flex items-center shrink-0"><img src="/images/team/engin-diri.jpg" alt="Engin Diri" title="Engin Diri" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0" loading="lazy" decoding="async"></span><span class="body-sm text-service-black whitespace-nowrap">Engin Diri</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2026-06-30">Jun 30, 2026</time></div></div></div><div class="flex size-20 sm:size-28 lg:size-36 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-violet-950"><img class="h-full w-auto max-w-none" src="/blog/fully-automated-ai-inference-aws-azure-gcp-pulumi/feature_hu_f6127feafeddbb84.webp" srcset="/blog/fully-automated-ai-inference-aws-azure-gcp-pulumi/feature_hu_f6127feafeddbb84.webp 1x, /blog/fully-automated-ai-inference-aws-azure-gcp-pulumi/feature_hu_5e71dcf5fb8095ee.webp 2x" sizes="288px" width="288" height="192" alt="Fully Automated AI Inference on AWS, Azure, and Google Cloud with Pulumi" loading="lazy" decoding="async"></div></div></article></div></div></section><dialog data-lightbox aria-label="Expanded view" class="fixed inset-0 m-0 h-full max-h-none w-full max-w-none border-0 bg-transparent p-4 backdrop:bg-service-black/90 md:p-8"><button type="button" data-lightbox-close aria-label="Close" class="absolute right-2 top-2 z-10 inline-flex size-10 items-center justify-center rounded-full border-0 bg-transparent text-white transition-colors hover:bg-white/15 md:right-4 md:top-4">
<svg class="ph-icon ph-icon--regular size-6" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-x-regular"/></svg></button><figure class="m-0 flex h-full w-full flex-col items-center justify-center gap-3"><img data-lightbox-image alt class="max-h-[calc(100%-6rem)] max-w-full rounded-lg shadow-2xl"><video data-lightbox-video controls playsinline class="hidden max-h-[calc(100%-6rem)] max-w-full rounded-lg shadow-2xl"></video><figcaption data-lightbox-caption aria-hidden="true" class="body-sm line-clamp-3 max-w-3xl shrink-0 text-center text-gray-300 empty:hidden"></figcaption></figure><template data-lightbox-badge><span aria-hidden="true" class="pointer-events-none absolute right-3 top-3 inline-flex size-9 items-center justify-center rounded-md bg-service-black/60 text-white opacity-0 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100"><svg class="ph-icon ph-icon--regular size-5" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#p-magnifying-glass-plus-regular"/></svg></span></template></dialog></main><section class="bg-violet-background text-gray-950"><div class="container mx-auto flex flex-col md:flex-row items-center justify-center gap-5 md:gap-12 px-4 py-7 text-center md:text-left"><h2 class="text-2xl md:text-3xl font-semibold tracking-tight leading-tight mb-0">The infrastructure as code platform for any cloud.</h2><div class="flex gap-2.5 items-center shrink-0"><a class="btn btn-outline btn-xl" href="/contact/" data-track="footer-cta-contact-us">Contact us</a>
<a class="btn btn-primary btn-xl" href="https://app.pulumi.com/signup" data-track="footer-signup">Get started</a></div></div></section><footer class="relative bg-service-black text-white overflow-clip px-6 lg:px-8 pt-12 pb-24 lg:pb-8"><div class="absolute top-0 right-0 pointer-events-none max-w-[50%] opacity-90" aria-hidden="true"><img src="/fingerprinted/images/footer/bg-lines.db941eef4575a29e90d71577c26c8d1247a92ba851a12ab2021cc3150bc26ba9.svg" alt width="421" height="474" loading="lazy" decoding="async" aria-hidden="true"></div><div class="relative z-10 flex flex-col lg:flex-row gap-x-8 gap-y-10 justify-between"><div class="lg:w-56 lg:shrink-0 flex flex-col gap-4"><a href="/" class="inline-block" data-track="footer-logo" aria-label="Pulumi home"><img class="h-[89px] w-[84px]" src="/fingerprinted/logos/brand/pulumi-mark.2ff13df2c355746e06f3f84162d630b2d7a875e6b07a180a9187a50ba7d70db5.svg" alt="Pulumi" width="84" height="89" loading="lazy" decoding="async"></a><h3 class="mt-0 text-2xl font-semibold tracking-tight leading-snug text-white">Open source and free for individuals.</h3><div class="min-h-[28px]"><a href="https://github.com/pulumi/pulumi" target="_blank" rel="noopener" data-track="footer-github-stars" class="items-stretch h-9 shrink-0 rounded-lg border text-sm font-normal whitespace-nowrap outline-none select-none transition-all overflow-hidden focus-visible:ring-3 focus-visible:ring-violet-400/50 border-white/15 text-white hover:border-white/40 hover:bg-white/5 focus-visible:border-violet-400 inline-flex" aria-label="Star pulumi/pulumi on GitHub — 25669 stars"><span class="inline-flex items-center gap-1.5 px-2.5"><svg class="ph-icon size-4" fill="currentColor" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-github"/></svg>
<span>pulumi/pulumi</span>
</span><span aria-hidden="true" style="width:1px;background-color:rgba(255,255,255,.15)"></span>
<span class="inline-flex items-center px-2.5">25.7K</span></a></div></div><div class="grid grid-cols-2 gap-x-8 gap-y-10 sm:grid-cols-3 lg:flex lg:flex-wrap lg:gap-x-16"><nav aria-label="Resources"><h3 class="footer-heading">Resources</h3><ul><li class="mb-2"><a href="/docs/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-documentation">Docs</a></li><li class="mb-2"><a href="/registry/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-apis">Registry</a></li><li class="mb-2"><a href="/dev/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-learn">Dev Center</a></li><li class="mb-2"><a href="/events/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-events">Events</a></li><li class="mb-2"><a href="/releases/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-releases">Releases</a></li><li class="mb-2"><a href="/community/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-community">Community</a></li></ul></nav><nav aria-label="Platform"><h3 class="footer-heading">Platform</h3><ul><li class="mb-2"><a href="/product/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-overview">Overview</a></li><li class="mb-2"><a href="/product/infrastructure-as-code/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-iac">Infrastructure as code</a></li><li class="mb-2"><a href="/product/secrets-management/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-secrets">Secrets & configuration</a></li><li class="mb-2"><a href="/product/discovery-governance/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-insights">Discovery & governance</a></li><li class="mb-2"><a href="/product/neo/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-neo">AI infrastructure agent</a></li><li class="mb-2"><a href="/product/internal-developer-platforms/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-idp">Internal developer platform</a></li><li class="mb-2"><a href="/pricing/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-platform-pricing">Pricing</a></li></ul></nav><nav aria-label="Pulumi for"><h3 class="footer-heading">Pulumi for</h3><ul><li class="mb-2"><a href="/aws/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-aws">AWS</a></li><li class="mb-2"><a href="/azure/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-azure">Microsoft Azure</a></li><li class="mb-2"><a href="/gcp/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-gcp">Google Cloud Platform</a></li><li class="mb-2"><a href="/kubernetes/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-kubernetes">Kubernetes</a></li><li class="mb-2"><a href="/what-is/what-is-infrastructure-as-code/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-what-is-infrastructure-as-code">Infrastructure as code</a></li><li class="mb-2"><a href="/solutions/ai/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-artificial-intelligence">AI/ML workloads</a></li><li class="mb-2"><a href="/case-studies/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-case-studies">Teams like yours</a></li></ul></nav><nav aria-label="Company"><h3 class="footer-heading">Company</h3><ul><li class="mb-2"><a href="/about/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-about-us">About us</a></li><li class="mb-2"><a href="/blog/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-blog">Blog</a></li><li class="mb-2"><a href="/careers/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-careers">Careers</a></li><li class="mb-2"><a href="/about/newsroom/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-newsroom">Newsroom</a></li><li class="mb-2"><a href="/awards/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-awards">Awards</a></li><li class="mb-2"><a href="/security/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-security">Security</a></li><li class="mb-2"><a href="https://brand.pulumi.com/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-brand">Brand</a></li></ul></nav><nav aria-label="Get help"><h3 class="footer-heading">Get help</h3><ul><li class="mb-2"><a href="https://slack.pulumi.com/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-help-slack">Join our Slack</a></li><li class="mb-2"><a href="/support/new/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-support">Customer support</a></li><li class="mb-2"><a href="/proserv/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-professional-services">Professional services</a></li><li class="mb-2"><a href="/request-a-demo/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-help-demo">Request a demo</a></li><li class="mb-2"><a href="/contact/" class="text-sm text-white hover:text-violet-300 hover:underline" data-track="footer-contact-us">Contact us</a></li></ul></nav></div><div class="flex flex-col gap-8 lg:pr-20"><div><h3 class="footer-heading">Connect</h3><ul class="flex gap-4 items-center"><li><a href="https://slack.pulumi.com/" target="_blank" rel="noopener" class="inline-flex items-center justify-center text-white opacity-85 hover:opacity-100 transition-opacity duration-150" data-track="footer-slack" aria-label="Pulumi Slack"><svg class="ph-icon" fill="currentColor" width="24" height="24" style="width:24px;height:24px" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-slack"/></svg></a></li><li><a href="https://github.com/pulumi/" target="_blank" rel="noopener" class="inline-flex items-center justify-center text-white opacity-85 hover:opacity-100 transition-opacity duration-150" data-track="footer-github" aria-label="Pulumi GitHub"><svg class="ph-icon" fill="currentColor" width="24" height="24" style="width:24px;height:24px" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-github"/></svg></a></li><li><a href="https://www.youtube.com/channel/UC2Dhyn4Ev52YSbcpfnfP0Mw" target="_blank" rel="noopener" class="inline-flex items-center justify-center text-white opacity-85 hover:opacity-100 transition-opacity duration-150" data-track="footer-youtube" aria-label="Pulumi YouTube"><svg class="ph-icon" fill="currentColor" width="24" height="24" style="width:24px;height:24px" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-youtube"/></svg></a></li><li><a href="https://x.com/pulumicorp" target="_blank" rel="noopener" class="inline-flex items-center justify-center text-white opacity-85 hover:opacity-100 transition-opacity duration-150" data-track="footer-twitter" aria-label="Pulumi X"><svg class="ph-icon" fill="currentColor" width="24" height="24" style="width:24px;height:24px" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-x"/></svg></a></li><li><a href="https://www.linkedin.com/company/pulumi/" target="_blank" rel="noopener" class="inline-flex items-center justify-center text-white opacity-85 hover:opacity-100 transition-opacity duration-150" data-track="footer-linkedin" aria-label="Pulumi LinkedIn"><svg class="ph-icon" fill="currentColor" width="24" height="24" style="width:24px;height:24px" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-linkedin"/></svg></a></li><li><a href="https://bsky.app/profile/pulumi.com" target="_blank" rel="noopener" class="inline-flex items-center justify-center text-white opacity-85 hover:opacity-100 transition-opacity duration-150" data-track="footer-bluesky" aria-label="Pulumi Bluesky"><svg class="ph-icon" fill="currentColor" width="24" height="24" style="width:24px;height:24px" aria-hidden="true" focusable="false"><use href="/icons/sprite.2cfc50dc64f04f7b5954b97ba2422ad621d10a8effc0d817cc0c25ec709e052a.svg#b-bluesky"/></svg></a></li></ul></div><div><h3 class="footer-heading">Get our newsletter</h3><pulumi-hubspot-form form-id="027b4c6d-9b73-4ad8-b149-3c8b07fff608" class="newsletter newsletter-dark-border newsletter-inline"></pulumi-hubspot-form></div></div></div><div class="mt-24 pt-6 flex flex-col lg:flex-row gap-4 lg:gap-6 items-center justify-between lg:mr-32"><ul class="text-xs flex flex-wrap gap-x-4 gap-y-2 justify-center lg:justify-start items-center"><li><a class="text-white opacity-70 hover:opacity-100 hover:underline cursor-pointer" data-track="footer-legal-privacy-preferences" onclick=window.consentManager&&window.consentManager.openConsentManager()>Your Privacy Preferences</a></li><li><a class="text-white opacity-70 hover:opacity-100 hover:underline" data-track="footer-legal-trademark-usage" href="/trademark/">Trademark Usage</a></li><li><a class="text-white opacity-70 hover:opacity-100 hover:underline" data-track="footer-legal-acceptable-use-policy" href="/acceptable-use/">Acceptable Use Policy</a></li><li><a class="text-white opacity-70 hover:opacity-100 hover:underline" data-track="footer-legal-terms-conditions" href="/terms-and-conditions/">Terms & Conditions</a></li><li><a class="text-white opacity-70 hover:opacity-100 hover:underline" data-track="footer-legal-privacy-policy" href="/privacy/">Privacy Policy</a></li><li><a class="text-white opacity-70 hover:opacity-100 hover:underline" data-track="footer-legal-professional-services-agreement" href="/professional-services-agreement/">Professional Services Agreement</a></li><li><span class="text-xs text-gray-500">&copy; 2026 Pulumi Corp.</span></li></ul><a class="inline-flex items-center gap-1.5 px-2 py-0.5 min-h-[24px] rounded-lg bg-service-black border border-gray-800 text-white text-sm leading-5 whitespace-nowrap hover:border-gray-500 hover:no-underline" href="https://pulumi.statuspage.io/" target="_blank" rel="noopener" data-statuspage data-track="footer-statuspage" aria-label="Pulumi system status"><span class="inline-block w-2 h-2 rounded-full shrink-0" data-statuspage-dot aria-hidden="true"></span>
<span data-statuspage-label>All Systems Operational</span></a></div></footer><div id="segment-consent-manager"></div></body></html>