Sunucusuz Çerçeve ile çoklu bulut çözümleri

Azure Functions

Bu makalede, Microsoft Ticari Yazılım Mühendisliği (CSE) ekibinin Sunucusuz Çerçeve'yi kullanarak hem Azure hem de Amazon Web Services (AWS) bulut platformlarında yüksek oranda kullanılabilir bir sunucusuz çözüm dağıtmak için küresel bir satıcıyla nasıl iş ortaklığı gerçekleştirilir.

Mimari

Çoklu bulut sunucusuz mimarisini gösteren diyagram.

Bu mimarinin bir Visio dosyasını indirin.

Veri akışı

  • Kullanıcı uygulaması, bulutta oturum açma özelliğine sahip herhangi bir kaynaktan gelebilir. Bu uygulamada kullanıcı, Azure ve AWS bulutları arasında istekleri 50-50 yük dengeleyen bir ağ geçidi uygulamasında oturum açar.
  • Herhangi bir yanıt, API Manager ağ geçidi üzerinden de yönlendirilir ve bunu istek sahibi uygulamasına gönderir.

Bileşenler

Sunucusuz Çerçeve

Bu çözüm, Sunucusuz, Inc. tarafından sağlanan Sunucusuz Çerçeve'yi kullanır. Sunucusuz Çerçeve'nin ücretsiz sürümü bir CLI, daha fazla eklenti ve sınırlı izleme hizmetleri içerir. Pro sürümü, gelişmiş izleme ve uyarılar gibi bulutlar genelinde operasyonel özelliklere sahiptir. Çerçeve, Node.js ve Python dillerini ve hem AWS hem de Azure bulut konaklarını destekler.

Azure'ı Sunucusuz Çerçeve ile kullanmak için şunları yapmanız gerekir:

  • Mikro hizmetleri paketlemek için Node.js
  • Azure İşlevleri, diğer bulut platformlarına benzer işlevler sağlamak için
  • Çoklu bulut dağıtımını ve izlemeyi desteklemek için Sunucusuz Çerçeve
  • Geliştiriciler için normalleştirilmiş çalışma zamanı API'leri sağlamak için Sunucusuz Çoklu Bulut Kitaplığı
  • Çoklu bulut dağıtımını desteklemek için Azure İşlevleri Sunucusuz Eklentisi. Bu eklenti başlangıçta karşılaştırılabilir AWS Lambda eklentisiyle eşliğe uygun değildi ve bu proje için genişletildi.

Aşağıdaki şekilde işleme işlem hattı gösterilmektedir. Ara yazılım katmanları, işleyiciye ulaşmadan önce gereken ara işlevleri temsil ediyor.

Çoklu bulut işleme işlem hattını gösteren diyagram.

Buluttan bağımsız API'ler

Her platformdaki sunucusuz uygulama, her işlevsel VM düğümüne bir tane olmak üzere mikro hizmet olarak tek tek işlevleri destekler ve işlemeyi gerektiği gibi yürütür. Her AWS Lambda işlevinin karşılık gelen bir Azure İşlevleri işlevi vardır. Sunucusuz Çoklu Bulut Kitaplığı, her iki buluttan da istemci uygulamalarının her iki platformla arabirim oluşturmak için kullanabileceği buluttan bağımsız normalleştirilmiş bir REST API'ye benzer mikro hizmetler oluşturur. Soyutlanmış API katmanı her platform için ilgili mikro hizmetleri ele almak için kod sağladığından işlemlerin çeviriye ihtiyacı yoktur. Buluttan bağımsız arabirim, kullanıcı uygulamalarının hangi bulut platformuna eriştiklerini bilmeden veya önemsemeden bulutla etkileşim kurmasına olanak tanır.

Aşağıdaki diyagramda bu kavram gösterilmektedir:

Buluttan bağımsız api'leri gösteren diyagram.

GitOps ile CI/CD

Sunucusuz Çerçeve'nin birincil işi, bir uygulamayı buluta dağıtmayla ilgili tüm altyapı sorunlarını soyutlamadır. Sunucusuz Çerçeve, bildirim tabanlı bir yaklaşım kullanarak tüm dağıtım sorunlarıyla ilgilenebilir ve gitOps'yi desteklemek için dağıtımın gerektiği şekilde otomatik hale döndürülebilmesini sağlar.

Bu ilk proje el ile dağıtımlar kullansa da, bulutlar içinde veya bulutlar arasında bildirim temelli sunucusuz derlemeler, testler ve dağıtımlar uygulamak gerçekçidir. Bu işlem GitOps geliştirici iş akışını kullanabilir: Git'ten oluşturma, test ve değerlendirme için kalite geçitlerini kullanma ve sunucusuz çözümleri her iki bulut sağlayıcısına gönderme. Projenin başından itibaren Sunucusuz Çerçeve kullanarak tüm dağıtımları gerçekleştirmek, devam etmenin en verimli yoludur.

API yöneticisi

API Manager mevcut veya özel bir uygulama olabilir. Bu uygulamadaki Apigee™ API Manager, yalnızca iki bulut platformuna 50-50 işlem yük dengesi sağlayan bir yönlendirici olarak hareket etti ve özellikleri için az kullanıldı.

API Yöneticisi şunları yapabilmelidir:

  • Gerektiğinde bulut platformlarının içine veya dışına dağıtılabilir
  • İletileri her iki bulut platformuna da yönlendirme
  • Zaman uyumsuz ileti trafiğini koordine etmek için trafik isteklerini günlüğe kaydetme
  • Ortak REST API'sini kullanarak istekleri ve yanıtları kullanıcı uygulamasından ve kullanıcı uygulamasına geçirme
  • İstek alma becerilerini doğrulamak için her iki bulut sunucusuz çerçeve dağıtımının da sistem durumunu izleyin
  • Yönlendirmeyi ve yüksek kullanılabilirliği desteklemek için her bulut platformunda otomatik sistem durumu ve kullanılabilirlik denetimleri gerçekleştirme

Alternatifler

  • Bulut platformları, AWS Lambda ve bu durumda Azure İşlevleri sunucusuz uygulamaları tarafından desteklendiği sürece Python gibi diğer diller çözümü uygulayabilir. Müşteri Node.js konusunda rahat olduğundan ve hem AWS hem de Azure platformları tarafından desteklendiği için bu proje mikro hizmetleri paketlemek için Node.js kullandı.

  • Çözüm, yalnızca Azure ve AWS'yi değil Sunucusuz Çerçeve'yi destekleyen herhangi bir bulut platformunu kullanabilir. Sunucusuz Çerçeve şu anda sekiz farklı bulut sağlayıcısıyla uyumluluğu bildirmektedir. Tek uyarı, çoklu bulut mimarisini veya eşdeğerini destekleyen öğelerin hedef bulut platformlarında kullanılabilir olduğundan emin olmaktır.

  • Bu ilk uygulamadaki API Manager, iki bulut platformuna 50-50 işlem yük dengelemesi sağlamak için yalnızca yönlendirici olarak hareket etti. API Manager, belirli senaryolar için diğer iş mantığını birleştirir.

Senaryo ayrıntıları

Sunucusuz bilgi işlemde bulut sağlayıcısı kod çalıştırmak için mikro hizmet kaynaklarını dinamik olarak ayırır ve yalnızca kullanılan kaynaklar için ücretlendirilir. Sunucusuz bilgi işlem, uygulama kodunu altyapı uygulamasından, kod dağıtımından ve planlama ve bakım gibi operasyonel yönlerden soyutlar.

Diğer hizmetlerde olduğu gibi, her bulut sağlayıcısının da kendi sunucusuz uygulaması vardır ve müşterilerin operasyonel etkileri ve maliyetleri olmadan farklı bir sağlayıcı kullanması zordur. Potansiyel müşteriler bu durumu pazarlık pozisyonlarını ve çevikliklerini zayıflatma olarak görebilir. Satıcıya kilitleme, kurumsal bulut benimsemenin önündeki en büyük engellerden biridir.

Açık kaynak Sunucusuz Çerçeve , bulut sağlayıcıları arasında sunucusuz bilgi işlem çözümleri geliştirmeye ve dağıtmaya yönelik evrensel bir bulut arabirimidir. Sunucusuz işlevler için açık kaynak oluşturma ve ortak API'ler, sağlayıcıların, müşterilerin ve iş ortaklarının en iyi tür hizmetleri için bulutlar arası çözümler oluşturmalarına yardımcı olur. Sunucusuz Çerçeve, satıcının kilitlenmesi ve bulutlar arası sağlayıcı yedekliliği sorunlarını gidererek bulut benimseme engellerini azaltır. Müşteriler çözümlerini maliyet, çeviklik ve diğer önemli noktalara göre iyileştirebilir.

CSE ve Azure ürün ekibi, Premium İşlevler, API Management ve KeyVault gibi yeni Azure İşlevleri özelliklerini desteklemek için Sunucusuz CLI'yi birlikte yeniden yazacak. Sunucusuz CLI artık Hem Azure'a hem de AWS'ye GitOps dağıtımı için standart bir arabirim sağlar. Ekip, sunucusuz uygulamaları hem AWS hem de Azure'a dağıtmak için normalleştirilmiş bir çalışma zamanı API'sini sağlayan Sunucusuz Çoklu Bulut Kitaplığı'nı da geliştirdi.

Bu tasarım, aktif-pasif yük devretmenin aksine birden çok bulut platformu arasında etkin-etkin yük devretme ile yüksek kullanılabilirlik sağlar. Bir bulut sağlayıcısının hizmeti iyi durumda değilse veya kullanılamaz hale gelirse, bu çözüm istekleri başka bir bulut platformuna yeniden yönlendirebilir.

Bu proje aşağıdaki teknik hedefleri karşıladı:

  • Sektörler arası bir çözüm oluşturun.
  • Dağıtıldıkları her yerde mikro hizmetlerle arabirim oluşturan buluttan bağımsız bir API'yi desteklemek için Çoklu Bulut Sunucusuz Kitaplığı'nı kullanın.
  • Desteklenen tüm bulut platformlarında geliştirme, test ve dağıtım için GitOps CI/CD işlem iş akışını destekleyin.
  • Kimliği doğrulanmış bir bulut ağ geçidi aracılığıyla API tabanlı erişimi kullanın ve ağ geçidini yönlendirici olarak kullanarak bulut platformları arasında yük dengelemesi yapın.

Sunucusuz Çerçeve kullanmanın diğer olası avantajları şunlardır:

  • Satıcının kilitlenmesini önleme veya azaltma
  • Çoklu Bulut Sunucusuz Kitaplığı'nı kullanarak geliştirme sırasında %40-60 oranında kod azaltma
  • Farklı bulut sağlayıcılarının hizmetlerini birleştiren en iyi tür çözümlerinin geliştirilmesi
  • Çoğu platform ve altyapı karmaşıklığı ve bakım gereksinimlerini ortadan kaldırma
  • Daha kolay veri paylaşımı, performans ve maliyet karşılaştırmaları ve özel tekliflerden yararlanma olanağı
  • Etkin-etkin yüksek kullanılabilirlik

Olası kullanım örnekleri

  • Sunucusuz Çoklu Bulut Kitaplığı'ndan buluta bağımsız bir API kullanarak birden çok platform için istemci tarafı uygulamaları yazın.
  • Sunucusuz bir çerçevedeki işlevsel mikro hizmet koleksiyonunu birden çok bulut platformuna dağıtın.
  • Hangi platformun barındırdığı bilinmeden veya ilgilenmeden bulut platformları arasında buluta bağımsız bir uygulama kullanın.

Dikkat edilmesi gerekenler

  • Bu makalede, ilk dağıtım bunları içerse de güvenlik çözümleri açıklanmaktadır. Bazı platformlara bağımlı birçok olası güvenlik çözümü vardır ve bu çerçeve herhangi bir makul çözümü barındırmalıdır. Kullanıcı kimlik doğrulaması, kabul edilen en düşük güvenliktir.

  • AWS ile Azure sunucusuz işlevsel teklifler arasındaki farkları ifade etmek zor olduğundan, erken çalışma her bulut platformunda kullanılabilen işlevleri eşlemeye ve gerekli dönüştürme gereksinimlerini belirlemeye odaklanmalıdır. Bu bilgilerden platformdan bağımsız bir API geliştirebilirsiniz.

  • Açık kaynak çözümü kullanmak, açık kaynak yazılımlarda uzun süreli bakım ve destek zorlukları nedeniyle risklere neden olabilir.

  • Ücretsiz Sunucusuz Çerçeve'de izleme öncelikli olarak yönetim panosuyla sınırlıdır. İzleme ücretli kurumsal teklifte kullanılabilir. Şu anda Azure İşlevleri Sunucusuz Eklentisi gözlemlenebilirlik veya izleme için hükümler içermez ve bu özellikleri uygulamak için değişiklik yapılması gerekir.

  • Bu çözüm, bulut platformları arasındaki performansı ve maliyetleri karşılaştırmak için ölçümleri kullanabilir ve müşterilerin bulut platformları genelindeki kullanımı sorunsuz bir şekilde iyileştirmesini sağlayabilir.

Bu senaryoyu dağıtın

Geleneksel Mavi-Yeşil Dağıtım , bir uygulamayı geliştirir ve mavi ve yeşil olmak üzere iki ayrı ama özdeş ortamlara dağıtır, kullanılabilirliği artırır ve riski azaltır. Mavi ortam genellikle normal olarak canlı trafiği işleyen üretim ortamıdır ve yeşil ortam gerektiğinde bir yük devretme dağıtımıdır. Ci/CD işlem hattı genellikle aynı bulut platformunda hem mavi hem de yeşil ortamları otomatik olarak dağıtır. Bu yapılandırma , etkin-pasif bir yapılandırma olarak kabul edilir.

Çoklu bulut çözümünde mavi-yeşil dağıtım her iki bulut platformunda da uygulanır. Sunucusuz durumda, her bulut platformu için biri üretim ortamı, diğeri yük devretme ortamı olarak iki yinelenen mikro hizmet kümesi dağıtılır. Her bulut platformundaki bu etkin-pasif kurulum, bu platformun kullanım dışı olma riskini azaltır, kullanılabilirliğini artırır ve çoklu bulut etkin-etkin yüksek kullanılabilirlik sağlar.

Etkin-etkin mavi-yeşil dağıtımı gösteren diyagram.

Mavi-yeşil dağıtımın ikincil avantajlarından biri, her bulut platformunda yük devretme dağıtımını üretim dağıtımına yayınlamadan önce mikro hizmet güncelleştirmeleri için bir test ortamı olarak kullanabilmektir.

Sonraki adımlar