<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cloud | The .NET Blog</title><link>https://thedotnetblog.com/tags/cloud/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>en</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/tags/cloud/index.xml" rel="self" type="application/rss+xml"/><item><title>Azure Developer CLI (azd) April 2026 Updates</title><link>https://thedotnetblog.com/news/emiliano-montesdeoca/azd-april-2026-developer-cli-updates/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/news/emiliano-montesdeoca/azd-april-2026-developer-cli-updates/</guid><description>azd shipped five releases in April 2026, headlined by multi-language hook support for Python, JavaScript, TypeScript, and .NET — plus azd update public preview, AI quota preflight checks, and more.</description><content:encoded>&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-april-2026/"&gt;Azure Developer CLI (azd) shipped five releases in April 2026&lt;/a&gt; (1.23.14 through 1.24.2), with the big story being hooks that now run in Python, JavaScript, TypeScript, and .NET — not just Bash and PowerShell.&lt;/p&gt;
&lt;h2 id="multi-language-hooks-in-azureyaml"&gt;Multi-language hooks in azure.yaml&lt;/h2&gt;
&lt;p&gt;Hooks can now point to &lt;code&gt;.py&lt;/code&gt;, &lt;code&gt;.js&lt;/code&gt;, &lt;code&gt;.ts&lt;/code&gt;, or &lt;code&gt;.cs&lt;/code&gt; files in addition to shell scripts. Each language gets automatic dependency resolution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt; — detects &lt;code&gt;requirements.txt&lt;/code&gt; or &lt;code&gt;pyproject.toml&lt;/code&gt;, creates a virtualenv, and installs deps before running. Configure the env name with &lt;code&gt;virtualEnvName&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript / TypeScript&lt;/strong&gt; — detects &lt;code&gt;package.json&lt;/code&gt; and runs &lt;code&gt;npm install&lt;/code&gt; automatically. TypeScript executes via &lt;code&gt;npx tsx&lt;/code&gt; with no compile step needed. Choose your package manager with the &lt;code&gt;packageManager&lt;/code&gt; config block.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.NET&lt;/strong&gt; — runs &lt;code&gt;.cs&lt;/code&gt; files with &lt;code&gt;dotnet run&lt;/code&gt;. Single-file scripts are supported on .NET 10+. Configure the target framework via the &lt;code&gt;configuration/framework&lt;/code&gt; block.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This means teams that already live in one of these languages no longer need to maintain a separate Bash or PowerShell hook just to wire up provisioning lifecycle events.&lt;/p&gt;
&lt;h2 id="azd-update-graduates-to-public-preview"&gt;azd update graduates to public preview&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt; is now in public preview across all platforms. A single command handles the update regardless of how azd was originally installed — no more tracking down Homebrew, WinGet, or MSI paths separately.&lt;/p&gt;
&lt;h2 id="non-interactive-mode-via-azd_non_interactive"&gt;Non-interactive mode via AZD_NON_INTERACTIVE&lt;/h2&gt;
&lt;p&gt;Setting &lt;code&gt;AZD_NON_INTERACTIVE=true&lt;/code&gt; (or using &lt;code&gt;--non-interactive&lt;/code&gt; / &lt;code&gt;--no-prompt&lt;/code&gt;) now produces consistent, deterministic failures in CI/CD pipelines when a required input cannot be resolved automatically. Previously the behavior was inconsistent across commands.&lt;/p&gt;
&lt;h2 id="ai-model-quota-preflight-check"&gt;AI model quota preflight check&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd provision&lt;/code&gt; validates Azure Cognitive Services quota before attempting to provision AI model resources. Deployments that would fail due to quota limits now surface the error early in the process rather than partway through provisioning.&lt;/p&gt;
&lt;h2 id="fix-this-error-in-copilot-troubleshooting"&gt;&amp;ldquo;Fix this error&amp;rdquo; in Copilot troubleshooting&lt;/h2&gt;
&lt;p&gt;The azd Copilot troubleshooting integration gains the ability to directly apply a suggested fix — not just describe it. When the agent identifies a fixable issue, it can make the change in-place.&lt;/p&gt;
&lt;h2 id="custom-provisioning-providers-and-key-vault-secret-resolver"&gt;Custom provisioning providers and Key Vault secret resolver&lt;/h2&gt;
&lt;p&gt;Extension authors can now register alternative infrastructure backends with &lt;code&gt;WithProvisioningProvider()&lt;/code&gt;. Separately, azd automatically resolves &lt;code&gt;@Microsoft.KeyVault(...)&lt;/code&gt; references before passing configuration to extensions, removing the need for manual secret resolution in custom providers.&lt;/p&gt;
&lt;h2 id="template-and-watch-mode-exclusions"&gt;Template and watch-mode exclusions&lt;/h2&gt;
&lt;p&gt;Two new ignore files give finer control over file handling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;.azdignore&lt;/code&gt;&lt;/strong&gt; — excludes contributor-only files (docs, CI configs) from template copies so end users get a clean project scaffold.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;.azdxignore&lt;/code&gt;&lt;/strong&gt; — excludes directories from triggering rebuilds during &lt;code&gt;azd x watch&lt;/code&gt;, reducing noise during iterative development.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reserved-name-preflight-and-dockernetwork-option"&gt;Reserved-name preflight and docker.network option&lt;/h2&gt;
&lt;p&gt;azd now warns when predicted resource names would contain Azure reserved words (&lt;code&gt;MICROSOFT&lt;/code&gt;, &lt;code&gt;WINDOWS&lt;/code&gt;, or the &lt;code&gt;LOGIN&lt;/code&gt; prefix) before provisioning begins. A new &lt;code&gt;docker.network&lt;/code&gt; option passes &lt;code&gt;--network&lt;/code&gt; to &lt;code&gt;docker build&lt;/code&gt;, which is useful in corporate proxy environments that require a specific Docker network.&lt;/p&gt;
&lt;h2 id="security-fixes"&gt;Security fixes&lt;/h2&gt;
&lt;p&gt;The Windows MSI package now includes code-signing verification. A separate fix closes an environment variable leak that could expose values across extension command boundaries.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;A packed month — the multi-language hook support in particular removes a real friction point for teams not working primarily in Bash. See the &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-april-2026/"&gt;full release notes&lt;/a&gt; for the complete changelog across all five releases.&lt;/p&gt;</content:encoded></item><item><title>Your AI Experiments on Azure Are Burning Money — Here's How to Fix That</title><link>https://thedotnetblog.com/news/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/news/emiliano-montesdeoca/cloud-cost-optimization-ai-workloads-azure/</guid><description>AI workloads on Azure can get expensive fast. Let's talk about what actually works for keeping costs under control without slowing down your development.</description><content:encoded>&lt;p&gt;If you&amp;rsquo;re building AI-powered apps on Azure right now, you&amp;rsquo;ve probably noticed something: your cloud bill looks different than it used to. Not just higher — weirder. Spiky. Hard to predict.&lt;/p&gt;
&lt;p&gt;Microsoft just published a great piece on &lt;a href="https://azure.microsoft.com/en-us/blog/cloud-cost-optimization-principles-that-still-matter/"&gt;cloud cost optimization principles that still matter&lt;/a&gt;, and honestly, the timing couldn&amp;rsquo;t be better. Because AI workloads have changed the game when it comes to costs.&lt;/p&gt;
&lt;h2 id="why-ai-workloads-hit-different"&gt;Why AI workloads hit different&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s the thing. Traditional .NET workloads are relatively predictable. You know your App Service tier, you know your SQL DTUs, you can estimate monthly spend pretty accurately. AI workloads? Not so much.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re testing multiple models to see which one fits. You&amp;rsquo;re spinning up GPU-backed infrastructure for fine-tuning. You&amp;rsquo;re making API calls to Azure OpenAI where token consumption varies wildly depending on prompt length and user behavior. Every experiment costs real money, and you might run dozens before you land on the right approach.&lt;/p&gt;
&lt;p&gt;That unpredictability is what makes cost optimization critical — not as an afterthought, but from day one.&lt;/p&gt;
&lt;h2 id="management-vs-optimization--know-the-difference"&gt;Management vs. optimization — know the difference&lt;/h2&gt;
&lt;p&gt;One distinction from the article that I think developers overlook: there&amp;rsquo;s a difference between cost &lt;em&gt;management&lt;/em&gt; and cost &lt;em&gt;optimization&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Management is tracking and reporting. You set up budgets in Azure Cost Management, you get alerts, you see dashboards. That&amp;rsquo;s table stakes.&lt;/p&gt;
&lt;p&gt;Optimization is where you actually make decisions. Do you really need that S3 tier, or would S1 handle your load? Is that always-on compute instance sitting idle on weekends? Could you use spot instances for your training jobs?&lt;/p&gt;
&lt;p&gt;As .NET developers, we tend to focus on the code and leave the infrastructure decisions to &amp;ldquo;the ops team.&amp;rdquo; But if you&amp;rsquo;re deploying to Azure, those decisions are your decisions too.&lt;/p&gt;
&lt;h2 id="what-actually-works"&gt;What actually works&lt;/h2&gt;
&lt;p&gt;Based on the article and my own experience, here&amp;rsquo;s what moves the needle:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Know what you&amp;rsquo;re spending and where.&lt;/strong&gt; Tag your resources. Seriously. If you can&amp;rsquo;t tell which project or experiment is eating your budget, you can&amp;rsquo;t optimize anything. Azure Cost Management with proper tagging is your best friend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set guardrails before you experiment.&lt;/strong&gt; Use Azure Policy to restrict expensive SKUs in dev/test environments. Set spending limits on your Azure OpenAI deployments. Don&amp;rsquo;t wait until the bill arrives to realize someone left a GPU cluster running over the weekend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rightsize continuously.&lt;/strong&gt; That VM you picked during prototyping? It&amp;rsquo;s probably wrong for production. Azure Advisor gives you recommendations — actually look at them. Review monthly, not yearly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think about lifecycle.&lt;/strong&gt; Dev resources should spin down. Test environments don&amp;rsquo;t need to run 24/7. Use auto-shutdown policies. For AI workloads specifically, consider serverless options where you pay per execution instead of keeping compute warm.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Measure value, not just cost.&lt;/strong&gt; This one&amp;rsquo;s easy to forget. A model that costs more but delivers significantly better results might be the right call. The goal isn&amp;rsquo;t to spend the least — it&amp;rsquo;s to spend smart.&lt;/p&gt;
&lt;h2 id="the-takeaway"&gt;The takeaway&lt;/h2&gt;
&lt;p&gt;Cloud cost optimization isn&amp;rsquo;t a one-time cleanup. It&amp;rsquo;s a habit. And with AI workloads making spend less predictable than ever, building that habit early saves you from painful surprises later.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a .NET developer building on Azure, start treating your cloud bill like you treat your code — review it regularly, refactor when it gets messy, and never deploy without understanding what it&amp;rsquo;s going to cost you.&lt;/p&gt;</content:encoded></item></channel></rss>