๐Ÿš€Lambda - Api Gateway

Lambda, Sunucu yรถnetmek zahmetine girmeden, kod รงalฤฑลŸtฤฑrmanฤฑza izin verir. Yalnฤฑzca tรผkettiฤŸiniz hesaplama zamanฤฑ iรงin รถdeme yapฤฑlฤฑr. Kod รงalฤฑลŸmadฤฑฤŸฤฑnda รผcret alฤฑnmaz.

FAAS (serverless) : Developer 'lar iรงin yarattฤฑklarฤฑ kod bloฤŸunu, bloklarฤฑnฤฑ atarak รงeลŸitli yรถntemlerle bu kodlarฤฑ tetikleleterek, kodun รงalฤฑลŸmasฤฑ saฤŸlanarak, sonucun alฤฑndฤฑฤŸฤฑ bir konsept. GeliลŸtiriciler iรงin bir รงok sorunu ortadan kaldฤฑrฤฑr. Ortamda bir sunucu olmadฤฑฤŸฤฑndan, sunucu yรถnetim problemi kalmฤฑyor. Ayrฤฑca kod รงalฤฑลŸฤฑp sonuรง alฤฑndฤฑฤŸฤฑnda faturalandฤฑrma yapฤฑlฤฑyor. KullandฤฑฤŸฤฑmฤฑz kadar รถdeme yapฤฑyoruz. Servis arka planda, ihtiyaca gรถre bรผyรผyebiliyor. Yani EC2 'da autoscaling ile saฤŸladฤฑฤŸฤฑmฤฑz durumu burada otomatik olarak saฤŸlฤฑyoruz.

Kullanฤฑcฤฑlar bir sunucu yรถnetmeden, uygulama geliลŸtirmelerine ve iลŸlevleri daฤŸฤฑtmalarฤฑna olanak saฤŸlayan ve iลŸlem verimliliฤŸini arttฤฑran bir bulut biliลŸim modelidir. FAAS(Function as a Service) temelindeki konsept serverless(sunucusuz) olarak bilinen konsepttir. Bu konsept tรผm biliลŸim alt yapฤฑsฤฑ bulut biliลŸim saฤŸlayฤฑcฤฑsฤฑ tarafฤฑndan yรถnetilir ve bizler sadece kod ile ilgileniriz. Kodun รงalฤฑลŸmasฤฑ ve sonucun gรถnderilmesi iรงin gereken tรผm alt yapฤฑ servis saฤŸlayฤฑcฤฑnฤฑn gรถrevidir.

Lambda, ile hemen hemen her tรผrlรผ uygulama ve ya arka uรง (backend) hizmeti iรงin kod รงalฤฑลŸtฤฑrabiliriz. Sadece kodumuzu yรผkleriz ve gerisini lambda'ya bฤฑrakฤฑrฤฑz. Kodumuzun diฤŸer AWS hizmetlerinden otomatik olarak tetikletmek ve ya doฤŸrudan her hangi bir web ve ya mobil uygulamadan รงaฤŸฤฑrmak iรงin ayarlayabiliriz. Python,Java,C#,NodeJS,Go dillerinde kodlarฤฑ รงalฤฑลŸtฤฑrarak bize iลŸlem sonucunu รงฤฑkaran AWS'nin FAAS servisidir.

Api Gateway, Ortamda birden fazla mikro servis bulunan ortamlarda tรผm bu servislere eriลŸimin, servislerin birbiriyle konuลŸmalarฤฑnฤฑn dฤฑลŸ dรผnyadan diฤŸer uygulamalarฤฑn bu servise hizmetlerine eriลŸebilecek bir ortam oluลŸturulmasฤฑnฤฑ saฤŸlar. Tรผm bu karฤฑลŸฤฑk servislerin giriลŸ noktasฤฑdฤฑr. Lambda ile mikro servisler hatta tek bir fonksiyon รงalฤฑลŸtฤฑran nano servisler yaratabiliriz. Ve bu servislere bir giriลŸ noktasฤฑ Auth alt yapฤฑsฤฑ kurmamฤฑz gerekebilir. ฤฐลŸte bize bunu Api GW servisi saฤŸlฤฑyor.

Api Gateway, GeliลŸtiricilerin, her hangi bir รถlรงekte API oluลŸturmasฤฑnฤฑ,yayฤฑnlamasฤฑnฤฑ,sรผrdรผrmesini ve izlemesini ve gรผvenliฤŸini saฤŸlamasฤฑnฤฑ kolaylaลŸtฤฑran tamamen yรถnetilen servistir. AWS yรถnetim konusunda bir kaรง tฤฑklamayla Amazon Elastic Compute Cloud รผzerinde รงalฤฑลŸan iลŸ yรผkleri AWS lambda รผzerinde รงalฤฑลŸan kod bloklarฤฑ ve ya herhangi bir web uygulmasฤฑ gibi arka uรง hizmetlere eriลŸmek iรงin รถn kapฤฑ olarak iลŸlev gรถren bir API oluลŸturulabilir.

Lambda Fonksiyonu oluลŸturmak,

  • Create Lambda function

  • Autor from scratch : Sฤฑfฤฑrdan kodu kendimiz mi yazฤฑp mฤฑ kullanacaฤŸฤฑz?

  • Use a blueprint : Blueprint kullanabiliriz. Blueprint aws 'nin hazฤฑrladฤฑฤŸฤฑ, hazฤฑr lambda fonksiyonlarฤฑdฤฑr.

  • Browse serverless app repository : Marketplace olarak dรผลŸรผnebiliriz. ฤฐnsanlar yazdฤฑklarฤฑ kodu buraya yรผkler. Biz buradan kullanabiliyoruz.

  • autor from scratch seรงeneฤŸi ile devam edebiliriz.

  • Function Name: Fonksiyon adฤฑ

  • Runtime : Kodumuz hangi dil'de yazฤฑldฤฑysa buradan seรงmeliyiz.

  • Permission : Bu fonksiyonu hangi permission (aws haklarฤฑyla) รงalฤฑลŸtฤฑrmak istediฤŸimizi soruyor.

  • Function code : Bu ekrana kodumuzu yapฤฑลŸtฤฑrabiliriz.

  • Policy Template : Hazฤฑr bir template'den permission seรงiyoruz.

    • Role Name giriyoruz.

  • Create Function

Dilersek bu kodu tetikletebiliriz, รถrneฤŸin s3'e dosya atฤฑldฤฑฤŸฤฑnda bu kodu รงalฤฑลŸtฤฑr vb. Dilersek manuel olarak รงalฤฑลŸtฤฑrabiliriz.

  • => Test

  • => Create new test event

  • => Event Name

  • => DiฤŸer ayarlar varsayฤฑlan kalabilir.

  • => Save

  • => Test

Bรถylelikle oluลŸturduฤŸumuz kodumuz รงalฤฑลŸmฤฑลŸ olacak.

=> Basic Settings, kodumuzun รงalฤฑลŸmasฤฑ iรงin gerekli memory miktarฤฑnฤฑ seรงebiliriz.

=> Timeout : Kod รงalฤฑลŸฤฑrken kaรง saniye iรงerisinde timeout 'a dรผลŸsรผn. Uzun sonuรงlar รงฤฑkaran, fonksiyonlar iรงin gerekli timeout seรงeneฤŸini ayarlayabiliriz.

=> Execution Role : Daha รถnceden atadฤฑฤŸฤฑmฤฑz rolleri deฤŸiลŸtirebiliyoruz.

=> Network : Bir VPC iรงerisinden eriลŸilebilir hale getirebiliyoruz.

=> Debug - Error Handling : Loglarฤฑ SNS ve ya SQS e gรถnderebiliriz.

=> Concurrency : Kodun arka arkaya รงalฤฑลŸma limitini belirleyebiliriz.

Kodumuzu tetikletmek ve dฤฑลŸ dรผnyadan eriลŸmek iรงin API GW servisine geรงiyoruz.

Api GW, rest-api yaratmamzฤฑ saฤŸlar. Bu servis sayesinde HTTP protokolรผ รผzerinden รงalฤฑลŸan API yaratabiliriz ve bu API yarattฤฑฤŸฤฑmฤฑz, mikro servislere baฤŸlayabiliriz. Ayrฤฑca lambda รผzerinde yarattฤฑฤŸฤฑmฤฑz birer mikro servis gรถrevi gรถrdรผฤŸรผnden yaratacaฤŸฤฑmฤฑz API bu fonksiyona baฤŸlanabilir.

API ile her /get isteฤŸi gรถnderildiฤŸinde bunun lambda servisinde az รถnceki oluลŸturduฤŸumuz fonksiyonu tetikletecek ลŸekilde ayarlayacaฤŸฤฑz. Ve sonucu geri dรถndรผreceฤŸiz.

  • Choose the Protocol : Hangi tip API yaratacaฤŸฤฑz?

    • Rest

  • Create New API : Yeni API oluลŸturabilir ve ya รถrnek bir API kullanabiliriz.

    • New API

  • Name : ilkapi

  • Endpoint : Regional (Lambda fonksiyonu bu region'da)

  • Create API

  • Resources => Actions : Fonksiyonumuzu tetikletmek iรงin metot yaratalฤฑm.

    • Create Method => Get => Okey

  • Bu metot รงaฤŸrฤฑldฤฑฤŸฤฑnda ne tetiklenecek?

    • Integration Type : Lambda Function

  • Lambda Region : Lamdayฤฑ oluลŸturduฤŸumuz region?

  • Lambda Function : Fonksiyonumuzun adฤฑ?

  • Use Default Timeout : Seรงili.

  • Bรถylelikle iลŸlemler tamamlandฤฑ.

Deploy API => Stage Name : Misal, " Prod " yazฤฑyoruz. ฤฐlk api yaratmฤฑลŸ olduk.

Last updated