Güvenilir Azure İşlevleri için en iyi yöntemler
Azure İşlevleri, mevcut Azure Uygulaması Hizmeti 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 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şlatabileceği veya taşınabileceği ve sistem yükseltmelerinin gerçekleşeceği beklenir. İşlev uygulamalarınız büyük olasılıkla dış API'lere, Azure Hizmetleri'ne ve diğer veritabanlarına da bağlıdır ve bunlar da düzenli aralıklarla sorumluluk kabul edilmeye açıktı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'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. Azure İşlevleri tarafından sağlanan barındırma planları şunlardır:
Önemli
Flex Consumption planı şu anda önizleme aşamasındadır.
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 talebe ve örnek ayırmanın yönetiliş şekline göre ölçeklendirilmesi.
- 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 ile ilgili dikkat edilmesi gerekenler.
İş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:
Bu ayarlar yalnızca Premium planda veya Windows'ta Tüketim planında çalışırken desteklenir.
İşlev uygulamanızı Azure portalında 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:
- Tüketim planı
- Ayrılmış plan
- Sanal ağ tümleştirmesi ile premium plan
- Dağıtım yuvası olan tüketim planı
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 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 durum özellikle Dayanıklı İşlevler ve Event Hubs tarafından tetiklenen işlevlerde geçerlidir.
Event Hubs ile tetiklenen işlevler için Data Lake Storage'ın etkin olduğu 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ı 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 kuruluşu 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 aklınızda bulundurmanız önemlidir. İş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. Bu çalıştırma paket yaklaşımından aşağıdaki avantajları sağlar:
- Dosya kopyalama kilitleme sorunlarının riskini azaltır.
- Yeniden başlatma tetikleyen bir üretim uygulamasına doğrudan dağıtılabilir.
- Paketteki tüm dosyaların uygulamanız tarafından 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:
- Uzun süre çalışan işlevlerden kaçının.
- İşlevler arası iletişimi planlama.
- Durum bilgisi olmayan işlevler yazın.
- Savunma işlevleri yazma.
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şleyecek şekilde nasıl yapılandırılabildiğini anlamak önemlidir. Genel bir genel bakış için bkz. Azure İşlevleri 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ı aklınızda 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 yöntem 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:
Zaman uyumsuz kod kullanın, ancak çağrıları engellemekten kaçının.
İptal belirteçlerini kullanın (yalnızca işlem içi).
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 edinmek için bkz . Soğuk başlangıçlar. Soğuk başlangıç senaryonuz için önemliyse, Sunucusuz soğuk başlangıcı 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 iyileştirmek için aşağıdaki kılavuzu kullanabilirsiniz.
Planlama | Rehber |
---|---|
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 |
Ayrılmış planlar | • Azure Uygulaması Hizmet Durumu Denetimi etkinken en az iki örnekte çalıştırın • Otomatik ölçeklendirmeyi 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. |
Etkin bir şekilde izleme
Azure İşlevleri, işlevinizin yürütülmesini ve kodunuzdan yazılan izlemeleri izlemek için Azure Uygulaması lication Insights 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 noktalara dikkat etmeniz 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
Request
Exception
belirli 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şlevlerinizin her zaman çalışır durumda kalmasını sağlamak 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.