Güvenilir Azure İşlevleri için en iyi yöntemler

Azure İşlevleri, mevcut Azure App Service uygulama platformunu genişleten olay odaklı, isteğe bağlı işlem hizmetidir. Azure, iş ortağı hizmetinde ve şirket içi sistemlerde gerçekleşen olaylar tarafından tetiklenen kodu uygulamaya yönelik özellikler ekler. İşlevler'i kullanarak, veri kaynaklarına veya mesajlaşma çözümlerine bağlanan çözümler oluşturabilir ve bu da olayları işlemeyi ve bunlara tepki göstermeyi kolaylaştırır. İşlevler, birçok tümleşik bileşenle karmaşık olan Azure veri merkezlerinde çalışır. Barındırılan bir bulut ortamında VM'lerin zaman zaman yeniden başlatılması veya taşınması beklenir ve sistem yükseltmeleri gerçekleşir. İşlev uygulamalarınız büyük olasılıkla dış API'lere, Azure Hizmetlerine ve ayrıca düzenli aralıklarla güvenilmeyen diğer veritabanlarına da bağımlıdır.

Bu makalede, iyi durumda kalan ve bulut tabanlı bir ortamda iyi performans gösteren verimli işlev uygulamaları tasarlamaya ve dağıtmaya yönelik bazı en iyi yöntemler ayrıntılı olarak açıklanır.

Doğru barındırma planını seçin

Azure'de bir işlev uygulaması oluşturduğunuzda, uygulamanız için bir barındırma planı seçmeniz gerekir. Seçtiğiniz plan performansı, güvenilirliği ve maliyeti etkiler. Azure İşlevleri aşağıdaki barındırma planlarını sağlar:

Mümkün olduğunda dinamik ölçek uygulamalarınızı barındırmak için Flex Tüketim planını kullanın.

App Service platformu bağlamında işlevlerinizi dinamik olarak barındıran Premium plan Elastik Premium planıdır (EP). Diğer Ayrılmış (App Service) planları Premium olarak adlandırılır. Daha fazla bilgi için bkz. Azure İşlevleri Premium plan.

Seçtiğiniz barındırma planı aşağıdaki davranışları belirler:

  • İşlev uygulamanızın talebe göre nasıl ölçeklendirildiği ve örnek ayırmanın nasıl yönetildiği.
  • Her işlev uygulaması örneğinde kullanılabilen kaynaklar.
  • Azure Sanal Ağ bağlantısı gibi gelişmiş işlevler için destek.

Doğru barındırma planını seçme ve planlar arasında ayrıntılı bir karşılaştırma hakkında daha fazla bilgi için bkz. Azure İşlevleri barındırma seçenekleri.

İşlev uygulamanızı oluştururken doğru planı seçin. İşlevler, öncelikli olarak Tüketim ve Elastik Premium planları arasında, sınırlı bir ölçüde barındırma planınızı değiştirme olanağı sağlar. Daha fazla bilgi için bkz. Geçişi planlama.

Depolamayı doğru yapılandırma

İşlevler, işlev uygulamanızla ilişkilendirilecek bir depolama hesabı gerektirir. İşlevler ana bilgisayarı, tetikleyicileri yönetme ve işlev yürütmelerini günlüğe kaydetme gibi işlemler için depolama hesabı bağlantısını kullanır. İşlev uygulamalarını dinamik olarak ölçeklendirirken de kullanılır. Daha fazla bilgi için bakınız: Azure İşlevleri için Depolama konuları.

İşlev uygulamanızdaki yanlış yapılandırılmış bir dosya sistemi veya depolama hesabı, işlevlerinizin performansını ve kullanılabilirliğini etkileyebilir. Yanlış yapılandırılmış bir depolama hesabının sorunlarını giderme konusunda yardım için depolama sorun giderme makalesine bakın.

Depolama bağlantısı ayarları

Dinamik olarak ölçeklendirilen işlev uygulamaları, depolama hesabınızdaki bir Azure Dosyalar uç noktasından veya ölçeklendirilen örneklerinizle ilişkili dosya sunucularından çalıştırılabilir. Bu davranış aşağıdaki uygulama ayarları tarafından denetlenilir:

Premium plan ve Windows'de Tüketim planı bu ayarları destekler. Flex Tüketim planı bu ayarları gerektirmez ve Azure Dosyalar paylaşımı yerine dağıtım paketlerini barındırmak için bir Blob depolama kapsayıcısı kullanır.

İşlev uygulamanızı Azure portalında veya Azure CLI veya Azure PowerShell kullanarak oluşturduğunuzda, gerektiğinde işlev uygulamanız için bu ayarları oluşturursunuz. Kaynaklarınızı bir Azure Resource Manager şablonundan (ARM şablonu) oluştururken, şablona WEBSITE_CONTENTAZUREFILECONNECTIONSTRING de eklemeniz gerekir.

ARM şablonu kullanarak ilk dağıtımınızda sizin için oluşturulan WEBSITE_CONTENTSHARE öğesini eklemeyin.

Bu ayarların doğru yapılandırılmasına yardımcı olması için aşağıdaki ARM şablonu örneklerini kullanabilirsiniz:

Önemli

Azure Dosyalar hizmeti şu anda kimlik tabanlı bağlantıları desteklememektedir. Flex Consumption planı yönetilen kimlikleri tam olarak destekler. Daha fazla bilgi için bkz. Azure Dosyalar olmadan uygulama oluşturma.

Depolama hesabı yapılandırması

İşlev uygulaması oluştururken Blob, Kuyruk ve Tablo depolamayı destekleyen genel amaçlı bir Azure Depolama hesabı oluşturmanız veya bu hesaba bağlanmanız gerekir. İşlevler, tetikleyicileri yönetme ve işlev yürütmelerini günlüğe kaydetme gibi işlemler için Azure Depolama dayanır. İşlev uygulamanızın depolama hesabı bağlantı dizesi, AzureWebJobsStorage ve WEBSITE_CONTENTAZUREFILECONNECTIONSTRING uygulama ayarlarında bulunur.

Bu depolama hesabını oluştururken dikkate alınacak noktaları göz önünde bulundurun:

  • Gecikme süresini azaltmak için depolama hesabını işlev uygulamasıyla aynı bölgede oluşturun.

  • Üretim performansını geliştirmek için her işlev uygulaması için ayrı bir depolama hesabı kullanın. Bu özellik özellikle Dayanıklı İşlevler ve Event Hubs ile tetiklenen işlevlerde geçerlidir.

  • Event Hubs ile tetiklenen işlevler için Data Lake Storage etkin olan bir hesap kullanmayın.

Büyük veri kümelerini işleme

Linux üzerinde çalışırken, dosya paylaşımını takarak ek depolama alanı ekleyebilirsiniz. Paylaşımı bağlamak, bir işlevin büyük bir mevcut veri kümesini işlemesi için kullanışlı bir yoldur. Daha fazla bilgi için bkz Dosya paylaşımlarını bağlama.

İşlevlerinizi düzenleme

Çözümünüzün bir parçası olarak, büyük olasılıkla birden çok işlev geliştirip yayımlayabilirsiniz. Bu işlevler genellikle tek bir işlev uygulamasında birleştirilir, ancak ayrı işlev uygulamalarında da çalıştırılabilir. Premium ve Ayrılmış (App Service) barındırma planlarında, birden çok işlev uygulaması aynı planda çalıştırarak aynı kaynakları paylaşabilir. İşlevlerinizi ve işlev uygulamalarınızı nasıl gruplandırdığınız, genel çözümünüzün performansını, ölçeklendirmesini, yapılandırmasını, dağıtımını ve güvenliğini etkileyebilir.

Tüketim ve Premium planı için bir işlev uygulamasındaki tüm işlevler dinamik olarak birlikte ölçeklendirilir.

İşlevlerinizi düzenleme hakkında daha fazla bilgi için bkz . İşlev kuruluşu en iyi yöntemleri.

Dağıtımları iyileştirme

bir işlev uygulaması dağıttığınızda, Azure işlevleri için dağıtım biriminin işlev uygulaması olduğunu unutmayın. İşlev uygulamasındaki tüm işlevleri genellikle aynı dağıtım paketinden aynı anda dağıtırsınız.

Başarılı bir dağıtım için şu seçenekleri göz önünde bulundurun:

  • İşlevlerinizin dağıtım paketinden çalıştırılmasını sağlayın. Bu paketten çalıştırma yaklaşımı aşağıdaki avantajları sağlar:

    • Dosya kopyalama kilitleme sorunlarının riskini azaltır.
    • Doğrudan bir üretim uygulamasına dağıtılabilir ve yeniden başlatma tetiklemez.
    • Paketteki tüm dosyalar uygulamanız tarafından kullanılabilir.
    • ARM şablonu dağıtımlarının performansını artırır.
    • Özellikle büyük npm paket ağaçları olan JavaScript işlevleri için soğuk başlangıç sürelerini azaltabilir.
  • Dağıtımları kaynak denetimi çözümünüzle bağlamak için sürekli dağıtım kullanmayı göz önünde bulundurun. Sürekli dağıtımlar, dağıtım paketinden çalıştırmanıza da olanak sağlar.

  • Premium plan barındırma için, yeni örnekler eklendiğinde gecikme süresini azaltmak için bir ısınma tetikleyicisi eklemeyi göz önünde bulundurun. Daha fazla bilgi için bkz. Azure İşlevleri ısınma tetikleyicisi.

  • Dağıtım kapalı kalma süresini en aza indirmek için Tüketim, Premium ve Ayrılmış planlar için dağıtım yuvalarını kullanın. Veya Esnek Tüketim planında sıfır kapalı kalma süresi dağıtımları için sıralı güncelleştirmeleri yapılandırın. Daha fazla bilgi için bkz. Azure İşlevleri dağıtım yuvaları ve Flex Consumption içinde site güncelleştirme stratejileri.

Sağlam işlevler yazma

İşlevlerinizin genel performansına ve kullanılabilirliğine yardımcı olan tasarım ilkelerini izleyin. Bu ilkeler şunlardır:

Geçici hatalar bulut bilişimde yaygındır, bu nedenle bulut tabanlı kaynaklara erişirken yeniden deneme deseni kullanın. Birçok tetikleyici ve bağlama zaten yeniden deneme uygular.

İşlevlerinizi tam uygulama bağlamında ve derleme otomasyonu işlem hatlarınızda sürekli test ederek tümleştirme testlerine öncelik sağlayın.

Güvenlik için tasarlama

İşlevleriniz hazır olduktan sonra değil planlama aşamasında güvenliği göz önünde bulundurun. Daha fazla bilgi için bkz. Azure İşlevlerini Güvenceye Alma.

Eşzamanlılığı göz önünde bulundurun

Gelen olaylar nedeniyle işlev uygulamanızda talep arttıkça Tüketim ve Premium planları işlev uygulamalarının ölçeğini genişletebilir. İşlev uygulamanızın yüke nasıl yanıt verdiğini ve tetikleyicilerin gelen olayları işleyecek şekilde nasıl yapılandırılabildiğini anlamak önemlidir. Genel bir bakış için bkz: Azure İşlevleri'da olay güdümlü ölçeklendirme.

Ayrılmış (App Service) planları, işlev uygulamalarınız için ölçeklendirme sağlamanızı gerektirir.

Çalışan işlem sayısı

Bazı durumlarda, ölçeği genişletmeden önce örnekte dil çalışanı işlemleri olarak adlandırılan birden çok işlem oluşturarak yükü işlemek daha verimlidir. FUNCTIONS_WORKER_PROCESS_COUNT ayarı, izin verilen en fazla dil çalışanı işlemi sayısını denetler. Bu ayar için varsayılan değer olan 1, birden çok işlemin kullanılmadığı anlamına gelir. İşlem sayısı üst sınırına ulaşıldıktan sonra işlev uygulaması yükü işlemek için ölçeği genişleterek daha fazla örneğe ulaşır. Bu ayar, konak işleminde çalışan C# sınıf kitaplığı işlevleri için geçerli değildir.

FUNCTIONS_WORKER_PROCESS_COUNT kullanırken, Premium plan veya Ayrılmış (App Service) planı kapsamında planınız tarafından sağlanan çekirdek sayısını göz önünde bulundurun. Örneğin, Premium planı EP2 iki çekirdek sağlar, bu nedenle değeri 2 ile ayarlamalı ve gerektiğinde en yüksek değere kadar ikişer artırmalısınız.

Tetikleyici yapılandırması

Aktarım hızı ve ölçeklendirmeyi planlarken, farklı tetikleyici türlerinin olayları nasıl işlediğini anlayın. Bazı tetikleyiciler toplu işleme davranışları ve eşzamanlılık üzerinde denetim sahibi olmanıza izin verir. Bu değerlerin ayarlanması, her örneğin çağrılan işlevlerin talepleri için uygun şekilde ölçeklendirilmesine yardımcı olabilir. Bu yapılandırma seçeneklerini bir işlev uygulamasındaki tüm tetikleyicilere uygular ve bunları uygulamanın host.json dosyasında tutarsınız. Ayarlarla ilgili ayrıntılar için, belirli tetikleyici başvurusunun Yapılandırma bölümüne bakın.

İşlevlerin ileti akışlarını nasıl işlediği hakkında daha fazla bilgi edinmek için bkz. Azure İşlevleri reliable event processing.

Bağlantıları planlama

Bağlantı sınırları , Tüketim planında çalışan işlev uygulamaları için geçerlidir. Bu sınırlar her örnek için geçerlidir. Bu sınırlar nedeniyle ve genel bir en iyi uygulama olarak işlev kodunuzdan giden bağlantılarınızı iyileştirin. Daha fazla bilgi için bkz. Azure İşlevleri'da bağlantıları yönetme.

Dile özgü dikkat edilmesi gerekenler

Tercih edilen diliniz için aşağıdaki noktaları göz önünde bulundurun:

Kullanılabilirliği en üst düzeye çıkarma

Soğuk başlangıç, sunucusuz mimariler için dikkat edilmesi gereken önemli noktalardan biridir. Daha fazla bilgi için bkz. Soğuk Başlangıçlar. Senaryonuz için soğuk başlangıç önemli bir faktörse, Sunucusuz Sistemlerde Soğuk Başlangıcı Anlamak başlıklı makaleye göz atın.

Dinamik ölçeği korurken soğuk başlangıçları azaltmak için hem Esnek Tüketim hem de Premium planları önerilir. Soğuk başlangıçları azaltmak ve tüm barındırma planlarında kullanılabilirliği geliştirmek için aşağıdaki kılavuzu kullanın.

Planlama Rehber
Esnek Tüketim planı Örnekleri çalışır durumda tutmak için her zaman hazır örnekleri kullanın
Her zaman hazır örnek sayılarını ayarlama
Premium plan İşlev uygulamanızda bir Warmup tetikleyicisi uygulama
Her Zaman Hazır örneklerin değerlerini ve Maksimum Seri Artış sınırını ayarlayın
Sanal ağda HTTP olmayan tetikleyicileri kullanırken sanal ağ tetikleyicisi desteğini kullanma
Özel planlar Azure App Service Sistem Durumu Denetimi etkin olan en az iki örnekte çalıştır
Otomatik ölçeklendirmeyi uygulama
Tüketim planı • İşlev uygulamanızın ölçeklendirmesinin yapay sınırlamalardan korunması için Singleton desenlerini ve bağlamalar ve tetikleyiciler için eşzamanlılık ayarlarınızı gözden geçirin.
Ölçeği genişletmeyi functionAppScaleLimit sınırlayan ayarı gözden geçirin
• Geliştirme ve test sırasında ayarlanan Günlük Kullanım Kotası (GB-Sn) sınırını denetleyin. Üretim ortamlarında bu sınırı kaldırmayı göz önünde bulundurun.

Etkin bir şekilde izleme

Azure İşlevleri, işlevinizin yürütülmesini ve kodunuzdan yazılan izlemeleri izlemek için Azure Uygulaması Insights ile yerleşik tümleştirme sunar. Daha fazla bilgi için Azure İşlevleri'da yürütmeleri izleme başlığına bakın. Azure İzleyici ayrıca işlev uygulamasının durumunu izlemeye yönelik olanaklar sağlar. Daha fazla bilgi için bkz. Monitor Azure İşlevleri.

İşlevlerinizi izlemek için Application Insights tümleştirmesini kullanırken dikkat edilmesi gereken noktalara dikkat edin:

  • AzureWebJobsDashboard uygulama ayarını kaldırın. Bu ayar İşlevler'in eski sürümlerinde destekleniyordu. AzureWebJobsDashboard kaldırılması, işlevlerinizin performansını artırır.

  • Application Insights günlüklerini gözden geçirin. Bulmayı beklediğiniz veriler eksikse izleme senaryonuzu daha iyi yakalamak için örnekleme ayarlarını yapmayı göz önünde bulundurun. excludedTypes veya Requestgibi Exception belirli türleri örneklemenin dışında tutmak için ayarını kullanın. Daha fazla bilgi için bkz. Örneklemeyi yapılandırma.

Azure İşlevleri ayrıca sistem tarafından oluşturulan ve kullanıcı tarafından oluşturulan günlükleri Azure İzleyici Günlükler’e göndermenizi sağlar. Azure İzleyici Günlükleri ile tümleştirme şu anda önizleme aşamasındadır.

Yedekliliği dahil et

İş gereksinimleriniz, veri merkezi kesintisi sırasında bile işlevlerinizin her zaman kullanılabilir olmasını gerektirebilir. Kritik işlevlerinizin her zaman çalışır durumda kalmasını sağlamak için çok bölgeli bir yaklaşım kullanmayı öğrenmek için bkz. Azure İşlevleri'da sorumluluk.

Sonraki adımlar

İşlev uygulamanızı yönetme