Temel web uygulaması

Azure App Service
Azure Key Vault
Azure Monitor
Azure SQL Database

Bu mimari, temel bir web uygulamasının temel bileşenlerini gösterir. Mimariyi kullanarak bir web uygulaması oluşturabilir ve ardından uygulamayı gereksinimlerinize göre özelleştirebilirsiniz.

Mimari

Diagram showing the reference architecture for a basic web application in Azure.

Bu mimarinin bir Visio dosyasını indirin.

Bileşenler

  • Azure App Service, bulut uygulamaları oluşturmak ve dağıtmak için tam olarak yönetilen bir platformdur. Bir web uygulamasının çalıştırılacağı, dağıtılacağı ve dağıtım yuvalarının yapılandırılacağı bir dizi işlem kaynağı tanımlamanıza olanak tanır.
  • Dağıtım yuvaları , bir dağıtımı hazırlamanıza ve ardından bunu üretim dağıtımıyla değiştirmenize olanak tanır. Böylece doğrudan üretime dağıtmak gerekmez. Belirli öneriler için aşağıdaki sürüm mühendisliği ve dağıtım bölümüne bakın.
  • IP adresi: App Service uygulamasının genel IP adresi ve etki alanı adı vardır. Etki alanı adı, azurewebsites.net için contoso.azurewebsites.net gibi bir alt etki alanı adıdır.
  • Azure DNS, DNS etki alanları için Microsoft Azure altyapısı kullanılarak ad çözümlemesi olanağı sağlayan bir hizmettir. Etki alanlarınızı Azure'da barındırarak DNS kayıtlarınızı diğer Azure hizmetlerinde kullandığınız kimlik bilgileri, API’ler, araçlar ve faturalarla yönetebilirsiniz. Özel etki alanı adı (gibi) kullanmak için contoso.com, özel etki alanı adını IP adresiyle eşleyen DNS kayıtları oluşturun. Daha fazla bilgi için bkz. Azure App Service’te özel bir etki alanı adı yapılandırma.
  • Azure SQL Veritabanı, bulutta hizmet olarak ilişkisel bir veritabanıdır. SQL Veritabanı, Microsoft SQL Server veritabanı altyapısı ile aynı kod tabanını kullanır. Uygulama gereksinimlerinize bağlı olarak, MySQL için Azure Veritabanı veya PostgreSQL için Azure Veritabanı de kullanabilirsiniz. Bu alternatifler, açık kaynak MySQL Sunucusu ve Postgres veritabanı altyapılarını temel alan tam olarak yönetilen veritabanı hizmetleridir.
  • Microsoft Entra Id , çalışanların kuruluşunuz için geliştirilen bulut uygulamalarına erişmesini sağlayan bulut tabanlı bir kimlik ve erişim yönetimi hizmetidir.
  • Azure İzleyici , ortamlarınızda günlükleri ve ölçümleri toplamak, analiz etmek ve bunlar üzerinde işlem gerçekleştirmek için bir çözümdür.
  • Azure Key Vault gizli dizi yönetimini, anahtar yönetimini ve sertifika yönetimini destekler. Veritabanı bağlantı dizesi gibi uygulama gizli dizilerini depolayabilir.

Öneriler

Gereksinimleriniz kodda açıklanan ve verilen mimariden farklı olabilir. Kod, üretim yapılandırmalarıyla dağıtılır. Dağıtımınızı gereksinimlerinizi karşılayacak şekilde özelleştirmek için önerileri kullanın.

App Service planı

App Service planının farklı fiyatlandırma katmanları vardır. Her fiyatlandırma katmanı, çekirdek ve bellek sayısına göre farklılık gösteren çeşitli örnek boyutlarını destekler. Sol gezinti bölmesindeki "Ölçeği artır (App Service Planı)" seçeneğini belirleyerek dağıtımdan sonra fiyatlandırma katmanını değiştirebilirsiniz. Bazı App Service önerileri şunlardır:

  • Üretim iş yükünüzü Temel, Standart ve Premium fiyatlandırma katmanlarında çalıştırın. Bu üç katmanda uygulama ayrılmış sanal makine örneklerinde çalışır ve ölçeği genişletebilen kaynaklar ayırmıştır.
  • Otomatik ölçeklendirme ve TLS/SSL gerekiyorsa Standart ve Premier katmanlarını kullanın.
  • Test ve geliştirme için farklı bir App Service planı oluşturun. Maliyet verimliliği için test ve geliştirme için Ücretsiz ve Paylaşılan (önizleme) katmanlarını kullanın. Ancak üretim iş yükleri için Ücretsiz ve Paylaşılan katmanlarını kullanmayın. Paylaşılan kaynakların ölçeği genişletemez.
  • Dağıtımları test etme gibi kullanmadığınız planları sildiğinizden emin olun. App Service planları saniye başına faturalandırılır. Uygulama durdurulsa bile App Service planındaki örnekler için ücretlendirilirsiniz. App Service planları ve faturalaması hakkında daha fazla bilgi için bkz:

Aşağıdaki ARM şablonu Standart fiyatlandırma katmanına dağıtılır.

SQL Veritabanı

  • Yönetim ek yükünü azaltmak için Azure SQL Veritabanı kullanın. Azure SQL Veritabanı, bir veritabanı koleksiyonu için merkezi bir yönetim noktası işlevi gören bir mantıksal yapı oluşturur. Bu mantıksal yapı yönetim yükünü azaltır. Gruptaki her veritabanı belirli bir hizmet katmanıyla dağıtılır. Her grup içinde veritabanları kaynakları paylaşamaz. Sunucu için işlem maliyeti yoktur, ancak her veritabanı için katmanı belirtmeniz gerekir. Bu nedenle, ayrılmış kaynaklar nedeniyle performans daha iyi olabilir, ancak maliyet daha yüksek olabilir.
  • Kapasite planlaması gerçekleştirin ve gereksinimlerinize uygun katman ve performans düzeyini seçin. SQL Veritabanı, Temel, Standart ve Premium hizmet katmanlarını, destekler. Veritabanı İşlem Birimlerinde (DTU) her katmanın birden fazla performans düzeyi vardır.

Bölge

  • Ağ gecikme süresini en aza indirmek için App Service planını ve SQL Veritabanı aynı bölgede oluşturun. Genellikle, kullanıcılarınıza en yakın bölgeyi seçin.
  • Kaynak grubunun da bir bölgesi vardır. Dağıtım meta verilerinin nerede depolandığını belirtir. Dağıtım sırasında kullanılabilirliği geliştirmek için kaynak grubunu ve kaynaklarını aynı bölgeye yerleştirin.
  • Maliyetleri tahmin etmek için fiyatlandırma hesaplayıcısını kullanın.
  • Daha fazla bilgi için Microsoft Azure İyi Oluşturulmuş Mimari Çerçevesi makalesindeki maliyet bölümüne bakın.

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Sütunlar, bir iş yükünün kalitesini geliştiren bir dizi yol gösteren ilkedir. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Performans verimliliği

Azure App Service’in önemli bir avantajı uygulamanızı yüküne göre ölçeklendirebilmesidir. Burada, uygulamanızı ölçeklendirmeyi planlarken göz önünde bulundurmanız gereken bazı noktalar verilmiştir.

App Service uygulamasını ölçeklendirme

Bir App Service uygulamasını ölçeklendirmek için iki yol vardır:

  • Ölçeği artırma , örnek boyutunu değiştirme anlamına gelir. Örnek boyutu her VM örneğinde bellek, çekirdek sayısı ve depolama alanını belirler. Örnek boyutunu veya plan katmanını elle değiştirerek ölçeği artırabilirsiniz.
  • Ölçeği genişletme, artan yükü işlemek için örnek ekleme anlamına gelir. Her fiyatlandırma katmanının bir en fazla örnek sayısı vardır. Örnek sayısını el ile değiştirerek veya Azure'ın zamanlamaya ve/veya performans ölçümlerine göre örnekleri otomatik olarak eklemesini veya kaldırmasını sağlamak için otomatik ölçeklendirmeyi yapılandırarak ölçeği genişletebilirsiniz. Her ölçeklendirme işlemi genellikle saniyeler içinde hızlı bir şekilde gerçekleşir.

Otomatik ölçeklendirmeyi etkinleştirmek için en az ve en fazla örnek sayısını tanımlayan bir otomatik ölçeklendirme profili oluşturun. Ölçek olaylarını tetiklemek için zamanlama tabanlı profiller ayarlayabilirsiniz. Örneğin, hafta içi ve hafta sonu için ayrı profiller oluşturabilirsiniz. Profil, örneklerin ne zaman ekleneceği veya kaldırılacağına ilişkin kurallar içerebilir. Örneğin, CPU kullanımı 5 dakika boyunca %70'in üzerindeyse iki örnek ekleyin.

Bir web uygulamasını ölçeklendirmeye yönelik öneriler:

  • Ölçeği artırma ve azaltmayı mümkün olduğunca sınırlayın. Uygulamanın yeniden başlatılmasını tetikleyebilir. Bunun yerine ölçeği genişletin. Tipik yük altında performans gereksinimlerinizi karşılayan bir katman ve boyut seçin ve ardından trafik hacmindeki değişiklikleri işlemek için örneklerin ölçeğini genişletin.
  • Otomatik ölçeklendirmeyi etkinleştirin. Uygulamanızın öngörülebilir, normal bir iş yükü varsa, örnek sayılarını önceden zamanlamak için profiller oluşturun. İş yükü tahmin edilebilir değilse, oluşan yük değişikliklerine tepki vermek için kural tabanlı otomatik ölçeklendirmeyi kullanın. Bu iki yaklaşımı birleştirebilirsiniz.
  • Otomatik ölçeklendirme kuralları için CPU kullanımını kullanın. CPU kullanımı otomatik ölçeklendirme kuralları için genellikle iyi bir ölçümdür. Ancak, uygulamanızda yük testi yapmanız, olası performans sorunlarını belirlemeniz ve otomatik ölçeklendirme kurallarınızı bu verilere göre seçmeniz gerekir.
  • Örnek eklemek için daha kısa bir bekleme süresi ve örnekleri kaldırmak için daha uzun bir bekleme süresi ayarlayın. Otomatik ölçeklendirme kuralları bir bekleme süresi içerir. Bekleme süresi, yeni bir ölçek eylemi başlatmadan önce bir ölçek eylemi tamamlandıktan sonra beklenme aralığıdır. Bekleme süresi yeniden ölçeklendirmeden önce sistemin sabitlenmesini sağlar. Örneğin, örnek eklemek için 5 dakika, ancak örnek kaldırmak için 60 dakika olarak ayarlayın. Ek trafiği işlemek için yoğun yük altına hızla yeni örnekler eklemek ve ardından yavaş yavaş ölçeği geri almak daha iyidir.

SQL veritabanlarını ölçeklendirme

SQL Veritabanı için daha yüksek bir hizmet katmanına veya performans düzeyine ihtiyacınız varsa uygulama kapalı kalma süresi olmadan tek tek veritabanlarının ölçeğini büyütün.

Daha fazla bilgi için bkz. Azure SQL Veritabanında tek veritabanı kaynaklarını ölçeklendirme.

Güvenilirlik

Yazma sırasında App Service için hizmet düzeyi sözleşmesi (SLA) %99,95'tir. App Service SLA’sı hem tek hem de birden çok örnek için geçerlidir. SQL Veritabanı için SLA, Temel, Standart ve Premium katmanlar için %99,99'dur.

Yedekler

SQL Veritabanı, veri kaybını geri yüklemek için belirli bir noktaya geri yükleme ve coğrafi geri yükleme sağlar. Bu özellikler, tüm katmanlarda kullanılabilir ve otomatik olarak etkinleştirilir. Yedeklemeleri zamanlamanız veya yönetmeniz gerekmez.

  • Belirli bir noktaya geri yüklemeyi kullanın. Veritabanını zamanın önceki bir noktasına döndürerek insan hatasından kurtarabilirsiniz.
  • Coğrafi geri yüklemeyi kullanın. Veritabanını coğrafi olarak yedekli bir yedeklemeden geri yükleyerek hizmet kesintisinden kurtarabilirsiniz.
  • App Service yedekleme ve geri yükleme kullanmayı göz önünde bulundurun. Uygulama dosyalarınız için yedekleme ve geri yükleme özelliğidir. Ancak, yedeklenen dosyalar bağlantı dizesi s gibi düz metindeki uygulama ayarlarını içerir.
  • SQL veritabanlarınızı yedeklemek için App Service yedekleme özelliğini kullanmaktan kaçının. Veritabanını bir SQL BACPAC dosyasına aktararak DTU'ları kullanır. Bunun yerine, yukarıda bahsedilen SQL Veritabanı zaman içinde nokta geri yüklemesini kullanın. Daha fazla bilgi için bkz. SQL Veritabanı ile bulut iş sürekliliği ve veritabanı olağanüstü durum kurtarma.

Operasyonel mükemmellik

Üretim, geliştirme ve test ortamları için ayrı kaynak grupları oluşturun. Ortamları ayırmak dağıtımları yönetmeyi, test dağıtımlarını silmeyi ve erişim hakları atamayı kolaylaştırır.

Kaynak gruplarına kaynak atarken aşağıdaki özellikleri göz önünde bulundurun:

  • Yaşam döngüsü. Genel olarak, aynı yaşam döngüsüne sahip kaynakları aynı kaynak grubuna yerleştirin.
  • Erişim. Bir gruptaki kaynaklara erişim ilkeleri uygulamak için Azure rol tabanlı erişim denetimini (RBAC) kullanabilirsiniz.
  • Faturalandırma. Kaynak grubu için aktarılmış maliyetleri görüntüleyebilirsiniz.

Daha fazla bilgi için bkz. Azure Resource Manager’a genel bakış.

Uygulama yapılandırmaları

  • Yapılandırma ayarlarını uygulama ayarları olarak depolayın. Resource Manager şablonlarınızda veya PowerShell kullanarak uygulama ayarlarını tanımlayın. Çalışma zamanında uygulama ayarları uygulamada ortam değişkenleri olarak kullanılabilir.
  • Hiçbir zaman parolaları, erişim anahtarlarını veya bağlantı dizelerini kaynak denetimine dahil etmeyin. Bunun yerine, bu değerleri uygulama ayarları olarak depolayan bir dağıtım betiğine gizli dizileri parametre olarak geçirin.
  • Bir dağıtım yuvasını değiştirdiğinizde, uygulama ayarları varsayılan olarak değiştirilir. Farklı üretim ve hazırlama ayarlarına ihtiyacınız varsa bir yuvaya bağlı olan ve değiştirilmeyen uygulama ayarları oluşturabilirsiniz.

Tanılama ve izleme

DevOps

  • Azure kaynaklarını ve bağımlılıklarını dağıtmak için ARM şablonlarını kullanın. Eşlik eden ARM şablonu tek bir web uygulaması dağıtır. Tüm kaynaklar aynı temel iş yükünde yalıtılır. Bu yalıtım, iş yükünün belirli kaynaklarını bir ekiple ilişkilendirmeyi kolaylaştırır. Ekip daha sonra bu kaynakların tüm yönlerini bağımsız olarak yönetebilir. Bu yalıtım, DevOps ekibinin sürekli tümleştirme ve sürekli teslim (CI/CD) gerçekleştirmesini sağlar.
  • Farklı ARM Şablonları kullanın ve bunları Azure DevOps hizmetleriyle tümleştirin. Bu kurulum, dakikalar içinde farklı ortamlar oluşturmanıza olanak tanır. Örneğin, üretim benzeri senaryoları veya yük testi ortamlarını yalnızca gerektiğinde çoğaltabilir ve maliyetten tasarruf edebilirsiniz.
  • Web uygulamasının birden çok örneğini sağlama. Web uygulamanızın tek bir örneğe bağımlı olmasını ve büyük olasılıkla tek bir hata noktası oluşturmasını istemezsiniz. Birden çok örnek dayanıklılığı ve ölçeklenebilirliği artırır.

Daha fazla bilgi için Azure İyi Tasarlanmış Çerçeve'deki DevOps bölümüne bakın.

Sürüm mühendisliği ve dağıtımı

  • Azure kaynaklarını sağlamak için Azure Resource Manager şablonlarını kullanın. Şablonlar, PowerShell veya Azure CLI aracılığıyla dağıtımları otomatikleştirmeyi kolaylaştırır.
  • Uygulamayı (kod, ikili dosyalar ve içerik dosyaları) dağıtın. Visual Studio kullanarak yerel bir Git deposundan dağıtma veya bulut tabanlı bir kaynak denetiminden sürekli dağıtım dahil olmak üzere birkaç seçeneğiniz vardır. Bkz. Uygulamanızı Azure App Service’e dağıtma.

App Service uygulamasının her zaman adlı productionbir dağıtım yuvası vardır. Üretim yuvası, canlı üretim sitesini temsil eder. Güncelleştirmeleri dağıtmak için bir hazırlama yuvası oluşturmanızı öneririz. Hazırlama yuvası kullanmanın avantajları şunlardır:

  • Dağıtımı üretime değiştirmeden önce başarılı olduğunu doğrulayabilirsiniz.
  • Hazırlama yuvasına dağıtma, tüm örneklerin üretime geçirilmeden önce hazır olmasını sağlar. Birçok uygulamada önemli bir ısınma ve soğuk başlangıç zamanı vardır.
  • Bilinen son iyi dağıtımı tutmak için üçüncü bir yuva oluşturun. Hazırlamayı üretime geçirdikten sonra önceki üretim dağıtımını (şimdi hazırlamada) son bilinen iyi yuvaya taşıyın. Böylece, daha sonra bir sorun bulursanız en son bilinen iyi sürüme hızlı bir şekilde döndürebilirsiniz.

Swapping slots for production and staging deployments

  • Bir önceki sürüme geri dönerseniz, veritabanı şema değişikliklerinin geriye dönük olarak uyumlu olduğundan emin olun.
  • Aynı App Service planındaki tüm uygulamalar aynı VM örneklerini paylaştığından, üretim dağıtımınızı test için kullanmayın. Örneğin, yük testleri canlı üretim sitesini düşürebilir. Bunun yerine, üretim ve test için ayrı App Service planları oluşturun. Test dağıtımlarını ayrı bir plana yerleştirerek bunları üretim sürümünden yalıtabilirsiniz.

Güvenlik

Bu bölümde, bu makalede açıklanan Azure hizmetlerine özel güvenlik konuları listelenmiştir. En iyi güvenlik uygulamalarının tam bir listesi değildir. Diğer bazı güvenlik konuları için bkz. Azure Uygulaması Hizmeti'nde bir uygulamanın güvenliğini sağlama.

SQL Veritabanı denetimi

Denetim, mevzuatla uyumluluğu sürdürmenin yanı sıra işletme sorunlarını veya şüpheli güvenlik ihlallerini işaret edebilecek farklılıklar ve anormal durumlar hakkında öngörülere sahip olmanıza yardımcı olabilir. Bkz. SQL veritabanı denetimini kullanmaya başlama.

Dağıtım yuvaları

Her dağıtım yuvasının bir genel IP adresi vardır. Yalnızca geliştirme ve DevOps ekiplerinizin üyelerinin bu uç noktalara ulaşabilmesi için Microsoft Entra oturum açma bilgilerini kullanarak üretim dışı yuvaların güvenliğini sağlayın.

Günlük Kaydı

Kullanıcıların parolalarını veya kimlik dolandırıcılığı yapmak için kullanılabilecek diğer bilgileri hiçbir zaman günlüğe kaydedilmemelidir. Verileri depolamadan önce bu ayrıntıları silin.

SSL

App Service uygulaması, ek ücret ödemeden bir alt etki azurewebsites.net alanına SSL uç noktası ekler. SSL uç noktası *.azurewebsites.net etki alanı için joker karakter sertifikası içerir. Özel etki alanı adı kullanırsanız, özel etki alanıyla eşleşen bir sertifika sağlamanız gerekir. En kolay yaklaşım, Azure Portalı aracılığıyla doğrudan bir sertifika satın almaktır. Ayrıca, diğer sertifika yetkililerinden sertifikaları içe aktarabilirsiniz. Daha fazla bilgi için bkz. Azure Uygulaması Hizmetiniz için SSL sertifikası satın alma ve yapılandırma.

ARM şablonu dağıtımında HTTPS varsayılan olarak etkinleştirilmez. En iyi güvenlik uygulaması olarak, uygulamanız HTTP isteklerini yönlendirerek HTTPS uygulamalıdır. Uygulamanızın içinde HTTPS uygulayabilir veya Azure Uygulaması Hizmeti'nde bir uygulama için HTTPS'yi etkinleştirme başlığında açıklandığı gibi url yeniden yazma kuralı kullanabilirsiniz.

Kimlik Doğrulaması

Microsoft Entra ID, Facebook, Google veya Twitter gibi bir kimlik sağlayıcısı (IDP) aracılığıyla kimlik doğrulaması yapmanızı öneririz. Kimlik doğrulaması akışı için OAuth 2 veya OpenID Connect (OIDC) kullanın. Microsoft Entra ID, kullanıcıları ve grupları yönetmek, uygulama rolleri oluşturmak, şirket içi kimliklerinizi tümleştirmek ve Microsoft 365 ve Skype Kurumsal gibi arka uç hizmetlerini kullanmak için işlevsellik sağlar.

Uygulamanın kullanıcı oturum açma bilgilerini ve kimlik bilgilerini doğrudan yönetmesini önlemek. Olası bir saldırı yüzeyi oluşturur. En azından bir e-posta onayı, parola kurtarma ve çok faktörlü kimlik doğrulamasına sahip olmanız, parola gücünü doğrulamanız ve parola karmalarını güvenli bir şekilde depolamanız gerekir. Büyük kimlik sağlayıcıları tüm bu işlemleri sizin için gerçekleştirir ve güvenlik uygulamalarını sürekli olarak izler ve geliştirir.

OAuth veya OIDC kimlik doğrulama akışını uygulamak için App Service kimlik doğrulamasını kullanmayı göz önünde bulundurun. App Service kimlik doğrulamasının avantajları şunlardır:

  • Kolayca yapılandırılabilir.
  • Basit kimlik doğrulama senaryoları için kod yazmak gerekli değildir.
  • Kullanıcı adına kaynakları kullanan OAuth erişim belirteçleri kullanarak temsilen yetkilendirmeyi destekler.
  • Yerleşik bir belirteç önbelleği sağlar.

App Service kimlik doğrulamasının bazı sınırlamaları:

  • Özelleştirme seçenekleri sınırlıdır.
  • Temsilen yetkilendirme, oturum açma oturumu başına bir arka uç kaynağıyla sınırlıdır.
  • Birden fazla IDP kullanıyorsanız, ev bölgesi bulma için yerleşik bir mekanizma yoktur.
  • Uygulamanın çok kiracılı senaryolarda belirteç sağlayıcısını doğrulamak için mantığı uygulaması gerekir.

Bu senaryoyu dağıtın

Bu mimari bir Azure Uygulaması Hizmet planı ve boş bir uygulama içerir. Azure SQL Veritabanı, veritabanı bağlantı dizesi depolamak için Azure Key Vault'u ve günlüğe kaydetme, izleme ve uyarı için Azure İzleyici'yi kullanır.

Dağıtım için bir kaynak grubu oluşturmak için aşağıdaki komutu kullanın. Eklenmiş kabuk kullanmak için Deneyin düğmesini seçin.

az group create --name basic-web-app --location eastus

Web uygulamasını ve destekleyici altyapıyı dağıtmak için aşağıdaki komutu çalıştırın. İstendiğinde, bir kullanıcı adı ve parola girin. Bu değerler Azure SQL Veritabanı örneğine erişmek için kullanılır.

az deployment group create --resource-group basic-web-app  \
    --template-uri https://raw.githubusercontent.com/mspnp/samples/master/solutions/basic-web-app/azuredeploy.json

Ayrıntılı bilgi ve daha fazla dağıtım seçeneği için bu çözümü dağıtmak için kullanılan ARM Şablonları'na bakın.

Sonraki adımlar

Uygulamanızın sorunlarını gidermek için ipuçları:

Ürün belgeleri:

Microsoft Learn modülleri: