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

Azure İşlevleri, mevcut Azure App Service uygulama platformunu Azure'da, üçüncü taraf hizmette ve şirket içi sistemlerde gerçekleşen olaylar tarafından tetiklenen kodu uygulama özellikleriyle genişleten olay odaklı, isteğe bağlı işlem deneyimidir. İşlevler, veri kaynaklarına veya mesajlaşma çözümlerine bağlanarak çözümler oluşturmanıza olanak tanır ve bu da olayları işlemeyi ve 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 Hizmetleri'ne ve diğer veritabanlarına da bağımlıdır ve bunlar da düzenli olarak sorumluluk kabul edilmemeye eğilimlidir.

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'da bir işlev uygulaması oluşturduğunuzda, uygulamanız için bir barındırma planı seçmeniz gerekir. Seçtiğiniz planın performans, güvenilirlik ve maliyet üzerinde etkisi vardır. İşlevler için üç temel barındırma planı vardır:

Linux veya Windows çalıştırılırken tüm barındırma planları genel olarak kullanılabilir (GA).

App Service platformu bağlamında işlevlerinizi dinamik olarak barındırmak için kullanılan Premium plan Elastik Premium planıdır (EP). Premium adlı başka Ayrılmış (App Service) planları da vardır. Daha fazla bilgi edinmek için Premium plan makalesine bakın.

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

  • İşlev uygulamanızın isteğe bağlı olarak ölçeklendirilmesi ve örnek ayırmanın nasıl yönetildiğini gösterir.
  • 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 hakkında daha fazla bilgi edinmek ve planlar arasında ayrıntılı bir karşılaştırma yapmak için bkz. Azure İşlevleri barındırma seçenekleri.

İşlev uygulamanızı oluştururken doğru planı seçmeniz önemlidir. İşlevler, barındırma planınızı öncelikli olarak Tüketim ve Elastik Premium planları arasında 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. Depolama hesabı bağlantısı, İşlevler ana bilgisayarı tarafından tetikleyicileri yönetme ve işlev yürütmelerini günlüğe kaydetme gibi işlemler için kullanılır. İşlev uygulamalarını dinamik olarak ölçeklendirirken de kullanılır. Daha fazla bilgi edinmek için bkz. Azure İşlevleri için depolama konusunda dikkat edilmesi gerekenler.

İşlev uygulamanızda 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ıyla ilgili sorun 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çeği genişletilmiş örneklerinizle ilişkili dosya sunucularından çalıştırılabilir. Bu davranış aşağıdaki uygulama ayarları tarafından denetlenr:

Bu ayarlar yalnızca Bir Premium planda veya Windows'da Tüketim planında çalıştırdığınızda desteklenir.

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

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

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

Depolama hesabı yapılandırması

Bir işlev uygulaması oluştururken Blob, Kuyruk ve Tablo depolamasını destekleyen genel amaçlı bir Azure Depolama hesabı oluşturmalı veya böyle bir hesaba bağlanmalısınız. İşlevler, tetikleyicileri yönetme ve işlev yürütmelerini günlüğe kaydetme gibi işlemler için Azure Depolama'yı kullanır. İşlev uygulamanızın depolama hesabı bağlantı dizesi ve WEBSITE_CONTENTAZUREFILECONNECTIONSTRING uygulama ayarlarında bulunurAzureWebJobsStorage.

Bu depolama hesabını oluştururken aşağıdaki 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 durum özellikle Dayanıklı İşlevler ve Olay Hub'ı tarafından tetiklenen işlevlerde geçerlidir.

  • Olay Hub'ı tarafından tetiklenen işlevler için Data Lake Storage etkin bir hesap kullanmayın.

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

Linux üzerinde çalışırken, bir 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ı da aynı planda çalıştırarak aynı kaynakları paylaşabilir. İşlevlerinizi ve işlev uygulamalarınızı gruplandırma şekliniz 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 düzenleme en iyi yöntemleri.

Dağıtımları iyileştirme

Bir işlev uygulamasını dağıtırken, Azure'daki işlevler için dağıtım biriminin işlev uygulaması olduğunu unutmayın. Bir işlev uygulamasındaki tüm işlevler, genellikle aynı dağıtım paketinden aynı anda dağıtılır.

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. Paket yaklaşımından yapılan bu çalıştırma aşağıdaki avantajları sağlar:

    • Dosya kopyalama kilitleme sorunlarının riskini azaltır.
    • Yeniden başlatmayı tetikleyen bir üretim uygulamasına doğrudan dağıtılabilir.
    • Paketteki tüm dosyaların uygulamanızda kullanılabildiğini bilin.
    • 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 edinmek için bkz. Azure İşlevleri ısınma tetikleyicisi.

  • Dağıtım kapalı kalma süresini en aza indirmek ve dağıtımları geri almak için dağıtım yuvalarını kullanmayı göz önünde bulundurun. Daha fazla bilgi edinmek için bkz. Azure İşlevleri dağıtım yuvaları.

Sağlam işlevler yazma

İşlev kodunuzu yazarken, işlevlerinizin genel performansına ve kullanılabilirliğine yardımcı olan birkaç tasarım ilkesi vardır. Bu ilkeler şunlardır:

Geçici hatalar bulut bilişimde yaygın olduğundan, bulut tabanlı kaynaklara erişirken yeniden deneme deseni kullanmanız gerekir. Birçok tetikleyici ve bağlama zaten yeniden deneme uygular.

Güvenlik için tasarlama

Güvenlik en iyi planlama aşamasında dikkate alınır ve işlevleriniz kullanıma hazır olduktan sonra dikkate alınmaz. İşlevleri güvenli bir şekilde geliştirmeyi ve dağıtmayı öğrenmek için bkz. Azure İşlevleri güvenliğini sağlama.

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

Gelen olaylar sonucunda işlev uygulamanızda talep arttıkça Tüketim ve Premium planlarında çalışan işlev uygulamalarının ölçeği genişletilir. İşlev uygulamanızın yüke nasıl yanıt verdiğini ve tetikleyicilerin gelen olayları işlemek için nasıl yapılandırıldığını anlamak önemlidir. Genel bir genel bakış için bkz. Azure İşlevleri'da olay temelli ölçeklendirme.

Ayrılmış (App Service) planları, işlev uygulamalarınızın ölçeğini genişletmenizi 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. İzin verilen en fazla dil çalışanı işlemi sayısı , FUNCTIONS_WORKER_PROCESS_COUNT ayarı tarafından denetlenmektedir. 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ının ölçeği yükü işlemek için daha fazla örneğe genişletilir. Bu ayar, konak işleminde çalışan C# sınıf kitaplığı işlevleri için geçerli değildir.

FUNCTIONS_WORKER_PROCESS_COUNT Premium plan veya Ayrılmış (App Service) planı kullanırken, 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ğeriyle 2 başlamalı ve gerektiğinde en yüksek değere kadar iki artırmalısınız.

Tetikleyici yapılandırması

Aktarım hızı ve ölçeklendirme planlaması yaparken, farklı tetikleyici türlerinin olayları nasıl işlediğini anlamak önemlidir. Bazı tetikleyiciler toplu işleme davranışlarını denetlemenize ve eşzamanlılığı yönetmenize olanak sağlar. Bu seçeneklerdeki değerlerin ayarlanması genellikle her örneğin çağrılan işlevlerin talepleri için uygun şekilde ölçeklendirilmesine yardımcı olabilir. Bu yapılandırma seçenekleri bir işlev uygulamasındaki tüm tetikleyicilere uygulanır ve uygulamanın host.json dosyasında tutulur. Ayarlar ayrıntıları için belirli tetikleyici başvurusunun Yapılandırma bölümüne bakın.

İşlevler'in ileti akışlarını nasıl işlediği hakkında daha fazla bilgi edinmek için bkz. güvenilir olay işleme Azure İşlevleri.

Bağlantıları planlama

Tüketim planında çalışan işlev uygulamaları bağlantı sınırlarına tabidir. Bu sınırlar örnek başına uygulanır. Bu sınırlar nedeniyle ve genel bir en iyi uygulama olarak, işlev kodunuzdan giden bağlantılarınızı iyileştirmeniz gerekir. Daha fazla bilgi edinmek için bkz. Azure İşlevleri'de 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şlatma, sunucusuz mimariler için dikkat edilmesi gereken önemli noktalardan biridir. Daha fazla bilgi edinmek için bkz. Soğuk başlatmalar. Soğuk başlangıç senaryonuz için önemliyse Sunucusuz soğuk başlatmayı anlama gönderisinde daha ayrıntılı bir bakış bulabilirsiniz.

Premium plan, dinamik ölçeği korurken soğuk algınlığını azaltmaya yönelik önerilen plandır. Soğuk başlangıçları azaltmak ve üç barındırma planının tamamında kullanılabilirliği geliştirmek için aşağıdaki kılavuzu kullanabilirsiniz.

Planlama Rehber
Premium planı İşlev uygulamanıza bir Isınma tetikleyicisi uygulama
Always-Ready örneklerinin değerlerini ve Maksimum Seri Artış sınırını ayarlayın
Sanal ağda HTTP olmayan tetikleyiciler kullanırken sanal ağ tetikleyicisi desteğini kullanma
Ayrılmış planlar Azure App Service Sistem Durumu Denetimi etkinken en az iki örnek üzerinde çalıştırın
Otomatik ölçeklendirme uygulama
Tüketim planı • İşlev uygulamanızın ölçeklendirilmesine yapay olarak sınırlar koymamak için Tekil desenleri ve bağlamalar ve tetikleyiciler için eşzamanlılık ayarlarını kullanımı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.

Etkili bir şekilde izleme

Azure İşlevleri, işlevinizin yürütülmesini ve kodunuzdan yazılan izlemeleri izlemek için Azure Uygulaması İçgörüler ile yerleşik tümleştirme sunar. Daha fazla bilgi edinmek için bkz. İzleme Azure İşlevleri. Azure İzleyici, işlev uygulamasının durumunu izlemeye yönelik olanaklar da sağlar. Daha fazla bilgi edinmek için bkz. Azure İzleyici ile izleme.

İşlevlerinizi izlemek için Application Insights tümleştirmesini kullanırken aşağıdaki noktaları bilmeniz gerekir:

  • AzureWebJobsDashboard uygulama ayarının kaldırıldığından emin olun. Bu ayar İşlevler'in eski sürümünde destekleniyordu. Varsa, kaldırma AzureWebJobsDashboard işlevinizin 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. veya gibi RequestExceptionbelirli türleri örneklemenin dışında tutmak için ayarını kullanabilirsinizexcludedTypes. Daha fazla bilgi edinmek için bkz. Örneklemeyi yapılandırma.

Azure İşlevleri, sistem tarafından oluşturulan ve kullanıcı tarafından oluşturulan günlükleri Azure İzleyici Günlüklerine göndermenize de olanak tanır. Azure İzleyici Günlükleri ile tümleştirme şu anda önizleme aşamasındadır.

Yedeklilik içinde derleme

İş gereksinimleriniz, veri merkezi kesintisi sırasında bile işlevlerinizin her zaman kullanılabilir olmasını gerektirebilir. Kritik işlevlerinizi her zaman çalışır durumda tutmak için çok bölgeli bir yaklaşım kullanmayı öğrenmek için bkz. Coğrafi olağanüstü durum kurtarma ve yüksek kullanılabilirlik Azure İşlevleri.

Sonraki adımlar

İşlev uygulamanızı yönetme