Potpuni vodič za izradu backenda bez servera s Cloud Functions i AWS Lambda

  • Dubinska analiza paradigme serverless i razlike između FaaS-a i BaaS-a u oblaku.
  • Metodologije implementacije korištenjem okvira infrastrukture kao koda za optimizaciju razvoja.
  • Usporedba tehničkih implementacija između Google Cloud Functions i AWS Lambda.
  • Strategije za ublažavanje problema s performansama kao što su hladni startovi i upravljanje stanjem.

Izradite backend bez servera s Cloud Functions i AWS Lambda

Siguran sam da ste čuli da Model bez servera je budućnost i to vam omogućuje pokretanje aplikacija koje "ne rade ni na jednom poslužitelju". Budimo jasni, prije svega, kod ne lebdi u zraku niti se izvršava u paralelnoj dimenziji. Poslužitelji su još uvijek tu, ali čarolija leži u činjenici da Potpuno zaboraviš na njihViše se ne morate boriti s konfiguracijom operativnog sustava ili provoditi noći krpajući ranjivosti; pružatelj usluga u oblaku brine se o sav "hardver".

U osnovi, govorimo o tako visokoj razini apstrakcije da se programer mora brinuti samo o napišite poslovnu logiku i poboljšati njihove mogućnosti. To je potpuni mentalni pomak: prešli smo s upravljanja strojevima poput "kućnih ljubimaca" kojima je potrebno maženje, na tretiranje njih kao "stoke", gdje se, ako jedna instanca zakaže, automatski gasi, a druga postavlja bez da krajnji korisnik išta primijeti. To je, jednostavno rečeno, ultimativni izraz agilnosti na oblaku.

Što je točno serverless computing?

Kada govorimo o serverlessu, zapravo mislimo na ekosustav koji kombinira dva temeljna koncepta: FaaS (funkcija kao usluga) i BaaS (pozadina kao usluga)Prvi je mehanizam, gdje prenosite isječke koda (funkcije) koji se pokreću samo kada se dogodi određeni događaj. Drugi su komplementarne usluge, kao što su rješenja poput Appwritea za razvojNoSQL baze podataka ili sustavi za autentifikaciju, koji dolaze već upravljani i spremni za korištenje.

Što je AppWrite i kako vam može pomoći u stvaranju Android aplikacija?-4
Povezani članak:
Appwrite: Prednosti, praktični vodič i usporedba za moderne Android aplikacije

Za razliku od tradicionalnih mikroservisa, koji su obično aktivni 24 sata dnevno, 7 dana u tjednu, trošeći resurse, funkcije bez poslužitelja su kratkotrajan i bez državljanstvaTo znači da se raspoređuju, obavljaju svoj posao i nestaju. Ova arhitektura je idealna za dizajni orijentirani na događaje (EDA)omogućavanje radnje na usluzi (kao što je prijenos fotografije u spremnik) da automatski pokrene lanac funkcija za obradu te slike.

Usporedba divova: AWS, Google Cloud i Azure

Gotovo svi veći pružatelji usluga imaju svoju verziju ovog modela. U Amazonovom ekosustavu kralj je AWS LambdaBesprijekorno se integrira s API Gatewayom za otkrivanje HTTP krajnjih točaka i s DynamoDB-om za pohranu podataka. Vjerojatno je najzreliji alat i onaj koji nudi najbolje značajke. model plaćanja po učinku izuzetno agresivno, gdje je prvih milijun mjesečnih poziva obično besplatno.

S druge strane, imamo Google Cloud funkcijekoji djeluju kao "ljepilo oblaka" za GCP. Posebno su moćni za povezivanje internih usluga, kao što su Cloud Pub/Sub za razmjenu poruka u stvarnom vremenu ili BigQuery za analizu podataka. Dok je AWS vrlo robustan u infrastrukturi, Google blista u jednostavnost implementacije i integraciju s njegovim API-jima za strojno učenje, što vam omogućuje kategorizaciju sadržaja ili obradu podataka s nevjerojatnom lakoćom.

Tehnički izazov: Hladni startovi i upravljanje stanjem

Nije sve ružičasto u svijetu bez servera; postoji nekoliko "prepreka na putu" kojih biste trebali biti svjesni. Najpoznatija je Hladni start ili hladni startBudući da se funkcija ne izvršava cijelo vrijeme, prvi zahtjev nakon razdoblja neaktivnosti traje dulje jer pružatelj usluga mora pokrenuti kontejner. Kako bi to izbjegli, neki programeri pribjegavaju periodični pozivi kako bi se održala funkcija "topla".

Druga kritična točka je da, budući da su funkcije bez stanja, ne možete pohraniti varijable u memoriju za sljedeći zahtjev. Ako trebate zapamtiti tko je korisnik ili održavati košaricu za kupnju, morate outsourcing države u brzoj bazi podataka ili predmemoriji. Nadalje, ključno je kontrolirati maksimalan broj instanci kako bi se izbjeglo preopterećenje baze podataka tisućama istovremenih veza tijekom vršnog prometa.

Alati za implementaciju i infrastruktura kao kod

Ako pokušate stvoriti svoj backend klikanjem putem web konzole pružatelja usluga, poludjet ćete čim projekt naraste. Kako biste izbjegli ručni, nereplicirani rad, idealno rješenje je korištenje Infrastruktura kao kod (IaC)Ovdje se Serverless FrameworkMoćan alat koji vam omogućuje definiranje cijele arhitekture u jednoj YAML datoteci. Pomoću naredbe poput serverless deployAlat je odgovoran za stvaranje Lambda vrijednosti, konfiguriranje API Gateway okidača i upravljanje IAM dozvolama.

Za one koji dolaze iz Java ekosustava, Funkcija proljetnog oblaka To je spas. Omogućuje vam pisanje poslovne logike neovisne o dobavljaču koristeći sučelja poput Funkcije, Potrošača ili Dobavljača. Zahvaljujući specifični adapteriMožete pokrenuti isti kod u AWS Lambdi kao i u Azure Functionsu, što olakšava prenosivost koja je prije bila samo san. Samo trebate sve zapakirati u jedno. staklenka za mast (koristeći dodatke poput ShadowJara ili Shadea) i prenesite ga u oblak.

Idealni slučajevi upotrebe za ovaj pristup

Nemojte sve pokretati na serverless sustavima, jer biste mogli završiti s prekomjernim troškovima ako imate stalan i predvidljiv promet 24/7. Ovaj model se ističe u... API-ji s varijabilnim prometom, webhookovi vanjskih usluga, ETL procesi za pretvorbu podataka ili zakazani zadaci (cron poslovi). Također je dobitna opcija za implementirati brze dokaze koncepata ili proširiti funkcionalnost starog monolitnog sustava bez potrebe za prepisivanjem svega.

Kako pratiti performanse s New Relic-om
Povezani članak:
Što je New Relic i kako ga koristiti za praćenje performansi

Sa stajališta sigurnosti i usklađenosti s propisima (kao što su ENS ili NIS2), serverless je blagoslov. Budući da ne upravlja operativnim sustavom, Uklanjate teret kaljenja. i zakrpanje kernela; ta odgovornost u potpunosti pada na pružatelja usluga u oblaku. Samo trebate osigurati da je kod siguran i da API-ji su pravilno zaštićeni putem tokena ili pristupnih ključeva. Podijelite vodič i drugi korisnici će saznati više o temi.


Dodaj kao preferirani izvor