Microsoft AZ-204: Azure App Service ve Web Apps — Çalışma kılavuzu
Şunun bir parçası: Microsoft Azure Developer Associate AZ-204 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Microsoft sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Genel Bakış
Azure App Service, Windows ve Linux üzerinde kod ve konteyner iş yüklerini destekleyen, web uygulamaları, REST API’ler ve arka uç servisleri için tam olarak yönetilen HTTP tabanlı bir barındırma platformudur. Ölçeklendirme, dağıtım iş akışları, kimlik doğrulama, ağ yalıtımı, arka plan işlemleri ve güvenli yapılandırma için birinci sınıf özellikler sunar. Bu hizmette uzmanlaşmak; App Service planlarını ve ölçeklendirmeyi, dağıtım yuvalarını ve trafik yönetimini, CI/CD entegrasyon yollarını, Easy Auth’u, özel alan adlarını ve TLS’yi, WebJobs’u, App Service Ortamı’nı (ASE) ve Key Vault ile güvenli yapılandırma desenlerini anlamayı gerektirir.
Planlar, ölçeklendirme ve dağıtım yuvaları
Bir App Service planı, uygulamalarınızı barındıran işlem kaynaklarını tanımlar. Bir plandaki tüm uygulamalar aynı VM havuzunu ve ölçeklendirme yapılandırmasını paylaşır.
Fiyatlandırma katmanları:
- Free (F1)/Shared (D1): Yalnızca geliştirme ve test içindir. SLA yoktur. Özel TLS yoktur. Dağıtım yuvaları yoktur.
- Basic (B1–B3): Adanmış VM’ler, manuel yatay ölçeklendirme. Otomatik ölçeklendirme yoktur. Sınırlı özellikler.
- Standard (S1–S3): Otomatik ölçeklendirme ve dağıtım yuvaları ekler. Üretim ortamı için temel seviyedir.
- Premium v2/v3 (P1v2/P1v3+): Daha yeni işlem gücü, daha hızlı depolama, gelişmiş ağ özellikleri, bölge yedekliliği (desteklenen SKU’larda) ve daha yüksek ölçek. Kurumsal üretim ve yüksek işlem hacmi için en iyisidir.
- Isolated (I1v2+) (ASE içinde): Ağ yalıtımı ve çok büyük ölçek ile bir müşterinin sanal ağına adanmıştır.
Dikey ve yatay ölçeklendirme:
- Dikey ölçeklendirme (Scale up), daha fazla CPU, bellek, daha hızlı diskler veya gelişmiş yetenekler (örneğin, daha iyi performans ve özellikler için Premium v3) için planı daha yüksek bir SKU’ya taşır.
- Yatay ölçeklendirme (Scale out), yükü yatay olarak dağıtmak için örnek (instance) sayısını artırır. Standard ve üzeri katmanlar; CPU, bellek (Linux), HTTP kuyruk uzunluğu, istek sayısı, özel metrikler veya zamanlamalara dayalı kurallarla otomatik ölçeklendirmeyi destekler. Basic yalnızca manuel yatay ölçeklendirmeyi destekler. Ölçeklendirme, bir plan içindeki tüm uygulamalar için geçerlidir.
Dağıtım yuvaları ve yuva takasları:
- Standard ve üzeri katmanlar birden çok yuvayı (örneğin, hazırlık ve üretim) destekler. Yuvalar aynı plan üzerinde çalışır ve her birinin kendi ana bilgisayar adı ve yapılandırması vardır.
- Takas (Swap), trafik geçişinden önce hedefi “ısıtarak” içeriği ve çalışma zamanı durumunu bir kaynak yuvadan hedef yuvaya neredeyse sıfır kesintiyle taşır. Takastan önce hazır olduğundan emin olmak için applicationInitialization (Windows) veya sağlık denetimlerini kullanın. Önizlemeli takas, işlemi sonlandırmadan önce doğrulama yapmanızı sağlar.
- Veritabanı bağlantı dizeleri, gizli anahtarlar ve tanılama uç noktaları gibi yapılandırma girdilerini, takas sırasında yuvada kalmaları (sticky) için yuvaya özgü ayarlar olarak işaretleyin. İşaretlenmemiş ayarlar, takas sırasında kodla birlikte taşınır.
Yuvalarla trafik yönlendirme:
- Kanarya testi (üretimde test etme) için canlı trafiğin bir yüzdesini üretim dışı bir yuvaya yönlendirin. Çerezler, oturum tutarlılığını korumak için atama yapıldıktan sonra kullanıcıları bir yuvaya sabitler.
Dağıtım ve CI/CD: GitHub, Azure DevOps ve konteyner kayıt defterleri
Dağıtım Merkezi (Deployment Center), yaygın CI/CD akışlarını entegre eder:
- GitHub Actions:
- App Service, Oryx derlemesi veya konteyner dağıtımı kullanarak bir iş akışı iskeleti oluşturabilir. Bir dala push yapıldığında, Actions seçilen yuvaya derleme ve dağıtım yapar. Matris derlemeleri, ortamlar ve gizli anahtarlar için destek sunar. Linux konteynerleri için iş akışı, ACR veya Docker Hub’a derleme yapıp gönderebilir ve ardından bir web uygulaması dağıtımını tetikleyebilir.
- Azure DevOps:
- İşlem Hatları (Pipelines) (YAML veya klasik), derleme ve yayın aşamaları, onaylar, ortam denetimleri ve çok aşamalı denetim kapıları sunar. Şu görevleri kullanın: Azure Web App, Azure Web App for Container veya ARM/Bicep özellikli dağıtımlar için AzureCLI. Değişken grupları ve Key Vault destekli gizli anahtarlar, yapılandırmayı merkezileştirir.
- Konteyner kayıt defterleri:
- App Service for Containers, ACR, Docker Hub veya özel kayıt defterlerinden imajları çeker. Uygulamaya yönelik ACR webhook’ları aracılığıyla sürekli dağıtımı yapılandırın; yeni bir imaj gönderimi, bir çekme ve yeniden başlatma işlemini tetikler. Etikete veya özete (digest) göre sabitleyin. Üretim güvenliği için, terfi ettirmeden önce imaj özetlerini ve kanarya yuvalarını kullanın.
- Ek dağıtım mekanikleri:
- Kudu, tekrarlanabilir derlemeler için Git tabanlı gönderme, Zip Deploy ve Run From Package’i destekler. .deployment dosyası ve özel betikler, site trafiğe hizmet vermeden önce derleme adımlarını koordine edebilir. Kurumsal düzeyde sürüm hijyeni için, takastan önce sağlık denetimlerini doğrulamak ve ısınma yapmak amacıyla yuvaları CI/CD ile birleştirin.
Güvenlik, kimlik, alan adları ve TLS
App Service kimlik doğrulama/yetkilendirme (Easy Auth), kodunuzda bir ara katman yazılımı (middleware) gerektirmeden kimlik yönetimini platforma devreder.
- Sağlayıcılar:
- Microsoft Entra ID (Microsoft kimlik platformu), Google, Facebook, GitHub ve Twitter’ın yanı sıra Entra ID B2C dahil olmak üzere OpenID Connect uyumlu herhangi bir sağlayıcı. İstemci kimliklerini/gizli anahtarlarını, yayıncıyı (issuer) ve izin verilen token hedef kitlelerini/kapsamlarını yapılandırın. Oturum açma eylemini seçin (anonim erişime izin ver veya kimlik doğrulaması gerektir).
- Token deposu ve başlıklar:
- Oturum açma akışı sırasında elde edilen erişim/yenileme token’larını önbelleğe almak için token deposunu etkinleştirin; bu token’lara /.auth/me üzerinden erişilebilir ve /.auth/refresh üzerinden yenilenebilir. App Service, uygulamanın SDK bağımlılıkları olmadan kimliği türetebilmesi için kullanıcı taleplerini (claim) istek başlıklarına (örneğin, Base64 formatında X-MS-CLIENT-PRINCIPAL) ekler. Oturumları temizlemek için platformun çıkış uç noktasını kullanın.
- Özel alan adları:
- Uygulamanın varsayılan ana bilgisayar adına CNAME (önerilir) veya A/ALIAS kayıtlarını eşleyin. Gerekirse TXT kayıtlarıyla alan adı sahipliğini doğrulayın. Özel ana bilgisayar adını App Service’te bağlayın.
- SSL/TLS sertifikaları:
- Yalnızca HTTPS’yi zorunlu kılın ve minimum TLS sürümünü ayarlayın. Sertifikaları SNI (IP başına birden çok sertifika) veya IP tabanlı SSL (adanmış IP) aracılığıyla bağlayın. Üretim düzeyinde sertifika kontrolü için özel sertifikaları (PFX) yükleyin. App Service Yönetilen Sertifikası, joker karakter içermeyen (non-wildcard) ana bilgisayar adları için ücretsiz, otomatik yenilenen, alan adı doğrulamalı bir sertifika sağlar; bu sertifika dışa aktarılamaz ve desteklenen bir katman gerektirir. Özel sertifikaları büyük ölçekte yönetmek ve otomatik olarak döndürmek için Key Vault entegrasyonunu kullanın.
- İstemci sertifikaları (mTLS):
- İsteğe bağlı olarak gelen istemci sertifikalarını zorunlu kılın ve doğrulama için uygulamaya iletin. Uçtan uca TLS için Web Application Firewall ve ters proxy’ler (örneğin, Application Gateway) ile birleştirin.
Arka plan işleme ve yalıtılmış ortamlar
WebJobs ve ASE, arka plan işleme ve ağ yalıtımı senaryolarını ele alır.
- WebJobs:
- Sürekli WebJobs (Continuous WebJobs), web uygulamasının her bir örneğinde kesintisiz olarak çalışır ve kuyruk işleme veya olay döngüleri için uygundur. Çalışmaya devam etmeleri için Always On (Standard ve üzeri) özelliğini gerektirir. Ölçeklendirme, uygulama planının örnek sayısını takip eder; yalnızca tek bir aktif çalışan isteniyorsa kodda singleton davranışı uygulayın.
- Tetiklenen WebJobs (Triggered WebJobs), isteğe bağlı olarak veya bir zamanlamaya göre (settings.job aracılığıyla CRON) çalışır. Toplu işler, ETL veya periyodik bakım için idealdir.
- WebJobs SDK, bildirimsel fonksiyon metotları ve otomatik denetim noktası (checkpointing) özellikleriyle Azure Storage Queues, Service Bus kuyrukları/konuları, Blobs ve Timers için tetikleyiciler ve bağlamalar (bindings) sağlar. Kuyrukla tetiklenen bir WebJob, yeni mesajlara anında tepki verir, uygulama örnekleriyle birlikte ölçeklenir ve hata yalıtımı için zehirli kuyruk (poison queue) yönetimini kullanır. Günlükler ve panolar Kudu üzerinden erişilebilirdir.
- App Service Environment (ASE):
- ASEv3, App Service planlarını VNet’inizin içinde Isolated v2 SKU’ları ile barındırarak adanmış işlem gücü, veri düzlemi yalıtımı ve özel IP’ler sağlar. Genel girişe (public ingress) izin vermek için External ASE’yi veya tüm gelen trafiği VNet içinde özel tutmak için Internal Load Balancer (ILB) ASE’yi seçin. Gerektiğinde özel DNS, güvenlik duvarları ve NVA/WAF ile entegre edin.
- ASE, ayrıntılı çıkış (egress) kontrolü, ağ denetimi ve uyumluluk düzenlemelerine olanak tanır. Öngörülebilir ağ sınırları ile büyük ölçekli barındırmayı destekler ve plan örneklerinden ayrı olarak faturalandırılır.
Yapılandırma, bağlantı dizeleri ve Key Vault referansları
Uygulama yapılandırması çalışma zamanında enjekte edilir ve slota özgü olabilir.
- Uygulama ayarları (App settings):
- Uygulamanın ortam değişkenleri olarak kullanabildiği anahtar-değer çiftleri. Her slot için farklı değerler tutmak üzere slot ayarı olarak işaretleyin. Dağıtımlar (rollout) sırasında sağlıksız örnekleri rotasyondan çıkarmak için Sağlık kontrolü yolu (Health check path) özelliğinden yararlanın. Değişiklikler, çatınızda (framework) dinamik yeniden yükleme desenleriyle yapılandırılmadığı sürece uygulamanın yeniden başlatılmasını tetikler.
- Bağlantı dizeleri (Connection strings):
- Ayrı olarak yönetilir ve ortam değişkenleri olarak sunulur; .NET uygulamaları ayrıca sağlayıcıya özgü yapılandırma alır. Türleri arasında SQLAzure, SQLServer, MySQL, PostgreSQL ve Custom bulunur. Gizli anahtarların (secrets) takas edilmesini önlemek için uygun yerlerde slot ayarı olarak işaretleyin.
- Key Vault referansları:
- Özel
@Microsoft.KeyVault(SecretUri=https://.vault.azure.net/secrets//)sözdizimini veya rotasyonları otomatik olarak almak için sürümsüz URI’leri kullanarak App Settings ve Connection Strings içindeki gizli anahtarlara (secrets) doğrudan referans verin. Uygulamaya sistem tarafından veya kullanıcı tarafından atanan bir yönetilen kimlik (managed identity) atayın, ardından bu kimliğe kasa (vault) üzerinde Get secret izinleri (RBAC veya erişim ilkesi aracılığıyla) verin. Platform, App Service yapılandırmasında gizli anahtarları ifşa etmeden değerleri çözer ve yeniler. Key Vault’tan TLS sertifikalarını kullanmak için, bunları sertifika olarak içe aktarın veya platform tarafından desteklenen sertifika referanslarını kullanın.
- Özel
Tüm alanlar · Azure Functions ve Sunucusuz Bilişim →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →