Lambda

Örnek bir senaryo vermek gerekirse mikroservis bazlı bir uygulamamız olduğunu düşünelim:

  • Altyapı yönetimi zahmetli ve karmış bir iş

  • Kod yazıp uygulama oluşturmak işin bir kısmı

  • Bunun bir ortamda kesintisiz şekilde müşterilerin hizmetine sunulması isse ap ayrı ve emek gerektiren bir iş.

  • Ben kodu attığımda direk çalışmasını istyorum arkadaş!

Diyorsan Serverless bir çözüm olan Lambda ile çalışma vaktin gelmiş demektir.

Lambda:

AWS Lambda, sunucu yönetme zahmetine girmeden kod çalıştırmanıza izin verir. Yalnızca tükettiğiniz hesaplama zamanı için ödeme yaparsınız - kodunuz çalışmadığında ücret alınmaz. Lambda ile, hemen hemen her türlü uygulama veya arka uç hizmeti için kod çalıştırabilirsiniz. Sadece kodunuzu yükleyin ve Lambda, yüksek kullanılabilirlik ile kodunuzu çalıştırmak ve ölçeklendirmek için gereken her şeyi halleder. Kodunuzu diğer AWS hizmetlerinden otomatik olarak tetiklemek veya doğrudan herhangi bir web veya mobil uygulamadan çağırmak için ayarlayabilirsiniz.

Yukarıdaki Örnek için Diyagram örneği verirsek:

Sosyal medyalardan, Kişilerin kim takip ediyor/etmiyor uygulaması oluşturduğumuzu varsayıyoruz.

Bu Örnekte Mikroservis yapısı (Zahmetli) kısım örneklendirilmişt. Hepsinin ap ayrı alt yapı sorunları ise cabası.
Bu Örnek ise altyapı zahmeti olmadan AWS Çatısı altında bu işlemin daha kısa şekli vardır.

Not: Lambda FaaS (Function as a Service) bir çözüm olarak kullanımı yaygındır. Ayrıca Nano servis gibi oluşumlar oluşturılabilir.

Lambda Panelindeki Bazı tanımlar:

Concurrency: Arka arkaya çalışabilme sayısı.

Integration Layer: Lambdayı ne tetiklecek? sorusuna cevap verir

Actions Layer: Tetiklendikten Sonra ne yapmalıyım? (Genellikle API Gateway ile kullanımı yaygındır.)

Özellikler:

  • AWS Lambda fonksiyonları her zaman AWS'ye ait bir VPC üzerinden çalışır. Varsayılan olarak, fonksiyonunuz herhangi bir public internet adresine ağ istekleri gönderebilme yetkisine sahiptir — buna tüm public AWS API’lerine erişim de dahildir. Örneğin, fonksiyonunuz AWS DynamoDB API'leri ile etkileşime girerek PutItem veya Query işlemleri gerçekleştirebilir.

    Fonksiyonlarınızı yalnızca private subnet içinde yer alan özel bir kaynak ile etkileşim kurmanız gerektiğinde VPC erişimi için etkinleştirmeniz gerekir. Amazon RDS instance buna iyi bir örnektir.

    Fonksiyonunuz VPC erişimi için etkinleştirildiğinde, fonksiyonunuzdan gelen tüm ağ trafiği VPC/Subnet’inizin routing kurallarına tabi olur. Fonksiyonunuzun bir public resource ile etkileşim kurması gerekiyorsa, public subnet içinde bir NAT gateway üzerinden bir route sağlamanız gerekecektir.

VPC Açılmış bir lambda örneği.
  • AWS Lambda fonksiyonları çok hızlı ölçeklenebildiği için, Concurrency (eşzamanlı çalıştırma) artışları yaşandığında sizi bilgilendirecek kontroller kurmanız önemlidir.

  • Birden fazla AWS Lambda fonksiyonunda aynı kodu tekrar kullanmayı planlıyorsanız, AWS Lambda Layer oluşturmayı düşünmelisiniz. Fonksiyonunuzu, layer’lar şeklinde ek kod ve içerik alacak şekilde yapılandırabilirsiniz. Layer, kütüphaneler, özel runtime veya diğer bağımlılıkları içeren bir ZIP arşividir. Layer’lar sayesinde, kütüphaneleri deployment paketine eklemeden fonksiyon içinde kullanabilirsiniz. Bu sayede deployment paketiniz küçük kalır ve geliştirme süreci kolaylaşır. Bir fonksiyon aynı anda en fazla 5 layer kullanabilir.

  • Kendi layer’larınızı oluşturabilir veya AWS ve diğer müşteriler tarafından yayınlanan layer’ları kullanabilirsiniz. Layer’lar, belirli AWS hesaplarına, AWS Organizations’a veya tüm hesaplara layer kullanım izni vermek için resource-based policy destekler. Fonksiyon ve tüm layer’ların açılmış (unzipped) toplam boyutu 250 MB’lık limitin üzerine çıkamaz.

Last updated