Migrate Legacy Uygulamaları Bir Serversız Mimariye Nasıl Yapılır

Serverless Architecture

Bir sunucusuz mimariye ait bir miras başvurusu yapmak basit bir asansör-ve değişim egzersizi değildir - uygulamanızın nasıl inşa edildiğini ve dağıtılmasını gerektirir.Bir sunucusuz modelde, bulut sağlayıcınız aslında işlem süresini yönetir.Bu ücretsiz geliştiricilerin geçici sunuculardan sipariş alma, iş sistemlerinizi yeniden yapılandırmasını gerektirir.

Büyük bulut sağlayıcıları tamamen yönetilen sunucusuz hesaplama platformlarını sunar: AWS Lambda, Azure Functions ve Google Cloud Functions. Bu hizmetler birden çok programlama dili destekler ve HTTP istekleri, veritabanı etkinlikleri, dosya yüklemeleri, planlanan görevler ve kuyruklardan gelen mesajlar, genellikle bir mikro hizmet veya etkinlik odaklı bir mimariyi benimsemeye devam eder.

Sunucusuz genellikle yeşil alan projeleri ile ilişkilendirilirken, birçok kuruluş, işletmesel koğuşları veya daha eski mikro hizmetleri operasyonel olarak azaltmak ve elastikliği artırmak için başarılı bir şekilde, göçü yönetilebilir aşamalara ayırarak, mirasınızın belirli kısıtlamaları ele alır - uzun süren süreçleri, devletli seanslar veya sıkı sıkı sıkı çalışma sistemi ile darbe.

Hazırlık Aşaması: Miras Uygulamanızı Değerlendirme

Tek bir sunucusuz kod yazmadan önce, mevcut uygulamayı iyice anlamanız gerekir. Bir aceleci göç iş mantığını kırabilir, güvenlik boşluklarını tanıtabilir veya her özelliğin ayrıntılı bir envanterini yaratarak başlayın, bağımlılık ve entegrasyon noktası.

Teşvik Uygulama Bileşenleri ve Bağımlılık

Miras uygulamaları genellikle iç kütüphanelerin, üçüncü taraf hizmetlerinin, konfigürasyon dosyalarının ve çevre özgü ayarların karışımına dayanır. Aşağıdaki belge:

Uzun süreli süreçlere veya görevleri hafızada tutan özel dikkat edin. Serverless işlevleri genellikle zaman sınırlarına sahiptir (örneğin, AWS Lambda için 15 dakika), bu yüzden saatlerce çalışan süreçler, AWS Step Functions veya Azure Functions gibi yeniden faktörlenecek veya ele alınacaktır.

Serverless Functions için uygun adaylar

Bir mirasın her parçası sunucusuz bir işleve ait değildir. Devletsiz, idempotent ve bir olay tarafından tetiklenebilir. İyi adaylar şunları içerir:

Tersine, kalıcı TCP bağlantılarını gerektiren bileşenler (uzun ömürlü bağlantıları gibi), yerel dosya sistemine büyük ölçüde güveniyor veya düşük seviyeli donanım erişimine bağlı olarak konteyner bazlı hizmetlere daha uygun (örneğin, AWS Fargate veya Azure Konteyner Instances).

Evaluate Data Storage Seçenekleri

Serverless mimariler genellikle manuel müdahale olmadan ölçeklenen veritabanı hizmetlerini tercih eder. Mevcut veri katmanınızı değerlendirin ve bu şekilde göçü planlayın:

Her depolama göçü risk taşır. Her bir kayıttan sonra her bir kayıtta, bütünlük sağlamak için veri doğrulama yapar. Veritabanı göç araçları kullanın (AWS DMS, Azure Database Migration Service) aşağı zaman en aza indirmek için.

Plan Güvenliği, Kimlik ve Yetki

Serverless uygulamalar yeni güvenlik gözlerini ortaya koyar. Saldırı yüzeyi OS ve ağ katmanından fonksiyon koduna, bağımlılıklara ve izinlere geçer. Anahtar planlama adımları şunlardır:

Mevcut ağ segmentinizi gözden geçirmeyi unutmayın. Serverless işlevleri özel kaynaklara erişmek için bir VPC'ye yerleştirilebilir, ancak bu, API Gateway veya yönetilen bir hizmet aracılığıyla bu kaynakları açığa çıkarabilirseniz latency ve soğuk başlangıç yükü anlamına gelir. Evaluate if you can put those resources through API Gateway or a managed service instead.

Göç Stratejisi: Doğru Yaklaşımı Seç

Evrensel bir göç yolu yoktur. seçiminiz, mirasınızın mimarisine, ekibinizin sunucusuzluğa ve alt süre için iş toleransına bağlıdır. Üç ortak strateji – ev sahibi olmak, yeniden inşa etmek ve yeniden inşa etmek – her şeyden önce ticaret-offları vardır.

Re loving: Lift and Shift with Serverless ballpers

Re hosting, mevcut uygulamayı bir konteyner içinde ve AWS Fargate veya Azure konteyner Instances gibi tamamen yönetilen bir konteyner platformuna taşımayı hedefliyor çünkü sunucusuz fonksiyonlar hala sunucu yönetimini ortadan kaldırır ve sürekli olarak devam edebilirsiniz.

Eğer mirasınız zaten bir Docker konteyner olarak paketlenirse, bu yaklaşım hızlı olabilir. Otomatik ölçeklendirme ( Lambda olarak granular olarak değil) ve operasyonel bir yük olarak bu stratejiyi kullanın: mevcut altyapınızla paralel olarak konteyner çalıştırın, o zaman saf sunucusuz işlevleri ile uç noktanızı değiştirin.

Refaksiyon: Serverless Bileşenleri

Yeniden faktörleme – ayrıca “strangler” deseni olarak da adlandırılır – monolith'den bireysel özellikleri çıkarmak ve bağımsız sunucusuz işlevleri uygulamak için bunları uygulamak gerekir.Bu aşamalı yaklaşım, her işlevi izolasyonda test edebileceğiniz için risk azaltır.

Yeniden faktörleme için adımlar:

  1. Açık giriş ve çıkış sınırları olan bir bağlantı veya özellik tanımlayın (örneğin, bir kullanıcı kayıt akışı).
  2. Bu özelliğin mantığını gerçekleştiren bir Lambda işlevine tetikleyen yeni bir API uç noktası oluşturun.
  3. Yeni uç noktaya trafik yüzdesi (kullanıcılar, yük denge kuralları) yollayın.
  4. Karşılaştırma logları, metrikler ve miras ve sunucusuz sürüm arasındaki hata oranları.
  5. Bir kez emin olun, eski kod yolunu ihmal edin.

Yeniden düzenleme en yaygın göç stratejisidir, çünkü tam bir yeniden yazma gerektirmeden artan değer sunar. Özellikle de miras kodbase iyi anlaşılır olduğunda çalışır ( mikro hizmet olmasa bile).

Yeniden inşa: Sunucusuz için Tam Yeniden Tasarım:

Yeniden inşa, sunucusuz ilkelleri kullanarak tüm uygulamayı yeniden yazmaktadır. Bu en yüksek çabadır, ancak en fazla fayda sağlar: tam elastiklik, ödemeli fiyat ve modern, kullanılabilir kodbase. Sadece mirasın çok sıkı bir şekilde iki katına çıktığı zaman yeniden inşa etmeyi düşünün (örneğin, bir deprecated dilde yazılmamış bir dil).

Yeniden inşa edildiğinde:

Yeniden inşa, çok fazla aylık veya çok merkezi bir çabadır. Tüm takımda taahhüt etmeden önce yeni mimariyi doğrulamaya başlayın.

Uygulama İpuçları: Yapım Production-Ready Serverless Functions

Bir stratejiniz olduğunda, bir üretim sisteminden bir hobi prototipini ayıran uygulama detaylarına odaklanacaksınız. Aşağıdaki uygulamalar ortak tuzaklardan kaçınmanıza yardımcı olacaktır.

Mümkün olduğunca mümkün olan Yönetilen Hizmetleri Kullanın

Serverless, operasyonel yükü azaltmak için tamamen yönetilen hizmetlerle fonksiyonlarınız hakkında daha fazlasıdır:

Yönetilen hizmetlere temel vermek, onları ya da ölçeklendirmek zorunda değilsiniz – otomatik olarak idare ediyorlar. Ancak, yüksek üretim ortamındaki maliyet etkilerini her zaman gerçekçi trafik simüle etmek.

Soğuk Starts için optimize edin

Soğuk bir işlev boşaldıktan sonra ortaya çıkar. gecikme (tipik olarak 100ms ila birkaç saniye) runtime ve kodunuzu yüklemeden gelir. Soğuk başlangıç etkisini en aza indirmek için:

Soğuk test etmek önemlidir. Birçok takım, bir geliştirme ortamında neyin iyi çalıştığını keşfetti soğuk başlangıç basıncı altında başarısız olur.

Robust Hatasını Uygulama ve Yeniden Yeniden Düzenlemeler

Serverless işlevlerin mükemmel bir şekilde başarısız olması gerekir, çünkü ikinci başına binlerce kez çağırılabilir, tek bir hata logları veya koşu maliyetleri üretebilir.En iyi uygulamalar şunları içerir:

İzleme ve Giriş Tüm Etkinlikler

Serverless ortamlar, runtime internals'ta sınırlı görünürlük sağlar. Kodun aşağıdaki araçları kullanarak agresif bir şekilde kullanılmasını sağlamalıdır:

İzleme, göçten sonra ilk haftalarda maliyetleri yakından takip eder. Serverless faturalama, per-invokasyon suçlamaları ve veri transferi içerir. uygun throttling olmadan, yanlış yapılandırılmış bir işlev faturayı şişirebilir.

Test ve Deployment: Bir Smooth Cutover

Test sunucusuz uygulamaları, bir monolith test etmek için farklı bir zihniyet gerektirir. Çünkü her işlev izole edilir, sadece fonksiyon mantığı değil aynı zamanda işlevleri ve yönetilen hizmetler arasındaki etkileşimleri test etmelisiniz.

Birim ve Entegrasyon Testi

Her işlevin temel mantığı için birim testleri yazın, SDK'nın AWS veya Azure hizmetlerine çağrılarını alay edin. Sonra, aslında yerel bir emülatöre karşı işlevi (örneğin yerelStack for AWS veya Azurite for Azure) veya özel bir test ortamına karşı uygulama.

Anahtar test senaryoları şunları içerir:

Jest (Node.js) gibi bir doğru kodu destekleyen bir test çerçevesi kullanın, pytest (Python), veya xUnit (.NET).

Yük Testi

Serverless platformlar otomatik ölçekler, ancak ölçeklendirme sınırları mevcut. Ayna zirve üretim trafiğinin doğrulanması için testleri:

Artillery, Serverless Artillery veya AWS Dağıtımlı Yük Testi gibi araçlar gerçek dünya modellerini simüle edebilir.

Canary Deployments ve Blue-Green-Green

Testiniz geçtiğinde, yeni işlev artışıyla dağıtın. Modern sunucusuz çerçeveler (AWS SAM, Azure Functions Core Tools, Serverless Framework) trafik geçişi destekler:

Her zaman bir geri dönüş planı vardır. Çünkü sunucusuz fonksiyonlar bir kez yayımlanmış, önceki bir sürüme yeniden dönme, eski sürüme işaret eden kadar basit.

Serversız Göç Faydaları ve Zorluklar

Kaybetme kararı açık, ölçülebilir faydalar tarafından yönlendirilmelidir - ama aynı zamanda zorlukların dürüst bir değerlendirmesini de gerektirir.

Anahtar Faydaları

Ortak Meydanlar

Sonuç: Stratejik, Fazlı Bir Yolculuğu

Bir sunucusuz mimariye ait bir miras başvurusu yapmak, doğru göç stratejisini seçmek veya yeniden inşa etmek değildir - her bileşeni kullanarak ölçeklenebilirliği, maliyetsiz vaatlerin kilidini açabilir ve ekip güvendiği kadar genişletilebilir.

Unutmayın ki sunucusuz bir gümüş mermi değildir. Bazı miras işleri, özellikle sıkı geç saatler veya ağır devletlilik ile olanlar, konteynerler tarafından servis edilebilir veya sanal makineler tarafından yönetilebilir. Mimarinizi modernize etme fırsatı olarak geçiş sürecini kullanın, güvenlik duruşunuzu geliştirmek ve gelecekteki iş ihtiyaçlarına adapte olabilecek bir temel inşa edebilir.

Daha fazla okuma için resmi belgelere bakınız: [[0]AWS Serverless), LUD işlevleri genel olarak ) ve [[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜye Olmayanlar İçin Daha Derinleştirilmiş Bir Bakışta Geri Dönüşümler (DÜye Olmayanlar)