AWS

Što je bez poslužitelja? AWS Lambda i drugi FaaS

Što je bez poslužitelja? AWS Lambda i drugi FaaS
Kako bismo razumjeli bes poslužitelje, AWS Lamda i slične ponude Funkcija kao usluga, započet ćemo s poviješću i krajolikom računalstva, a zatim ove nove usluge staviti u kontekst. Započnimo.

Fizička računala

Daleko smo prešli put od masivnih poslužitelja dotcom ere. U to doba poslužiteljska infrastruktura uglavnom je bila lokalna. Tvrtka je svoja rješenja vodila na fizičkom poslužitelju. Ljudi su koristili cijele zasebne poslužitelje u različite svrhe (sigurnosne kopije, poslužitelj pošte, web poslužitelj itd.). Kad određeni poslužitelj nije uspio pratiti rastuće potrebe tvrtke, zamijenio ga je noviji brži poslužitelj. Skalirali ste dobivanjem boljeg hardvera. Skalirali ste vertikalno.

Hipervizori

Tada je nastupila era hipervizora. Zamah je dobio porastom VMWare-a i ljudi su shvatili da mogu dobiti jedan stalak koji će njima svima vladati. Jedan stalak za pokretanje svih različitih slučajeva upotrebe i pružanje svakog od njih vlastitog zasebnog virtualnog stroja. To je također dovelo do računalstva u oblaku i tvrtke su izravno prestale ulagati u poslužiteljski hardver i umjesto toga odlučile 'unajmiti' virtualne poslužitelje.

Ogromnim i skupim podatkovnim centrima upravljali su pružatelji usluga u oblaku širom svijeta. Tvrtke su to iskoristile pružajući svoje usluge globalno, koristeći najširi mogući raspon podatkovnih centara. To je učinjeno uglavnom radi smanjenja latencija, poboljšanja korisničkog iskustva i ciljanja većeg tržišta.

To je također natjeralo autore softvera da razmišljaju u smislu distribuiranih sustava. Napisali su softver za pokretanje ne na jednom ogromnom računalu, već na mnogim osrednjim na dosljedan i pouzdan način. Skalirali ste vodoravno.

I dalje možete skalirati okomito. U stvari, zbog virtualizacije je osiguravanje više resursa postalo lakše. Isključili ste VM, prilagodili njegove resurse i malo dodatno platili pružatelja usluga u oblaku. Mačji kašalj.

Osnovni fizički poslužitelji nisu nestali. Davatelji oblaka sada su odgovorni za upravljanje složenošću mrežnih sučelja, kompatibilnošću OS-a i drugim zastrašujućim patologijama.

Spremnici

Zatim su došli kontejneri. Kontejneri su bili ova nevjerojatna lagana apstrakcija. Virtualno okruženje s operativnim sustavom koji je omogućio pakiranje i postavljanje softvera u jednu cjelinu. Kao i virtualni strojevi, svaki spremnik nije bio svjestan drugih spremnika, ali dijelili su istu jezgru operativnog sustava.

To je ljudima omogućilo da na još višoj razini apstrakcije razmjeste softver na poslužiteljima (fizički ili virtualni nije važno). Nije vas bilo briga za proizvodni operativni sustav. Sve dok podržava vašu tehnologiju kontejneriranja, on će pokretati vaš softver. Također se spremnici lakše okreću, što je usluge učinilo skalabilnijima nego ikad.

To je dodatno povećalo fleksibilnost distribuiranih sustava. Pomoću tehnologija poput Kubernetesa možete dobiti legije kontejnera koji pokreću složeni niz usluga. Distribuirani sustavi nude puno prednosti velika dostupnost, robusnost i sposobnost samoizlječenja od kvara čvora.

Istodobno, budući da su toliko složeni, teže ih je dizajnirati, implementirati, održavati, nadzirati i ispraviti. To se protivi izvornom trendu apstrahiranja složenosti softvera i prenošenja te odgovornosti na vašeg davatelja usluga u oblaku. Tu dolazi do arhitekture bez servera.

Bez poslužitelja ili funkcija kao usluga (FaaS)

Ideja bez poslužitelja stekla je snagu ponajviše zbog AWS Lambde, a ovdje ću je koristiti kao model za razgovor o bez poslužitelja. Načela na kojima se temelji FaaS su:

Kad nitko ne pristupa vašim uslugama, usluge nisu aktivne. To nije bio slučaj s tradicionalnim hosting rješenjima gdje plaćate VPS koji je uvijek aktivan, čak i ako je u stanju mirovanja ne radeći ništa korisnije od slušanja novog zahtjeva.
U arhitekturi bez poslužitelja vaša usluga ne radi, osim ako je netko zapravo ne želi koristiti. Kada zahtjev stigne, usluga se kreira u hodu kako bi se njime rukovalo.

Kako radi?

Vaša funkcija (na primjer program Python, Go ili Java) nalazi se kao datoteka na AWS Lambda. Ovom funkcijom povezujete određene događaje okidača, poput API pristupnika ili novog objekta koji dolazi u vašu S3 skupinu. I određeni resursi poput baze podataka ili drugog spremišta objekata ili EC2 instance.

Kao odgovor na bilo koji pridruženi događaj okidača, AWS Lambda stvara spremnik s vašom funkcijom unutar njega. Funkcija se izvršava i daje odgovor. Na primjer, ako nova slika dođe u vašu kantu S3, tada AWS Lambda može imati kôd za strojno učenje koji će analizirati ovu sliku i zapisati svoj izlaz u DynamoDB (jednu od AWS-ovih usluga skladišta podataka).

Ne morate platiti za cijeli poslužitelj, već samo za količinu memorije koju ste dodijelili svojoj funkciji, broj zahtjeva koje dobijete i koliko dugo vaša funkcija radi.

Štoviše, ne morate brinuti o skaliranju spremnika kao odgovor na veliko dolazno radno opterećenje. Ako se istodobno dogodi puno pokretačkih događaja, AWS će se pobrinuti za okretanje novih spremnika i raspoređivanje radnih opterećenja između njih i svih ostalih složenosti.

Nije cjelovito rješenje

Kad su se pojavili virtualni strojevi, fizički poslužitelji nisu prestali postojati. Kad su stigli kontejneri, i dalje smo koristili VM-ove. FaaS je apstrakcija više razine i izvrsno se uklapa u moderan dizajn RESTful API-ja, usluge bez državljanstva i lagane jezike poput Node.js ili Python.

Međutim, i dalje se pokreće na fizičkom poslužitelju (na primjer, upravlja AWS), i dalje osluškuje dolazne zahtjeve (to jednostavno ne plaćate izravno) i još uvijek trebate trajno pohranjivati ​​podatke, zbog čega i ima integracije za S3, EC2 i druge usluge. Ipak je korisna apstrakcija.

Kako razviti igru ​​na Linuxu
Prije deset godina malo je Linux korisnika predviđalo da će njihov omiljeni operativni sustav jednog dana biti popularna platforma za igranje komercij...
Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...
Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...