Files
nexus/sreweekly/articles/372/01-read-every-single-error.html
2026-09-12 17:23:01 +08:00

176 lines
128 KiB
HTML
Raw 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":"Read Every Single Error","position":3}]},{"@id":"#main-content","@type":"BlogPosting","articleSection":"Engineering","author":[{"@id":"https://www.pulumi.com/authors/evan-boyle/#person","@type":"Person","affiliation":{"@id":"https://www.pulumi.com/#organization","@type":"Organization","name":"Pulumi"},"image":"https://www.pulumi.com/images/team/evan-boyle.jpg","jobTitle":"Engineering Manager","knowsAbout":["Infrastructure as Code","Cloud Computing","DevOps","Software Engineering","Engineering Management"],"name":"Evan Boyle","sameAs":["https://github.com/evanboyle","https://x.com/_evan_boyle","https://linkedin.com/in/evan-boyle-107a1445"],"url":"https://www.pulumi.com/blog/author/evan-boyle/","worksFor":{"@id":"https://www.pulumi.com/#organization","@type":"Organization","name":"Pulumi"}}],"dateModified":"2026-07-02T18:17:57-05:00","datePublished":"2023-03-21T00:00:00Z","description":"How one process helped us decrease our error rate 17x in one year.","headline":"Read Every Single Error","image":"https://www.pulumi.com/images/generated/blog/reducing-our-error-rate/index.png","inLanguage":"en-US","isPartOf":{"@id":"https://www.pulumi.com/#website"},"keywords":"cloud-engineering","mainEntityOfPage":{"@id":"https://www.pulumi.com/blog/reducing-our-error-rate/#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":"PT5M","url":"https://www.pulumi.com/blog/reducing-our-error-rate/","wordCount":1106},{"@id":"https://www.pulumi.com/blog/reducing-our-error-rate/#webpage","@type":"WebPage","breadcrumb":{"@id":"#breadcrumb"},"dateModified":"2026-07-02T18:17:57-05:00","datePublished":"2023-03-21T00:00:00Z","description":"How one process helped us decrease our error rate 17x in one year.","headline":"Read Every Single Error","inLanguage":"en-US","isPartOf":{"@id":"https://www.pulumi.com/#website"},"mainEntity":{"@id":"#main-content"},"name":"Read Every Single Error","url":"https://www.pulumi.com/blog/reducing-our-error-rate/"},{"@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"}]}</script><meta property="og:image" content="https://www.pulumi.com/images/generated/blog/reducing-our-error-rate/index.png"><meta property="og:type" content="article"><meta property="og:url" content="https://www.pulumi.com/blog/reducing-our-error-rate/"><meta property="og:site_name" content="pulumi"><meta name="twitter:image" content="https://www.pulumi.com/images/generated/blog/reducing-our-error-rate/index.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@PulumiCorp"><meta property="article:author" content="Evan Boyle"><meta name="author" content="Evan Boyle"><meta property="article:published_time" content="2023-03-21T00:00:00Z"><meta property="article:modified_time" content="2026-07-02T18:17:57-05:00"><meta property="og:title" content="Read Every Single Error"><meta name="description" content="How one process helped us decrease our error rate 17x in one year."><meta property="og:description" content="How one process helped us decrease our error rate 17x in one year."><title>Read Every Single Error | Pulumi Blog</title><link rel="icon" type="image/x-icon" href="/images/favicon.ico"><link rel="canonical" href="https://www.pulumi.com/blog/reducing-our-error-rate/"><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><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/engineering/" data-track="blog-category-engineering" class="relative z-10 badge badge-outline">Engineering</a><h1 class="heading-xl m-0!">Read Every Single Error</h1><div class="body-sm flex flex-wrap items-center gap-1.5"><time datetime="2023-03-21">Mar 21, 2023</time>
<span aria-hidden="true" class="text-gray-500">•</span><span class="whitespace-nowrap">6 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="/blog/author/evan-boyle/" data-track="blog-author-evan-boyle" class="flex items-center gap-2"><img src="/images/team/evan-boyle.jpg" alt="Evan Boyle" 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">Evan Boyle</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="#read-every-error-message-that-your-system-produces" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Read Every Error Message That Your System Produces</a></li><li class="m-0 leading-snug"><a href="#reliability-from-first-principles" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Reliability from First Principles</a></li><li class="m-0 leading-snug"><a href="#why-should-you-care" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">Why Should You Care?</a></li><li class="m-0 leading-snug"><a href="#the-sres-folly" data-track="blog-toc" class="block font-semibold text-service-black transition-colors hover:text-violet-primary">The SRE&rsquo;s Folly</a></li></ul></details></div><section class="blog-post-content max-w-3xl"><p>At Pulumi we read every single error message that our API produces. This is the primary mechanism that led to a 17x YoY reduction in our error rate. You’re probably wondering how reading error messages make them go away.</p><p><img src="/blog/reducing-our-error-rate/error_rate.png" alt="Pulumi Service API Error Rate Graph"></p><p>Doesn’t common wisdom tell us that we need a fancy observability toolchain, or to follow the Google SRE model? I can confidently say that you don’t. I’ll go a step further and state that throughout my career, every system I’ve worked on that relied on aggregate views of errors was a complete dumpster fire. In every team where we instead chose to read all the errors, reliability naturally improved over time.</p><p>I offer a concrete process that will drive your error rates down over time with math to back it up.</p><h2 id="read-every-error-message-that-your-system-produces">Read Every Error Message That Your System Produces</h2><p>You should read every error message that your system produces. Simple but effective. Our team pumps every 5XX into a Slack channel and reviewing each of these is a top priority for the current on-call engineer. There’s a little more to it, but that’s the gist! Commit to this process and your error rates are guaranteed to drop. And I can prove it!</p><h2 id="reliability-from-first-principles">Reliability from First Principles</h2><p>Why does reading error messages imply improving error rates? It isn&rsquo;t magic. You still have to dedicate time to fix the bugs you&rsquo;re shipping and make proactive investments. But you can model this process with a simple inequality:</p><pre tabindex="0"><code>(API Call Volume) * (Error Rate) * (Time to Triage an Error) &lt; On-Call Attention
</code></pre><p>This comes with a few important constraints:</p><ol><li>On-call attention is a fixed commodity</li><li>API call volume scales with your business</li><li>This process requires reading every error message</li></ol><p>The end result is simple. Your error rate must improve over time to keep the scales balanced. If it doesn’t, the process becomes untenable.</p><p>Let’s assume you have one engineer on call, and they spend at most an hour a day triaging errors (they have other responsibilities too!) on each of the ~250 business days per year. That’s a cap of 250 hours per year that can be spent triaging errors. This is effectively fixed. Sure you can hire and split systems out into separate on-call rotations to increase capacity, but our goal is to scale exponentially with respect to humans, not linearly!</p><p>Let’s say that triaging an error is a 5-minute process that might involve any of the following:</p><ul><li>Checking the issue tracker for a pre-existing ticket to add additional context, a +1, etc.</li><li>Reaching out to a teammate who just shipped some buggy code so they can get a fix out</li><li>Filing a well-documented bug</li><li>Starting a Slack thread with the team to raise a known issue that seems to be cropping up more regularly</li><li>Just opening a PR if it’s a simple fix</li></ul><p>Remember we only have 250 hours or 15,000 minutes per year to triage with a single on-call engineer. At five minutes a pop we can triage ~3000 errors per year until things start dropping on the floor.</p><p>Now imagine you work on a new product and you just launched your MVP. It is early days, but there is some traction and you’re seeing API traffic at a rate of 1,000,000 requests per year. Your annual budget for triaging as we previously determined is 3000 errors, which yields a maximum permissible error rate of 0.3%, or a 99.7% success rate.</p><p>Over the next six months, the team iterates, listens to customers, and delivers a ton of value. As a result, traffic levels grow to a rate of 10,000,000 requests per year. But still, our team hasn’t grown much and we still have just one engineer on call at any given point in time meaning our error triage capacity remains fixed at 3000 errors per year. In order to keep up with triaging the error stream at the increased levels of traffic, the team must improve the error rate from 0.3% to 0.03%. And hopefully, this team continues to be successful, increasing API traffic superlinearly in years to come.</p><p>If you want to be able to read every error message, then the error rate has to come down as API traffic increases.</p><h2 id="why-should-you-care">Why Should You Care?</h2><p>Pulumi aspires to be the most reliable infrastructure that our customers interact with, and the benefits towards that end are reason enough for us. But this process is by no means free, and there is always an opportunity cost.</p><p>However, we noticed a powerful second-order effect emerge over time. The team began obsessing over the user experience. Following this process builds a visceral understanding of how your system behaves. You know when a new feature has a bug before the first support tickets get opened. You know which customer workloads will require scaling investments in the next 90 days. You know what features see heavy usage and which ones customers ignore. You’re forced to confront every wart in your application. Slowly, your team builds a better understanding of your customers and this trickles down into every aspect of product development. You begin to hold yourselves to higher standards.</p><p>A friend and engineer at a large-cap software company read a draft of this post and told me:</p><blockquote><p>“I can’t imagine this process being set on any of the systems I work on at [redacted]. They are so prone to 500s and everybody shrugs their shoulders as if it is just commonplace.”</p></blockquote><p>Apathy in place of customer obsession is not an option if you are a startup that wants to disrupt anything.</p><h2 id="the-sres-folly">The SRE&rsquo;s Folly</h2><p>Error budgets and the SRE model are haute couture. Some preach that we should never look at errors at this level of granularity and instead use expensive tools that aggregate, categorize, and collect statistics on errors flowing through your system. But all of this automation can actually make things worse when you reach for it prematurely. Aggregating errors is a great way to gloss over important details early on. Collecting fancy metrics does not matter if your users are not happy. Cutting your teeth with the tools and processes that make sense for your level of scale is the only way to build a high-performance culture. Skipping straight to step 100 does not always help.</p><p>Admittedly, this process does not work for Google-level scale. But it works a lot longer than you might imagine. Pulumi manages a meaningful percentage of the resources deployed across all clouds. I asked large-cap software engineer about traffic levels and believe it or not, it is in the same order of magnitude as what we see at Pulumi.</p><p>We’re still reading every error.</p></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/cloud-engineering/" data-track="blog-tag-cloud-engineering" class="relative z-10 badge badge-secondary">cloud-engineering</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/reducing-our-error-rate/meta-legacy_hu_5ecd3693b35e82ca.webp" srcset="/blog/reducing-our-error-rate/meta-legacy_hu_5ecd3693b35e82ca.webp 1x, /blog/reducing-our-error-rate/meta-legacy_hu_18d02671025936d4.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/iac-best-practices-structuring-pulumi-projects/" 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">IaC Best Practices: Structuring Pulumi Projects</span>
</a><a href="/blog/pulumi-release-notes-85/" 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 Release Notes: Colorized Stack Traces, Output Methods for JSON, OIDC integration, and much more!</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="#read-every-error-message-that-your-system-produces" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Read Every Error Message That Your System Produces</a></li><li class="m-0 leading-snug"><a href="#reliability-from-first-principles" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Reliability from First Principles</a></li><li class="m-0 leading-snug"><a href="#why-should-you-care" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">Why Should You Care?</a></li><li class="m-0 leading-snug"><a href="#the-sres-folly" data-track="blog-toc" class="body-sm block font-semibold text-service-black transition-colors hover:text-violet-primary">The SRE&rsquo;s Folly</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/reducing-our-error-rate/" 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=Read%20Every%20Single%20Error%20https%3a%2f%2fwww.pulumi.com%2fblog%2freducing-our-error-rate%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%2freducing-our-error-rate%2f&title=Read%20Every%20Single%20Error" 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=Read%20Every%20Single%20Error&url=https%3a%2f%2fwww.pulumi.com%2fblog%2freducing-our-error-rate%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%2freducing-our-error-rate%2f&t=Read%20Every%20Single%20Error" 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="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/dependent-stack-updates/" data-track="blog-row-dependent-stack-updates-with-pulumi-deployments" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Dependent Stack Updates with Pulumi Deployments</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/evan-boyle.jpg" alt="Evan Boyle" title="Evan Boyle" 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/komal-ali.jpg" alt="Komal Ali" title="Komal Ali" 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="2023-06-20">Jun 20, 2023</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/dependent-stack-updates/" data-track="blog-card-dependent-stack-updates-with-pulumi-deployments" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Dependent Stack Updates with Pulumi Deployments</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Automatically keep dependent stacks up to date with Deployment Webhook Destinations and the pulumi-auto-deploy package.</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/evan-boyle.jpg" alt="Evan Boyle" title="Evan Boyle" 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/komal-ali.jpg" alt="Komal Ali" title="Komal Ali" 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="2023-06-20">Jun 20, 2023</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/review-stacks/" data-track="blog-row-review-stacks-collaborate-in-the-cloud" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Review Stacks: Collaborate in the Cloud</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/evan-boyle.jpg" alt="Evan Boyle" title="Evan Boyle" 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/pat-gavlin.jpg" alt="Pat Gavlin" title="Pat Gavlin" 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="2023-06-14">Jun 14, 2023</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/review-stacks/" data-track="blog-card-review-stacks-collaborate-in-the-cloud" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Review Stacks: Collaborate in the Cloud</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Review Stacks give you an automated cloud environment for every pull request so your team can ship faster, safer, and more collaboratively.</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/evan-boyle.jpg" alt="Evan Boyle" title="Evan Boyle" 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/pat-gavlin.jpg" alt="Pat Gavlin" title="Pat Gavlin" 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="2023-06-14">Jun 14, 2023</time></div></div></div></div></article><article data-post-row data-category="best-practices" 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/iac-best-practices-applying-stack-references/" data-track="blog-row-iac-best-practices-applying-stack-references" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">IaC Best Practices: Applying Stack References</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">Best Practices</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/scott-lowe.jpg" alt="Scott Lowe" title="Scott Lowe" 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="2023-03-31">Mar 31, 2023</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">Best Practices</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/iac-best-practices-applying-stack-references/" data-track="blog-card-iac-best-practices-applying-stack-references" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">IaC Best Practices: Applying Stack References</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Learn how to apply Pulumi stack references to share data across projects. Improve modularity and maintainability with best practices for stack dependencies.</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/scott-lowe.jpg" alt="Scott Lowe" title="Scott Lowe" 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">Scott Lowe</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2023-03-31">Mar 31, 2023</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/iac-best-practices-applying-stack-references/feature_hu_d27216aef57358bf.webp" srcset="/blog/iac-best-practices-applying-stack-references/feature_hu_d27216aef57358bf.webp 1x, /blog/iac-best-practices-applying-stack-references/feature_hu_e6a18ed50ede11b3.webp 2x" sizes="288px" width="288" height="192" alt="IaC Best Practices: Applying Stack References" loading="lazy" decoding="async"></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/pulumi-deployments-platform-automation/" data-track="blog-row-pulumi-deployments-api-driven-infrastructure-at-scale" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Pulumi Deployments: API-Driven Infrastructure at Scale</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/evan-boyle.jpg" alt="Evan Boyle" title="Evan Boyle" 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/pat-gavlin.jpg" alt="Pat Gavlin" title="Pat Gavlin" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0 -ml-3" loading="lazy" decoding="async"><img src="/images/team/komal-ali.jpg" alt="Komal Ali" title="Komal Ali" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0 -ml-3" loading="lazy" decoding="async"><img src="/images/team/meagan-cojocar.jpg" alt="Meagan Cojocar" title="Meagan Cojocar" 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="2023-03-29">Mar 29, 2023</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/pulumi-deployments-platform-automation/" data-track="blog-card-pulumi-deployments-api-driven-infrastructure-at-scale" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">Pulumi Deployments: API-Driven Infrastructure at Scale</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">Pulumi Deployments is a fully managed platform for shipping infrastructure at scale using APIs and programmatic building blocks.</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/evan-boyle.jpg" alt="Evan Boyle" title="Evan Boyle" 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/pat-gavlin.jpg" alt="Pat Gavlin" title="Pat Gavlin" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0 -ml-3" loading="lazy" decoding="async"><img src="/images/team/komal-ali.jpg" alt="Komal Ali" title="Komal Ali" class="size-8 rounded-full object-cover bg-violet-200 ring-1 ring-gray-100 shrink-0 -ml-3" loading="lazy" decoding="async"><img src="/images/team/meagan-cojocar.jpg" alt="Meagan Cojocar" title="Meagan Cojocar" 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">4 authors</span></span>
<span class="text-gray-500" aria-hidden="true">•</span><time class="text-service-black whitespace-nowrap" datetime="2023-03-29">Mar 29, 2023</time></div></div></div></div></article><article data-post-row data-category="best-practices" 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/iac-best-practices-structuring-pulumi-projects/" data-track="blog-row-iac-best-practices-structuring-pulumi-projects" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">IaC Best Practices: Structuring Pulumi Projects</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">Best Practices</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/christian-nunciato.jpg" alt="Christian Nunciato" title="Christian Nunciato" 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/scott-lowe.jpg" alt="Scott Lowe" title="Scott Lowe" 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="2023-03-17">Mar 17, 2023</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">Best Practices</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/iac-best-practices-structuring-pulumi-projects/" data-track="blog-card-iac-best-practices-structuring-pulumi-projects" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">IaC Best Practices: Structuring Pulumi Projects</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">See how you can structures Pulumi projects as your infrastructure grows. Learn best practices for managing complexity and scaling teams.</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/christian-nunciato.jpg" alt="Christian Nunciato" title="Christian Nunciato" 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/scott-lowe.jpg" alt="Scott Lowe" title="Scott Lowe" 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="2023-03-17">Mar 17, 2023</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/iac-best-practices-structuring-pulumi-projects/feature_hu_d27216aef57358bf.webp" srcset="/blog/iac-best-practices-structuring-pulumi-projects/feature_hu_d27216aef57358bf.webp 1x, /blog/iac-best-practices-structuring-pulumi-projects/feature_hu_e6a18ed50ede11b3.webp 2x" sizes="288px" width="288" height="192" alt="IaC Best Practices: Structuring Pulumi Projects" loading="lazy" decoding="async"></div></div></article><article data-post-row data-category="best-practices" 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/iac-best-practices-enabling-developer-stacks-git-branches/" data-track="blog-row-iac-best-practices-enabling-developer-stacks-git-branches" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">IaC Best Practices: Enabling Developer Stacks & Git Branches</a></h4><div class="flex shrink-0 items-center gap-2"><span class="hidden md:inline-flex"><span class="badge badge-outline">Best Practices</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/christian-nunciato.jpg" alt="Christian Nunciato" title="Christian Nunciato" 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/scott-lowe.jpg" alt="Scott Lowe" title="Scott Lowe" 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="2023-03-10">Mar 10, 2023</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">Best Practices</span><h3 class="heading-4 mt-1 mb-0!"><a href="/blog/iac-best-practices-enabling-developer-stacks-git-branches/" data-track="blog-card-iac-best-practices-enabling-developer-stacks-git-branches" class="text-service-black transition-colors after:absolute after:inset-0 after:content-[''] group-hover:text-violet-primary">IaC Best Practices: Enabling Developer Stacks & Git Branches</a></h3><p class="m-0! body-sm text-service-black line-clamp-2">See how to enable team collaboration with Pulumi stacks and Git workflows. Learn best practices for managing feature branches and development environments.</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/christian-nunciato.jpg" alt="Christian Nunciato" title="Christian Nunciato" 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/scott-lowe.jpg" alt="Scott Lowe" title="Scott Lowe" 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="2023-03-10">Mar 10, 2023</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/iac-best-practices-enabling-developer-stacks-git-branches/feature_hu_d27216aef57358bf.webp" srcset="/blog/iac-best-practices-enabling-developer-stacks-git-branches/feature_hu_d27216aef57358bf.webp 1x, /blog/iac-best-practices-enabling-developer-stacks-git-branches/feature_hu_e6a18ed50ede11b3.webp 2x" sizes="288px" width="288" height="192" alt="IaC Best Practices: Enabling Developer Stacks & Git Branches" 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>