<?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>Deployment | The .NET Blog</title><link>https://thedotnetblog.com/id/tags/deployment/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>id</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Sat, 30 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/id/tags/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Agen MAF Lokal Anda Baru Saja Mendapatkan Rumah di Produksi</title><link>https://thedotnetblog.com/id/news/emiliano-montesdeoca/maf-agent-local-to-production-foundry-hosted-agents/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/id/news/emiliano-montesdeoca/maf-agent-local-to-production-foundry-hosted-agents/</guid><description>Foundry Hosted Agents memberikan agen Microsoft Agent Framework Anda identitas, penskalaan, persistensi sesi, dan observabilitas tanpa konfigurasi tambahan. Berikut tampilan praktisnya.</description><content:encoded>&lt;p&gt;Membuat agen bekerja secara lokal adalah bagian yang menyenangkan. Bagian yang rumit adalah semua yang datang setelahnya: men-deploy-nya tanpa kehilangan akal, mengelola sesi, menyiapkan identitas, menyambungkan observabilitas. Biasanya itu berarti banyak infrastruktur kustom.&lt;/p&gt;
&lt;p&gt;Foundry Hosted Agents baru saja menghapus sebagian besar infrastruktur tersebut untuk pengguna Microsoft Agent Framework (MAF).&lt;/p&gt;
&lt;h2 id="apa-yang-sebenarnya-dilakukan-foundry-hosted-agents"&gt;Apa yang Sebenarnya Dilakukan Foundry Hosted Agents&lt;/h2&gt;
&lt;p&gt;Saat Anda men-deploy agen MAF ke Foundry Hosted Agents, platform menangani daftar yang mengejutkan panjangnya dari hal-hal yang seharusnya Anda bangun sendiri:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scale to zero&lt;/strong&gt; — agen Anda tidak memerlukan biaya saat idle dan menyala kembali secara otomatis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox terisolasi VM per sesi&lt;/strong&gt; — setiap sesi pengguna mendapat sandbox-nya sendiri dengan persistensi filesystem yang bertahan dari peristiwa scale-down&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entra ID bawaan&lt;/strong&gt; — setiap agen mendapat identitas sendiri untuk memanggil model Foundry, Toolbox, dan layanan Azure tanpa rahasia yang tertanam dalam image&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deployment berversi&lt;/strong&gt; — setiap deployment adalah snapshot yang tidak dapat diubah, dengan dukungan blue/green dan canary rollout&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observabilitas tanpa konfigurasi&lt;/strong&gt; — &lt;code&gt;APPLICATIONINSIGHTS_CONNECTION_STRING&lt;/code&gt; diinjeksi saat runtime sehingga trace OpenTelemetry MAF mengalir otomatis ke App Insights&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yang terakhir ini benar-benar menyenangkan. Tidak ada sambungan tambahan, tidak ada konfigurasi tambahan. Trace langsung muncul.&lt;/p&gt;
&lt;h2 id="perbedaan-kode-sangat-kecil"&gt;Perbedaan Kode Sangat Kecil&lt;/h2&gt;
&lt;p&gt;Inilah yang paling saya hargai dari integrasi ini. Anda tidak perlu menulis ulang agen Anda. Cukup bungkus saja:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dalam .NET:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI.Foundry.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WebApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddFoundryResponses&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MapFoundryResponses&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Dalam Python:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ResponsesHostServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Itu saja. Logika yang sama yang Anda uji secara lokal adalah yang berjalan di produksi. Platform membungkusnya dengan infrastruktur manajemen sesi, identitas, dan penskalaan.&lt;/p&gt;
&lt;h2 id="dua-protokol-satu-agen"&gt;Dua Protokol, Satu Agen&lt;/h2&gt;
&lt;p&gt;Hosted Agents mendukung dua gaya endpoint:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Responses&lt;/strong&gt; (&lt;code&gt;/responses&lt;/code&gt;) — kompatibel OpenAI, mengelola riwayat percakapan dan streaming. Default yang baik untuk agen berbentuk chat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invocations&lt;/strong&gt; (&lt;code&gt;/invocations&lt;/code&gt;) — Anda mendefinisikan skema permintaan/respons. Baik untuk alur kerja non-percakapan.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jika Anda membangun sesuatu yang terlihat seperti percakapan, mulai dengan Responses. Jika Anda membangun agen berbentuk API yang mengambil input terstruktur dan mengembalikan output terstruktur, Invocations memberi Anda fleksibilitas.&lt;/p&gt;
&lt;h2 id="alur-deployment-dengan-azd"&gt;Alur Deployment dengan &lt;code&gt;azd&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Saat Anda menjalankan &lt;code&gt;azd up&lt;/code&gt; dengan agen MAF:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Opsional membuat proyek Foundry dan men-deploy model&lt;/li&gt;
&lt;li&gt;Mengemas kode Anda dan mendorong image ke Azure Container Registry&lt;/li&gt;
&lt;li&gt;Menyediakan komputasi dari image ACR&lt;/li&gt;
&lt;li&gt;Menetapkan Entra ID khusus ke agen&lt;/li&gt;
&lt;li&gt;Mengekspos endpoint stabil (&lt;code&gt;https://{project_endpoint}/agents/{agent_name}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Menangani segalanya dari titik itu&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sesi bertahan hingga 30 hari. Komputasi yang idle di-deprovision setelah 15 menit dan dipulihkan secara transparan pada permintaan berikutnya. Dari perspektif agen, tidak ada yang berubah.&lt;/p&gt;
&lt;h2 id="penutup"&gt;Penutup&lt;/h2&gt;
&lt;p&gt;Jarak antara &amp;ldquo;berjalan secara lokal&amp;rdquo; dan &amp;ldquo;berjalan di produksi&amp;rdquo; secara historis telah lama dan menyakitkan untuk agen AI. Foundry Hosted Agents + MAF menutup celah tersebut secara signifikan. Jika Anda sudah memiliki agen lokal yang dibangun dengan Agent Framework, ini layak dicoba hari ini.&lt;/p&gt;
&lt;p&gt;Tim mengatakan GA akan segera hadir — ini saat ini dalam preview. Periksa &lt;a href="https://learn.microsoft.com/en-us/agent-framework/hosting/foundry-hosted-agent"&gt;dokumen integrasi MAF Hosted Agent&lt;/a&gt; dan &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/04-hosting/FoundryHostedAgents"&gt;contoh .NET&lt;/a&gt; untuk memulai.&lt;/p&gt;
&lt;p&gt;Artikel asli: &lt;a href="https://devblogs.microsoft.com/agent-framework/from-local-to-production-deploy-your-microsoft-agent-framework-agent-with-foundry-hosted-agents/"&gt;From Local to Production: Deploy Your Microsoft Agent Framework Agent with Foundry Hosted Agents&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>