Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Amazon Web Services (AWS) Lambda kullanan sunucusuz bir iş yükünü Azure İşlevleri'ne geçirmek için dikkatli bir planlama ve uygulama gerekir. Bu makalede size yardımcı olacak temel yönergeler sağlanır:
- Mevcut iş yükünüz üzerinde bir bulma işlemi gerçekleştirin.
- Geçiş öncesi planlama ve iş yükü değerlendirmesi gibi önemli geçiş etkinlikleri gerçekleştirmeyi öğrenin.
- Geçirilen iş yükünü değerlendirme ve iyileştirme.
Kapsam
Bu makalede AWS Lambda örneğinin Azure İşlevleri'ne geçişi açıklanmaktadır.
Bu makale şunları ele almaz:
- Azure Container Apps gibi kendi kapsayıcı barındırma çözümünüze geçiş.
- AWS Lambda kapsayıcılarını Azure'da barındırma.
- Azure giriş bölgeleri veya Bulut Benimseme Çerçevesi geçiş metodolojisinde ele alınan diğer konular gibi kuruluşunuz tarafından temel Azure benimseme yaklaşımları.
Geçiş kişiselleştirilmiş sohbet modu
Visual Studio Code kullanarak AWS Lambda uygulamalarınızı Azure'a geçirmeyi kolaylaştırmak için Azure İşlevleri, GitHub Copilot'ta özel bir sohbet modu sağlar. Visual Studio Code'da LambdaToFunctionMigration projenize özel sohbet modunu eklemek için şu adımları kullanın:
Azure Visual Studio Code için GitHub Copilot uzantısına henüz sahip değilseniz şimdi yükleyin.
Lambda projenizi Visual Studio Code'da çalışma alanı olarak açın.
GitHub Copilot'ta aracı modunda bu istemi çalıştırın:
Help me migrate my Lambda app to AzureBildirim alanında sorulduğunda, özel sohbet modunu projenize eklemek için
LambdaToFunctionMigrationseçin.
Artık geçişinizin her aşaması için bu özel sohbette tanımlanan kılavuzlu istemleri kullanabilirsiniz. Kullanılabilir komutların tam listesini görmek için sohbete yazmaya /LambdaMigration başlayın.
İşlevselliği karşılaştırma
Bu makale, uyumluluğu sağlamaya yardımcı olmak için AWS Lambda özelliklerini Azure İşlevleri eşdeğerleriyle eşler.
Önemli
Geçiş planınıza iyileştirme eklemeyi seçebilirsiniz, ancak Microsoft iki aşamalı bir işlem önerir. Önce "like-to-like" işlevlerini geçirin ve ardından Azure'da iyileştirme fırsatlarını değerlendirin.
İyileştirme çalışmaları sürekli olmalı ve iş yükü ekibinizin değişiklik denetimi süreçlerinde çalıştırılmalıdır. Geçiş sırasında daha fazla özellik ekleyen bir geçiş risk oluşturur ve gereksiz yere süreci genişletir.
İş yükü perspektifi
Bu makalede AWS Lambda iş yükünü Azure İşlevleri'ne geçirme ve sunucusuz iş yükleri için ortak bağımlılıklar ele alınabilir. İş yükleri bu kaynakları yönetmek için birçok kaynak ve işlem oluşturduğundan bu işlem birkaç hizmet içerebilir. Kapsamlı bir stratejiye sahip olmak için, bu makalede sunulan önerileri iş yükünüzdeki diğer bileşenleri ve işlemleri içeren daha büyük bir planla birleştirmeniz gerekir.
Mevcut iş yükünüz üzerinde bulma işlemi gerçekleştirme
İlk adım, mevcut AWS Lambda iş yükünüzü değerlendirmek için ayrıntılı bir keşif süreci yürütmektir. Amaç, iş yükünüzün hangi AWS özelliklerine ve hizmetlerine bağlı olduğunu anlamaktır. AWS'de iş yükünü değerlendirmek için hizmete özgü SDK'lar, API'ler, CloudTrail ve AWS CLI gibi AWS araçlarını kullanarak AWS Lambda işlevlerinizin kapsamlı bir envanterini derleyin. AWS Lambda envanterinizin aşağıdaki önemli yönlerini anlamanız gerekir:
- Kullanım örnekleri
- Yapılandırmalar
- Güvenlik ve ağ kurulumları
- Araçlar, izleme, günlüğe kaydetme ve gözlemlenebilirlik mekanizmaları
- Bağımlılıklar
- Güvenilirlik hedefleri ve geçerli güvenilirlik durumu
- Sahip olma maliyeti
- Performans hedefleri ve geçerli performans
Tip
AWS Lambda kurulumunuz için bir değerlendirme raporu oluşturmak için bu özel sohbet modu istemini kullanın:
/LambdaMigration-Phase1-AssessLambdaProject
Geçiş öncesi planlama yapın
İş yükünüzü geçirmeye başlamadan önce uyumluluğu sağlamak ve bir geçiş planı geliştirmek için AWS Lambda özelliklerini Azure İşlevleri ile eşlemeniz gerekir. Ardından kavram kanıtı için önemli iş yüklerini seçebilirsiniz.
Ayrıca Lambda'nın bağımlı olduğu AWS hizmetlerini Azure'daki eşdeğer bağımlılıklarla eşlemeniz gerekir.
AWS Lambda özelliklerini Azure İşlevleri ile eşleme
Aşağıdaki tablolarda AWS Lambda kavramları, kaynakları ve özellikleri, özellikle Flex Consumption barındırma planı olmak üzere Azure İşlevleri'ne karşılık gelen eşdeğerleriyle karşılaştırabilirsiniz.
- Desteklenen diller
- Programlama modeli
- Olay tetikleyicileri ve bağlamaları
- İzinler
- İşlev URL'si
- İletişim Kurma
- Gözlemlenebilirlik ve izleme
- Ölçeklendirme ve eşzamanlılık
- Soğuk başlatma koruması
- Fiyatlandırma
- Kaynak kodu depolama
- Yerel geliştirme
- Dağıtım
- Zaman aşımı ve bellek sınırları
- Gizli dizi yönetimi
- Durum yönetimi
- Durumlu düzenleme
- Diğer farklılıklar ve dikkat edilmesi gerekenler
Desteklenen diller
| Programlama dili | AWS Lambda desteklenen sürümleri | Azure İşlevleri tarafından desteklenen sürümler |
|---|---|---|
| Node.js | 20, 22 | 20, 22 |
| Piton | 3.9, 3.10, 3.11, 3.12, 3.13 | 3.9, 3.10, 3.11, 3.12, 3.13 |
| Java | 8, 11, 17, 21 | 8, 11, 17, 21 |
| PowerShell | Desteklenmiyor | 7.4 |
| .NET | .NET 8 | .NET 8, .NET 9, .NET Framework 4.8.1 |
| Ruby programlama dili | 3.2, 3.3 | Özel işleyiciler |
| Başlayın | Yalnızca İS çalışma zamanı | Özel işleyiciler |
| Pas | Yalnızca İS çalışma zamanı | Özel işleyiciler |
Programlama modeli
| Özellik | AWS Lambda | Azure İşlevleri |
|---|---|---|
| Tetikleyiciler | Diğer AWS hizmetleriyle olay kaynakları aracılığıyla entegre olur. Lambda işlevlerini olay kaynaklarıyla ilişkilendirmek için otomatik ve programlı yollar sağlar. | Veritabanındaki güncelleştirmeler veya kuyruktaki yeni bir ileti gibi belirli olaylara göre bir işlevi tetikler. Örneğin Azure Cosmos DB tetikleyicisi, işlevlerin Azure Cosmos DB kapsayıcısında eklemelere ve güncelleştirmelere otomatik olarak yanıt vermesini sağlar. Bu eylem, veri değişikliklerinin gerçek zamanlı olarak işlenmesini sağlar. İşlevler ayrıca Azure Event Grid ile tümleştirilip Azure Depolama ve Azure Media Services gibi Azure hizmetlerinden gelen olayları ve dış olay kaynaklarını işleyebilir. Event Grid, İşlevler tetikleyicilerini tamamlayan ve yüksek ölçeklenebilirlik ve geniş olay kaynağı kapsamı sağlayan merkezi, genişletilebilir bir olay yönlendirme hizmeti olarak hizmet verir. |
| Bağlamalar | Bağlamaları yoktur. Diğer AWS hizmetleriyle etkileşimleri el ile yönetmek için Lambda işlevlerindeki AWS SDK'larını kullanır. | Giriş veya çıkış olarak yapılandırılan bağlamalar, açık SDK kodu gereksinimini en aza indiren hizmetlere bildirim temelli bağlantıları etkinleştirir. Örneğin, bağlamaları Blob Depolama'dan okuyacak, Azure Cosmos DB'ye yazacak veya tümleştirmeleri el ile yönetmeden SendGrid aracılığıyla e-posta gönderecek şekilde yapılandırabilirsiniz. |
Olay tetikleyicileri ve bağlamaları
| AWS Lambda tetikleyicisi veya hizmeti | Azure İşlevleri tetikleyicisi | Açıklama |
|---|---|---|
| API Gateway: HTTP istekleri | HTTP tetikleyicisi | Bu tetikleyiciler HTTP isteklerini doğrudan işlemenizi sağlar. |
| Basit Kuyruk Hizmeti (SQS) | Azure Kuyruk Depolama tetikleyicisi veya Azure Service Bus tetikleyicisi | Bu tetikleyiciler kuyruklardaki iletileri işleyebilir. |
| Basit Bildirim Hizmeti (SNS) | Event Grid tetikleyicisi veya Service Bus tetikleyicisi | Bu tetikleyiciler bildirim işlemeyi etkinleştirir. |
| Kinesis (veri akışları) | Event Hubs tetikleyicisi | Bu tetikleyiciler veri akışlarını kullanır. |
| DynamoDB (tablo değişiklikleri) | Azure Cosmos DB değişiklik akışı tetikleyicisi | Bu tetikleyiciler tablolardaki değişiklikleri dinler. |
| CloudWatch Events veya EventBridge Scheduler | Zamanlayıcı tetikleyicisi | Bu tetikleyiciler zamanlanmış veya zamana bağlı işlevleri işler. |
| S3 (nesne olayları) | Blob Depolama Tetikleyicisi | Bu tetikleyiciler blob depolamadaki olaylara tepki gösterir. |
| Amazon İlişkisel Veritabanı Hizmeti (RDS) | Azure SQL tetikleyicisi | Bu tetikleyiciler veritabanı değişikliklerine tepki gösterir. |
| Apache Kafka için Yönetilen Akış Servisi (MSK) | Apache Kafka tetikleyicisi | Bu tetikleyiciler Kafka konu iletilerine tepki gösterir. |
| Amazon ElastiCache | Azure Redis tetikleyicisi | Bu tetikleyiciler Redis'teki iletilere tepki gösterir. |
| Amazon MQ | RabbitMQ tetikleyicisi | Bu tetikleyiciler RabbitMQ'daki iletilere tepki gösterir. |
İzinler
| AWS Lambda | Azure İşlevleri |
|---|---|
| Lambda yürütme rolü, Lambda işlevlerine diğer AWS hizmetleriyle etkileşim kurma izinleri verir. Her Lambda işlevi, çalışırken izinlerini belirleyen ilişkili bir kimlik ve erişim yönetimi (IAM) rolüne sahiptir. | Yönetilen kimlikler, işlev uygulamanız için kimlik bilgilerini kodda depolamadan diğer Azure hizmetleriyle kimlik doğrulaması yapmasına olanak tanıyan bir kimlik sağlar. Rol tabanlı erişim denetimi, gerekli kaynaklara erişim vermek için Microsoft Entra Id'de yönetilen kimliğe uygun roller atar. |
| Kaynak tabanlı politika beyanları - AWSLambda_FullAccess işlevleri oluşturma, güncelleştirme ve silme dahil olmak üzere tüm Lambda işlemlerine tam erişim sağlar. - AWSLambda_ReadOnlyAccess, Lambda işlevlerini ve yapılandırmalarını görüntülemek için salt okunur erişim sağlar. - Özel IAM ilkeleri. |
Kaynak tabanlı yerleşik roller: - Sahip rolü, erişim izinleri yönetimi de dahil olmak üzere tam erişim verir. - Katkıda Bulunanlar rolü, işlev uygulamaları oluşturabilir ve silebilir, ayarları yapılandırabilir ve kod dağıtabilir. Erişimi yönetemez. - İzleme Okuyucusu rolü, izleme verilerine ve ayarlarına salt okunur erişim verebilir. Ayrıca özel roller de ayırabilir. |
İşlev URL'si
| AWS Lambda | Azure İşlevleri |
|---|---|
https://<url-id>.lambda-url.<region>.on.aws |
-
<appname>.azurewebsites.net (özgün, genel varsayılan ana bilgisayar adı) - <appname>-<randomhash>.<Region>.azurewebsites.net (yeni, benzersiz varsayılan ana bilgisayar adı) |
Ağ Kurma
| AWS Lambda | Azure İşlevleri |
|---|---|
| Tüm Lambda işlevleri, varsayılan sistem tarafından yönetilen sanal özel bulut (VPC) içinde güvenli bir şekilde çalışır. Lambda işlevinizi özel bir VPC'deki kaynaklara erişecek şekilde de yapılandırabilirsiniz. | İşlev uygulamaları ağ güvenliği sağlanabilir ve ağ içindeki diğer hizmetlere erişebilir. Gelen ağ erişimi yalnızca ip adreslerinin güvenlik duvarı listesiyle ve hizmet uç noktaları veya özel uç noktalar aracılığıyla belirli bir sanal ağ ile sınırlandırılabilir. Sanal ağ tümleştirme özelliği aracılığıyla giden ağ erişimi etkinleştirilir. İşlev uygulaması tüm trafiğini bir sanal ağın alt ağıyla sınırlandırabilir ve bu sanal ağın içindeki diğer hizmetlere de erişebilir. |
Gözlemlenebilirlik ve izleme
| AWS Lambda | Azure İşlevleri |
|---|---|
| Amazon CloudWatch ölçümleri toplayıp izleyerek, günlükleri toplayıp analiz ederek, alarmlar ayarlayarak, özel panolar oluşturarak ve kaynak performansı ve ölçümlerindeki değişikliklere otomatik yanıtlar uygulayarak izleme ve gözlemlenebilirlik konusunda yardımcı olur. | Azure İzleyici, özellikle Application Insights özelliği aracılığıyla Azure İşlevleri için kapsamlı izleme ve gözlemlenebilirlik sağlar. Application Insights istek oranları, yanıt süreleri ve hata oranları gibi telemetri verilerini toplar. Uygulama bileşeni ilişkilerini görselleştirir, gerçek zamanlı performansı izler, ayrıntılı tanılamaları günlüğe kaydeder ve özel ölçüm izlemeye izin verir. Bu özellikler Azure İşlevleri'nin performansını, kullanılabilirliğini ve güvenilirliğini korurken özel panoları, uyarıları ve otomatik yanıtları da etkinleştirir. |
| AWS Lambda, işlev çağrılarınızdan telemetri verileri oluşturur ve OpenTelemetry semantiği kullanarak bu verileri dışarı aktarabilir. Lambda işlevlerinizi, bu telemetri verilerini OpenTelemetry uyumlu herhangi bir uç noktaya gönderecek şekilde yapılandırabilirsiniz. Bu eylem, izlemelerin ve günlüklerin, tutarlı standartlara dayalı telemetri verilerinin ve OpenTelemetry'yi destekleyen diğer gözlemlenebilirlik araçlarıyla tümleştirmenin ilişkilendirilmesine olanak tanır. | İşlev uygulamanızı, günlük ve izleme verilerini OpenTelemetry biçiminde dışa aktaracak şekilde yapılandırın. OpenTelemetry kullanarak telemetri verilerini uyumlu herhangi bir uç noktaya aktarabilirsiniz. OpenTelemetry, izlemelerin ve günlüklerin bağıntısı, tutarlı standartlara dayalı telemetri verileri ve diğer sağlayıcılarla tümleştirme gibi avantajlar sağlar. OpenTelemetry'yi konak yapılandırmasında işlev uygulaması düzeyinde ve işlev kodunuzdan veri dışarı aktarmayı iyileştirmek için kod projenizde etkinleştirebilirsiniz. Daha fazla bilgi için Azure İşlevleri ile OpenTelemetry kullanma bölümüne bakın. |
Ölçeklendirme ve eşzamanlılık
| AWS Lambda | Azure İşlevleri |
|---|---|
| AWS, isteğe bağlı ölçeklendirme modeli kullanır. İsteğe bağlı olarak işlev işleminizi otomatik olarak ölçeklendirin. Eşzamanlılık veya bir örnek tarafından işlenen istek sayısı her zaman 1'dir. | Örnekler, gelen olay sayısına ve her örnek için yapılandırılmış eşzamanlılığa göre dinamik olarak eklenir ve kaldırılır. Eşzamanlılık ayarını istediğiniz değere yapılandırabilirsiniz. |
| Eşzamanlılık her zaman 1'dir. | Eşzamanlılık yapılandırılabilir (>1). |
| 0'a ölçeklendirmeyi destekler. | 0'a ölçeklendirmeyi destekler. |
Soğuk başlatma koruması
| AWS Lambda | Azure İşlevleri |
|---|---|
| Sağlanan eşzamanlılık, istenen sayıda işlev örneğini önceden başlatarak gecikme süresini azaltır ve öngörülebilir işlev performansı sağlar. Sağlanan eşzamanlılık, gecikme süresine duyarlı uygulamalara uygundur ve standart eşzamanlılıktan ayrı olarak fiyatlandırılır. | İşlev uygulamaları, her örnek için eşzamanlılık yapılandırmanıza olanak tanır ve bu da ölçeğini destekler. Uygulamanın aynı örneğinde birden çok iş paralel olarak çalıştırılabilir ve örnekteki daha sonraki işler, ilk başlatma gecikmesiyle karşılaşmaz. İşlev uygulamalarının sürekli hazır örnekleri de vardır. Müşteriler, soğuk başlatma gecikmesini ortadan kaldırmak ve tutarlı performans sağlamak için bir dizi önceden hazır örnek belirtebilir. İşlev uygulamaları, her zaman hazır örnekleri korurken isteğe bağlı olarak daha fazla örnek için ölçeği genişletir. |
| Ayrılmış eşzamanlılık, bir işlevin sahip olabileceği en fazla eşzamanlı örnek sayısını belirtir. Bu sınır, hesabınızın eşzamanlılık kotasının bir kısmının yalnızca bu işlev için ayrılmış olmasını sağlar. AWS Lambda, istekler belirtilen ayrılmış eşzamanlılık sınırını aşmadığında, ayrılmış eşzamanlılık ayarı yapılmış olsa bile gelen istekleri işlemek için dinamik olarak ölçeklenmektedir. AWS Lambda'da ayrılmış eşzamanlılık için alt sınır 1'dir. AWS Lambda'da ayrılmış eşzamanlılık için üst sınır, hesabın bölgesel eşzamanlılık kotası tarafından belirlenir. Varsayılan olarak, bu sınır her bölge için 1.000 eşzamanlı işlemdir. | Azure İşlevleri'nin ayrılmış eşzamanlılık ile eşdeğer bir özelliği yoktur. Benzer işlevler elde etmek için belirli işlevleri ayrı işlev uygulamaları halinde yalıtın ve her uygulama için en yüksek ölçeği genişletme sınırını ayarlayın. Azure İşlevleri, ölçek genişletme sınırı içinde dinamik olarak daha fazla örnek ekleyerek ölçek genişletir ve örnekleri azaltarak ölçek daraltır. Varsayılan olarak, Flex Consumption planında çalışan uygulamalar, genel olarak 100 örneklik yapılandırılabilir bir sınırla başlar. En düşük maksimum örnek sayısı değeri 1,desteklenen en yüksek örnek sayısı değeri ise 1.000'dir. Bölgesel abonelik bellek kotaları , işlev uygulamalarının ölçeğinin ne kadar genişletebileceğini de sınırlayabilir, ancak desteği çağırarak bu kotayı artırabilirsiniz. |
Fiyatlandırma
| AWS Lambda | Azure İşlevleri |
|---|---|
| - Toplam çağrı sayısı ve her örnek için GB/sn için kullanım başına ödeme (sabit eşzamanlılık değeri 1) - 1 ms'lik artışlar - 400.000 Gb/sn ücretsiz katman |
- Toplam çağrı sayısı ve her bir örneğin gigabayt/saniye oranı için kullanım başına ödeme (eşzamanlı çağrılar yapılandırılabilir) - 100 ms'lik aralıklarla artışlar - 100.000 Gb/sn ücretsiz katman - Tüketime dayalı maliyetler |
Kaynak kodu depolama
| AWS Lambda | Azure İşlevleri |
|---|---|
| AWS Lambda, işlev kodunuzun depolamasını kendi yönetilen depolama sisteminde yönetir. Daha fazla depolama alanı sağlamanız gerekmez. | İşlevler, uygulamanızın kodunu içeren dağıtım paketini korumak için müşteri tarafından sağlanan bir Blob Depolama kapsayıcısı gerektirir. Ayarları dağıtımlar için aynı veya farklı bir depolama hesabını kullanacak şekilde yapılandırabilir ve kapsayıcıya erişmek için kimlik doğrulama yöntemlerini yönetebilirsiniz. |
Yerel geliştirme
| AWS Lambda özelliği | Azure İşlevleri özelliği |
|---|---|
| - SAM CLI - LocalStack |
- Azure İşlevleri Temel Araçları - Visual Studio Code - Visual Studio - GitHub Codespaces - VSCode.dev -Maven - Azure İşlevlerini yerel olarak kodlayın ve test edin |
Dağıtım
| Özellik | AWS Lambda | Azure İşlevleri |
|---|---|---|
| Dağıtım paketi | - ZIP dosyası - Kapsayıcı görüntüsü |
ZIP dosyası (Kapsayıcı imajı dağıtımı için özel veya premium SKU kullanın.) |
| ZIP dosya boyutu (konsol) | En fazla 50 MB | ZIP dağıtımı için en fazla 500 MB |
| ZIP dosya boyutu (CLI/SDK) | ZIP dağıtımı için en fazla 250 MB, sıkıştırılmamış halde en fazla 500 MB | ZIP dağıtımı için en fazla 500 MB |
| Kapsayıcı görüntüsü boyutu | En fazla 10 GB | Azure aracılığıyla esnek depolama sağlayan kapsayıcı desteği |
| Büyük eser işleme | Daha büyük dağıtımlar için kapsayıcı görüntülerini kullanın. | Uygulamadan büyük dosyalara erişmek için Blob Depolama veya Azure Dosyalar paylaşımları ekleyin. |
| İşlevlere ortak bağımlılıkları paketleme | Katmanlar | Dağıtım .Zip, isteğe bağlı olarak depolama veya konteynerlerden (sadece ACA, özel, EP SKU'ları için) |
| Mavi-yeşil dağıtım veya işlev sürümlendirme | Function niteleyicilerini kullanarak bir sürüm numarası veya diğer ad ile işlevinizin belirli bir durumunu referans alın. Niteleyiciler, sürüm yönetimini ve aşamalı dağıtım stratejilerini etkinleştirir. | Mavi-yeşil dağıtımlar için sürekli tümleştirme ve sürekli teslim sistemlerini kullanın. |
Zaman aşımı ve bellek sınırları
| Özellik | AWS Lambda sınırları | Azure İşlevleri sınırları |
|---|---|---|
| Çalıştırma süre aşımı | 900 saniye (15 dakika) | Varsayılan zaman aşımı 30 dakikadır. Maksimum zaman aşımı sınırsızdır. Ancak, bir işlevin yürütülmesi için tanınan süre, ölçek küçültme sırasında 60 dakika ve platform güncellemeleri sırasında 10 dakikadır. Daha fazla bilgi için İşlev uygulaması zaman aşımı süresi'ne bakın. |
| Yapılandırılabilir bellek | 64 MB'lık artışlarla 128 MB ile 10.240 MB arası | İşlevler 2 GB ve 4 GB örnek boyutlarını destekler. Belirli bir abonelikteki her bölgenin tüm uygulama örnekleri için bellek sınırı 512.000 MB'tır ve bu sınır desteği arayarak artırabilirsiniz. Bir bölgedeki tüm işlev uygulamalarındaki tüm örneklerin toplam bellek kullanımı bu kotanın içinde kalmalıdır. Örnek boyutu seçenekleri 2 GB ve 4 GB olsa da, her örnek için eşzamanlılık 1'den yüksek olabilir. Bu nedenle, yapılandırmaya bağlı olarak tek bir örnek birden çok eşzamanlı yürütmeyi işleyebilir. Eşzamanlılığı uygun şekilde yapılandırmak, kaynak kullanımını iyileştirmeye ve performansı yönetmeye yardımcı olabilir. Bellek ayırma ve eşzamanlılık ayarlarını dengeleyerek, işlev uygulamalarınıza ayrılan kaynakları etkili bir şekilde yönetebilir, verimli performans ve maliyet denetimi sağlayabilirsiniz. Daha fazla bilgi için bkz . Bölgesel abonelik bellek kotaları. |
Gizli yönetim
| AWS Lambda | Azure İşlevleri |
|---|---|
| AWS Secrets Manager, veritabanı kimlik bilgileri, API anahtarları ve diğer hassas bilgiler gibi gizli dizileri depolamanıza, yönetmenize ve almanıza olanak tanır. Lambda işlevleri, AWS SDK'sını kullanarak gizli bilgileri alabilir. | Kimlik bilgilerini sabit kodlamadan Azure kaynaklarına güvenli erişim sağlamak için yönetilen kimlikler gibi gizli olmayan yaklaşımlar kullanmanızı öneririz. İş ortağı veya eski sistemler gibi gizli diziler gerektiğinde Azure Key Vault gizli dizileri, anahtarları ve sertifikaları depolamak ve yönetmek için güvenli bir çözüm sağlar. |
| AWS Systems Manager Parametre Deposu, yapılandırma verilerini ve gizli dizilerini depolayan bir hizmettir. Parametreler AWS KMS kullanılarak şifrelenebilir ve AWS SDK kullanılarak Lambda işlevleri tarafından alınabilir. Lambda işlevleri, yapılandırma ayarlarını ortam değişkenlerinde depolayabilir. Hassas veriler, güvenli erişim için bir KMS anahtarıyla şifrelenebilir. |
Azure İşlevleri, yapılandırma verilerini depolamak için uygulama ayarlarını kullanır. Bu ayarlar, işlev içinde kullanım kolaylığı için doğrudan ortam değişkenleriyle eşler. Bu ayarlar şifrelenebilir ve Azure App Service yapılandırmasında güvenli bir şekilde depolanabilir. Daha gelişmiş senaryolar için Azure Uygulama Yapılandırması, birden çok yapılandırmayı yönetmeye yönelik sağlam özellikler sağlar. Özellik işaretlemeyi etkinleştirir ve hizmetler arasında dinamik güncelleştirmeleri destekler. |
Durum yönetimi
| AWS Lambda | Azure İşlevleri |
|---|---|
| AWS Lambda, nesne depolama için Amazon S3, hızlı ve ölçeklenebilir NoSQL durum depolaması için DynamoDB ve ileti kuyruğu işleme için SQS gibi hizmetleri kullanarak basit durum yönetimini işler. Bu hizmetler, Lambda işlevi yürütmeleri genelinde veri kalıcılığı ve tutarlılığı sağlar. | Azure İşlevleri Blob Depolama, Kuyruk Depolama ve Tablo Depolama gibi Azure Depolama hizmetleriyle bağlamaları ve tetikleyicileri etkinleştirerek durumu yönetmek için kullanır AzureWebJobsStorage . İşlevlerin durumu kolayca okumasına ve yazmasına olanak tanır. Daha karmaşık durum yönetimi için Dayanıklı İşlevler, Azure Depolama'yı kullanarak gelişmiş iş akışı düzenleme ve durum kalıcılığı özellikleri sağlar. |
Durumlu orkestrasyon
| AWS Lambda | Azure İşlevleri |
|---|---|
| Yerel durum düzenlemesi yok. İş akışları için AWS Adım İşlevleri'ni kullanın. | Kalıcı İşlevler, kalıcı iş akışı düzenleme ve durum bilgisine sahip varlıklar sağlayarak karmaşık durum yönetimine yardımcı olur. Uzun süre çalışan işlemler, otomatik denetim noktası oluşturma ve güvenilir durum kalıcılığı sağlar. Bu özellikler, durum bilgisi olan uygulamalar için hataya dayanıklılık ve ölçeklenebilirlik sağlamak için karmaşık iş akışları oluşturulmasını sağlar. |
Diğer farklılıklar ve dikkat edilmesi gerekenler
| Özellik | AWS Lambda | Azure İşlevleri |
|---|---|---|
| Gruplandırma işlevleri | Her AWS Lambda işlevi bağımsız bir varlıktır. | İşlev uygulaması, birden çok işlev için kapsayıcı görevi görür. İçeren işlevler için paylaşılan bir yürütme bağlamı ve yapılandırması sağlar. Birden çok işlevi tek bir varlık olarak ele alma, dağıtımı ve yönetimi basitleştirir. İşlevler ayrıca HTTP, Blob Depolama ve Dayanıklı İşlevler tetikleyicileri dışında her işlevin bağımsız olarak ölçeklendirildiği işlev başına ölçeklendirme stratejisini kullanır. Bu tetikleyici işlevler kendi gruplarında ölçeklendirilir. |
| Özel alan adları | API Gateway aracılığıyla etkinleştirildi | Özel etki alanlarını doğrudan bir işlev uygulamasında veya Azure API Management'ta yapılandırabilirsiniz. |
| Özel kapsayıcı desteği | Lambda Container Image aracılığıyla özel kapsayıcıları destekler | Azure İşlevleri , bir Container Apps ortamında çalışan özel kapsayıcıları destekler. |
Geçiş planı oluşturma
Kavram kanıtı için önemli iş yüklerini seçin.
Toplam envanterinizde bir ila iki orta ölçekli, kritik olmayan iş yükü seçerek başlayın. Bu iş yükleri, kanıt geliştirme geçişinizin temelini oluşturur. İşlemi test edebilir ve işlemlerinizde büyük bir kesinti riski olmadan olası zorlukları belirleyebilirsiniz.
Yinelemeli olarak test edin ve geri bildirim toplayın.
Tip
Geçiş işleminin geçerli durumunu istediğiniz zaman denetlemek için bu özel sohbet modu istemini kullanın:
/LambdaMigration-GetStatusDaha büyük iş yüklerine ölçeklendirmeden önce geri bildirim toplamak, boşlukları belirlemek ve işlemde ince ayar yapmak için kavram kanıtını kullanın. Bu yinelemeli yaklaşım, tam ölçekli geçişe geçdiğinizde olası zorlukları gidermenizi ve süreci geliştirmenizi sağlar.
Geçiş varlıklarını inşa et
Bu adım geçişli bir geliştirme aşamasıdır. Bu aşamada, Azure'daki iş yükünü temsil etmek için kaynak kodu, kod olarak altyapı (IaC) şablonları ve dağıtım işlem hatları oluşturursunuz. Geçişi gerçekleştirebilmeniz için önce uyumluluk ve en iyi yöntemler için işlev kodunu uyarlamanız gerekir.
-
İşlev kodunu, yapılandırma dosyalarını ve altyapıyı kod dosyaları olarak uyarlama
Tip
Kod geçişi işlemini başlatmak için bu özel sohbet modu istemini kullanın:
/LambdaMigration-Phase2-MigrateLambdaCode - Yapılandırma ayarlarını ayarlama
- IaC dosyaları oluşturma
- Yeniden düzenleme için araçları kullanma
İşlev kodunu, yapılandırma dosyalarını ve altyapıyı kod dosyaları olarak uyarlama
Azure İşlevleri çalışma zamanı gereksinimlerini güncelleştirmek için:
Kodunuzu Azure İşlevleri programlama modeline uygun olarak değiştirin. Örneğin, işlev imzalarınızı Azure İşlevleri'nin gerektirdiği biçimle eşleşecek şekilde uyarlayın. İşlev tanımı ve yürütme bağlamı hakkında daha fazla bilgi için bkz. Azure İşlevleri geliştirici kılavuzları.
AWS hizmetlerine benzer çeşitli bağlamaları ve tetikleyicileri işlemek için Azure İşlevleri uzantı paketini kullanın. .NET uygulamaları için uzantı paketi yerine uygun NuGet paketlerini kullanmanız gerekir.
Sdk'lar aracılığıyla her bağlamayı el ile yapılandırmaya gerek kalmadan Azure Depolama, Azure Service Bus ve Azure Cosmos DB gibi diğer Azure hizmetleriyle tümleştirmek için uzantı paketini kullanın. Daha fazla bilgi için bkz. Bağlamaları ve Azure İşlevleri bağlama ifadesi desenlerinikullanarak işlevleri Azure hizmetlerine bağlama.
Bu kod parçacıkları yaygın SDK kodu örnekleridir. AWS Lambda kodu, Azure İşlevleri'ndeki ilgili tetikleyiciler, bağlamalar veya SDK kod parçacıklarıyla eşler.
Amazon S3 ve Azure Blob Depolama Okuma Karşılaştırması
AWS Lambda kodu (SDK)
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
const params = {
Bucket: 'my-bucket',
Key: 'my-object.txt',
};
const data = await
s3.getObject(params).promise();
console.log('File content:',
data.Body.toString());
};
Azure İşlevleri kodu (tetikleyici)
import { app } from '@azure/functions';
app.storageblob('blobTrigger', {
path: 'my-container/{blobName}',
connection: 'AzureWebJobsStorage',
}, async (context, myBlob) => {
context.log(`Blob content:
${myBlob.toString()}`);
});
Amazon Simple Queue Service (SQS) ile Azure Kuyruk Depolama'ya yazma karşılaştırması
AWS Lambda kodu (SDK)
const AWS = require('aws-sdk');
const sqs = new AWS.SQS();
exports.handler = async (event) => {
const params = {
QueueUrl:
'https://sqs.amazonaws.com/123456789012/MyQueue',
MessageBody: 'Hello, world!',
};
await
sqs.sendMessage(params).promise();
};
Azure İşlevleri kodu (tetikleyici)
import { app } from '@azure/functions';
app.queue('queueTrigger', {
queueName: 'myqueue-items',
connection: 'AzureWebJobsStorage',
}, async (context, queueMessage) => {
context.log(`Queue message:
${queueMessage}`);
});
DynamoDB'ye ve Azure Cosmos DB'ye yazma
AWS Lambda kodu (SDK)
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
const params = {
TableName: 'my-table',
Key: { id: '123' },
};
const data = await dynamoDb.get(params).promise();
console.log('DynamoDB record:', data.Item);
};
Azure İşlevleri kodu (tetikleyici)
import { app } from '@azure/functions';
app.cosmosDB('cosmosTrigger', {
connectionStringSetting: 'CosmosDBConnection',
databaseName: 'my-database',
containerName: 'my-container',
leaseContainerName: 'leases',
}, async (context, documents) => {
documents.forEach(doc => {
context.log(`Cosmos DB document: ${JSON.stringify(doc)}`);
});
});
Amazon CloudWatch Events ile Azure zamanlayıcı tetikleyicisi karşılaştırması
AWS Lambda kodu (SDK)
exports.handler = async (event) => {
console.log('Scheduled event:', event);
};
Azure İşlevleri kodu (tetikleyici)
import { app } from '@azure/functions';
app.timer('timerTrigger', { schedule: '0 */5 * * * *', // Runs every 5 minutes }, async (context, myTimer) => { if (myTimer.isPastDue) { context.log('Timer is running late!'); } context.log(Timer function executed at: ${new Date().toISOString()}); });
Amazon Simple Notification Service (SNS) ile Azure Event Grid tetikleyicisi karşılaştırması
AWS Lambda kodu (SDK)
const AWS = require('aws-sdk');
const sns = new AWS.SNS();
exports.handler = async (event) => {
const params = {
Message: 'Hello, Event Grid!',
TopicArn: 'arn:aws:sns:us-east-1:123456789012:MyTopic',
};
await sns.publish(params).promise();
};
Azure İşlevleri kodu (tetikleyici)
import { app } from '@azure/functions';
app.eventGrid('eventGridTrigger', {},
async (context, eventGridEvent) => {
context.log(`Event Grid event:
${JSON.stringify(eventGridEvent)}`);
});
Amazon Kinesis ile Azure Event Hubs tetikleyicisi karşılaştırması
AWS Lambda kodu (SDK)
const AWS = require('aws-sdk');
const kinesis = new AWS.Kinesis();
exports.handler = async (event) => {
const records =
event.Records.map(record =>
Buffer.from(record.kinesis.data,
'base64').toString());
console.log('Kinesis records:', records);
};
Azure İşlevleri kodu (tetikleyici)
import { app } from '@azure/functions';
app.eventHub('eventHubTrigger', {
connection: 'EventHubConnection',
eventHubName: 'my-event-hub',
}, async (context, eventHubMessages) =>
{
eventHubMessages.forEach(message =>
{
context.log(`Event Hub message:
${message}`);
});
});
AWS Lambda kodunu ve Azure İşlevleri kodunu karşılaştırmak için aşağıdaki GitHub depolarına bakın:
- AWS Lambda kodu
- Azure İşlevleri kodu
- Azure İşlevleri için starter, IaC ve uçtan uca örnekleri içeren Azure örnekleri deposu
Yapılandırma ayarlarını ayarlama
İşlevinizin zaman aşımı ve bellek ayarlarının Azure İşlevleri ile uyumlu olduğundan emin olun. Daha fazla bilgi için yapılandırılabilir ayarlar hakkında bkz. Azure İşlevleri içinhost.json referans.
İzinler, erişim, ağ ve dağıtım yapılandırmaları için önerilen en iyi yöntemleri izleyin.
İzinleri yapılandır
İşlev uygulamalarınızda izinleri ayarlarken en iyi yöntemleri izleyin. Daha fazla bilgi için bkz . İşlev uygulamanızı ve depolama hesabınızı yönetilen kimlikle yapılandırma.
main.bicep
// User-assigned managed identity that the function app uses to reach Storage and Service Bus
module processorUserAssignedIdentity './core/identity/userAssignedIdentity.bicep' = {
name: 'processorUserAssignedIdentity'
scope: rg
params: {
location: location
tags: tags
identityName: !empty(processorUserAssignedIdentityName) ? processorUserAssignedIdentityName : '${abbrs.managedIdentityUserAssignedIdentities}processor-${resourceToken}'
}
}
Daha fazla bilgi için bkz. rbac.bicep.
Ağ erişimini yapılandırın
Azure İşlevleri, işlev uygulamanızın sanal ağınızdaki kaynaklara erişmesini sağlayan sanal ağ tümleştirmesini destekler. Tümleştirmeden sonra uygulamanız giden trafiği sanal ağ üzerinden yönlendirir. Ardından uygulamanız yalnızca belirli alt ağlardan gelen trafiğe izin veren kuralları kullanarak özel uç noktalara veya kaynaklara erişebilir. Hedef sanal ağın dışındaki bir IP adresiyse, nat ağ geçidi yapılandırmadığınız sürece kaynak IP adresi uygulamanızın özelliklerinde listelenen adreslerden biridir.
İşlev uygulamalarınız için sanal ağ tümleştirmesini etkinleştirdiğinizde, web uygulamaları ve işlev uygulamaları için sanal ağ tümleştirmesi için TSG'deki en iyi yöntemleri izleyin.
main.bicep
// Virtual network and private endpoint
module serviceVirtualNetwork 'app/vnet.bicep' = {
name: 'serviceVirtualNetwork'
scope: rg
params: {
location: location
tags: tags
vNetName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}'
}
}
module servicePrivateEndpoint 'app/storage-PrivateEndpoint.bicep' = {
name: 'servicePrivateEndpoint'
scope: rg
params: {
location: location
tags: tags
virtualNetworkName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}'
subnetName: serviceVirtualNetwork.outputs.peSubnetName
resourceName: storage.outputs.name
}
}
Daha fazla bilgi için bkz . VNet.bicep ve storage-PrivateEndpoint.bicep.
Dağıtım ayarlarını yapılandırma
Dağıtımlar tek bir yolu izler. Proje kodunuzu derleyip bir uygulama paketine sıkıştırdıktan sonra bir Blob Depolama kapsayıcısına dağıtın. Uygulama başlatıldığında paketi alır ve işlev kodunuzu bu paketten çalıştırır. Varsayılan olarak, gibi AzureWebJobsStorageiç konak meta verilerini depolayan aynı depolama hesabı, dağıtım kapsayıcısı olarak da görev alır. Ancak, uygulamanızın dağıtım ayarlarını yapılandırarak alternatif bir depolama hesabı kullanabilir veya tercih ettiğiniz kimlik doğrulama yöntemini seçebilirsiniz. Daha fazla bilgi için bkz . Dağıtım teknolojisi ayrıntıları ve Dağıtım ayarlarını yapılandırma.
IaC dosyaları oluşturma
Azure kaynaklarını dağıtmak üzere IaC dosyaları oluşturmak için Bicep, Azure Resource Manager şablonları veya Terraform gibi araçları kullanın.
Tip
Azure İşlevleri için kod olarak altyapı (IaC) dosyaları oluşturmak için bu özel sohbet modu istemini kullanın:
/LambdaMigration-Phase3-GenerateFunctionsInfraIaC dosyalarınızda Azure İşlevleri, depolama hesapları ve ağ bileşenleri gibi kaynakları tanımlayın.
Azure İşlevleri önerilerini ve en iyi yöntemleri kullanan örnekler için bu IaC örnekleri deposunu kullanın.
Yeniden düzenleme için araçları kullanma
Kod yeniden düzenleme, belirli değişiklikler için el ile yeniden düzenleme veya diğer geçiş yardımcılarıyla ilgili yardım için VS Code'da GitHub Copilot gibi araçları kullanın.
Uyarı
VS Code'da GitHub Copilot'ta Aracı modunu kullanın.
Aşağıdaki makaleler, geçiş işlemini kolaylaştırmak için belirli örnekler ve ayrıntılı adımlar sağlar:
Sıfırıncı Gün geçişi için adım adım bir süreç geliştirin
Geçişiniz için yük devretme ve yeniden çalışma stratejileri geliştirin ve bunları üretim öncesi ortamda kapsamlı bir şekilde test edin. AWS Lambda'dan Azure İşlevleri'ne geçmeden önce uçtan uca test gerçekleştirmenizi öneririz.
İşlevselliği doğrulama
Beklendiği gibi çalıştığından emin olmak için her işlevi kapsamlı bir şekilde test edin. Bu testler giriş/çıkış, olay tetikleyicileri ve bağlama doğrulamayı içermelidir.
Tip
Geçirilen Azure İşlevleri kodunu doğrulamak için bu özel sohbet modu istemini kullanın:
/LambdaMigration-Phase4-ValidateCodeHTTP ile tetiklenen işlevler için HTTP istekleri göndermek için VS Code'da curl veya REST İstemcisi uzantıları gibi araçları kullanın.
Zamanlayıcılar veya kuyruklar gibi diğer tetikleyiciler için tetikleyicilerin doğru şekilde çalıştığından ve işlevlerin beklendiği gibi çalıştığından emin olun.
Performansı doğrulama
Yeni Azure İşlevleri dağıtımını önceki AWS Lambda dağıtımıyla karşılaştırmak için performans testi gerçekleştirin.
Yanıt süresi, çalışma süresi ve kaynak tüketimi gibi ölçümleri izleyin.
Tip
Altyapı yapılandırmasını doğrulamak için bu özel sohbet modu istemini kullanın:
/LambdaMigration-Phase5-ValidateInfraTest aşamasında izleme, günlük analizi ve sorun giderme için Application Insights'ı kullanın.
Sorunları tanılama ve çözme özelliğini kullanarak sorun giderme
İşlev uygulamanızın sorunlarını gidermek için Azure portalındaki sorunları tanılama ve çözme özelliğini kullanın. Bu araç, uygulama kilitlenmeleri, performans düşüşü ve yapılandırma sorunları gibi yaygın sorunları hızla tanımlamanıza ve çözmenize yardımcı olabilecek bir dizi tanılama özelliği sağlar. Aracın tanımladığınız sorunları gidermek için sağladığı kılavuzlu sorun giderme adımlarını ve önerilerini izleyin.
Geçirilen iş yükünün bitiş durumunu değerlendirme
AWS'deki kaynakları devre dışı bırakmadan önce, platformun mevcut iş yükü beklentilerini karşıladığından ve iş yükü bakımını veya daha fazla geliştirmeyi engelleyen bir durum olmadığından emin olmanız gerekir.
Performanslarını ve doğruluklarını doğrulamak için işlevleri dağıtın ve test edin.
Azure’a dağıtın
Tip
Doğrulanmış projeyi Azure'a dağıtmak için bu özel sohbet modu istemini kullanın:
/LambdaMigration-Phase6-DeployToAzure
VS Code yayımlama özelliğini kullanarak iş yüklerini dağıtın. Azure İşlevleri Temel Araçları'nı veya Azure CLI'yi kullanarak da komut satırından iş yüklerini dağıtabilirsiniz. Azure DevOps ve GitHub Actions da One Deploy'ı kullanır.
Azure Functions Core Tools'u ve komutunu kullanarak işlev uygulamanızı dağıtın.
Sürekli tümleştirme ve sürekli dağıtım (CI/CD) işlem hatları: GitHub Actions, Azure DevOps veya başka bir CI/CD aracı gibi hizmetleri kullanarak CI/CD işlem hattı ayarlayın.
Daha fazla bilgi için bkz . GitHub Actions kullanarak sürekli teslim veya Azure Pipelines ile sürekli teslim.
Örnek geçiş senaryolarını keşfetme
Kavram kanıtınızı başlatmak için MigrationGetStarted depoyu şablon olarak kullanın. Bu depo, başlamanıza yardımcı olacak altyapı ve kaynak kodu dosyalarına sahip, dağıtıma hazır bir Azure İşlevleri projesi içerir.
Terraform kullanmayı tercih ediyorsanız, bunun yerine MigrationGetStarted-Terraform kullanın.
Azure'da uygulamanın performansını iyileştirme ve izleme
İş yükünüzü aktardıktan sonra Azure'da daha fazla özellik keşfetmenizi önermekteyiz. Bu özellikler gelecekteki iş yükü gereksinimlerini karşılamanıza ve boşlukları kapatmanıza yardımcı olabilir.
İzleme ve sorun giderme için Application Insights'ı kullanma
İzleme ve sorun giderme için ayrıntılı telemetri verilerini toplamak üzere işlev uygulamanız için Application Insights'ı etkinleştirin. Application Insights'i Azure portalından veya işlev uygulamasının host.json yapılandırma dosyasından etkinleştirebilirsiniz. Application Insights'ı etkinleştirdikten sonra şunları yapabilirsiniz:
Telemetri verilerini toplayın. Application Insights istek günlükleri, performans ölçümleri, özel durumlar ve bağımlılıklar gibi çeşitli telemetri verileri sağlar.
Günlükleri ve ölçümleri analiz et. Günlükleri, ölçümleri ve diğer telemetri verilerini görselleştirmek ve analiz etmek için Azure portalından Application Insights panosuna erişin. Yerleşik araçları kullanarak özel sorgular oluşturun ve işlev uygulamanızın performansı ve davranışı hakkında içgörüler elde etmek için verileri görselleştirin.
Uyarıları ayarlayın. Kritik sorunlar, performans düşüşü veya belirli olaylar hakkında sizi bilgilendirmek için Application Insights'ta uyarıları yapılandırın. Bu uyarılar sorunları proaktif olarak izlemenize ve hızlı bir şekilde yanıtlamanıza yardımcı olur.
Maliyet ve performans için iyileştirme
Ölçeklendirme ve performans iyileştirmesi:
Değişen iş yüklerini verimli bir şekilde işlemek için otomatik ölçeklendirme özelliklerini kullanın.
Çalışma süresini kısaltarak, bağımlılıkları iyileştirerek ve verimli kodlama uygulamalarını kullanarak performansı iyileştirmek için işlev kodunu iyileştirin.
Sık erişilen veriler için yinelenen işleme ve gecikme süresini azaltmak için önbelleğe alma stratejileri uygulayın.
Maliyet yönetimi:
Azure İşlevleri maliyetlerinizi izlemek ve analiz etmek için Microsoft Maliyet Yönetimi araçlarını kullanın.
Giderleri etkili bir şekilde yönetmek ve tahmin etmek için bütçeleme ve maliyet uyarıları ayarlayın.