Zašto je revolucija bez poslužitelja u mrtvoj točki

Ključne točke

  • Već nekoliko godina nam se obećava da će računalstvo bez poslužitelja (bez poslužitelja) otvoriti novu eru bez specifičnog OS-a za pokretanje aplikacija. Rečeno nam je da bi takva struktura riješila mnoge probleme skalabilnosti. Zapravo je sve drugačije.
  • Iako mnogi tehnologiju bez poslužitelja vide kao novu ideju, njezini se korijeni mogu pratiti unatrag do 2006. sa Zimki PaaS i Google App Engine, a oba koriste arhitekturu bez poslužitelja.
  • Četiri su razloga zašto je revolucija bez poslužitelja zastala, od ograničene podrške za programski jezik do problema s performansama.
  • Računalstvo bez poslužitelja nije toliko beskorisno. Daleko od toga. Međutim, na njih se ne bi trebalo gledati kao na izravnu zamjenu za poslužitelje. Za neke primjene mogu biti zgodan alat.

Server je mrtav, živio server!

Ovo je bojni poklič pristaša revolucije bez servera. Dovoljan je brzi pogled na tisak u industriji u posljednjih nekoliko godina da zaključimo da je tradicionalni model poslužitelja mrtav i da ćemo za nekoliko godina svi koristiti arhitekture bez poslužitelja.

Kao što svi u industriji znaju i kao što smo također istaknuli u našem članku o stanje računalstva bez poslužitelja, to je pogrešno. Unatoč mnogim člancima o meritumu revolucija bez poslužitelja, nikad se nije dogodilo. Zapravo, pokazuju nedavne studijeda je ova revolucija možda zašla u slijepu ulicu.

Neka od obećanja za modele bez poslužitelja sigurno su se ostvarila, ali ne sva. Nitko.

U ovom članku želim razmotriti razloge za ovo stanje. Zašto je nedostatak fleksibilnosti modela bez poslužitelja još uvijek prepreka njihovoj široj primjeni, iako su i dalje korisni u specifičnim, dobro definiranim okolnostima.

Što su vješti računarstva bez poslužitelja obećali

Prije nego prijeđemo na probleme računalstva bez poslužitelja, pogledajmo što su imali za ponuditi. Obećanja revolucije bez poslužitelja bile brojne i - ponekad - vrlo ambiciozne.

Za one koji nisu upoznati s pojmom, evo kratke definicije. Računalstvo bez poslužitelja definira arhitekturu u kojoj se aplikacije (ili dijelovi aplikacija) izvode na zahtjev u runtime okruženjima koja se obično hostiraju na daljinu. Osim toga, sustavi bez poslužitelja mogu biti hostirani. Izgradnja robusnih sustava bez poslužitelja bila je glavna briga sistemskih administratora i SaaS tvrtki tijekom proteklih nekoliko godina, jer (kako se tvrdi) ova arhitektura nudi nekoliko ključnih prednosti u odnosu na "tradicionalni" model klijent/poslužitelj:

  1. Modeli bez poslužitelja ne zahtijevaju od korisnika održavanje vlastitih operativnih sustava ili čak izradu aplikacija koje su kompatibilne s određenim operativnim sustavima. Umjesto toga, programeri stvaraju zajednički kod, postavljaju ga na platformu bez poslužitelja i gledaju kako radi.
  2. Resursi u okvirima bez poslužitelja obično se naplaćuju po minutama (ili čak sekundama). To znači da klijenti plaćaju samo vrijeme za koje stvarno izvrše kod. Ovo je povoljno u usporedbi s tradicionalnim VM-om u oblaku, gdje je stroj većinu vremena neaktivan, ali za to morate platiti.
  3. Problem skalabilnosti je također riješen. Resursi u okvirima bez poslužitelja dodjeljuju se dinamički tako da se sustav može lako nositi s iznenadnim porastom potražnje.

Ukratko, modeli bez poslužitelja pružaju fleksibilna, jeftina, skalabilna rješenja. Čudi me da se ove ideje nismo ranije sjetili.

Je li ovo stvarno nova ideja?

Zapravo ideja nije nova. Koncept dopuštanja korisnicima da plaćaju samo za vrijeme izvođenja koda postoji otkad je uveden pod Zimki PaaS 2006. godine, a otprilike u isto vrijeme, Google App Engine je smislio vrlo slično rješenje.

Zapravo, ono što sada nazivamo modelom "bez poslužitelja" starije je od mnogih tehnologija koje se sada nazivaju "nativnim u oblaku" koje pružaju gotovo isto. Kao što je navedeno, modeli bez poslužitelja u biti su samo proširenje poslovnog modela SaaS koji postoji desetljećima.

Također je vrijedno prepoznati da model bez poslužitelja nije FaaS arhitektura, iako postoji veza između to dvoje. FaaS je u biti dio arhitekture bez poslužitelja usmjeren na računanje, ali ne predstavlja cijeli sustav.

Pa čemu sva ta pompa? Pa, kako stopa penetracije interneta u zemljama u razvoju nastavlja vrtoglavo rasti, tako raste i potražnja za računalnim resursima. Na primjer, mnoge zemlje s brzo rastućim sektorima e-trgovine jednostavno nemaju računalnu infrastrukturu za aplikacije na tim platformama. Tu na scenu stupaju plaćene platforme bez poslužitelja.

Problemi s modelima bez poslužitelja

Kvaka je u tome što modeli bez poslužitelja imaju... problema. Nemojte me krivo shvatiti: ne kažem da su loši sami po sebi ili da ne pružaju značajnu vrijednost nekim tvrtkama u određenim okolnostima. Ali glavna tvrdnja "revolucije" - da će arhitektura bez poslužitelja brzo zamijeniti tradicionalnu - nikada se ne obistinjuje.

Zato.

Ograničena podrška za programske jezike

Većina platformi bez poslužitelja dopuštaju pokretanje samo aplikacija napisanih na određenim jezicima. To ozbiljno ograničava fleksibilnost i prilagodljivost ovih sustava.

Smatra se da platforme bez poslužitelja podržavaju većinu glavnih jezika. AWS Lambda i Azure Functions također pružaju omotač za pokretanje aplikacija i funkcija na nepodržanim jezicima, iako to često ima cijenu izvedbe. Dakle, za većinu organizacija ovo ograničenje obično nije velika stvar. Ali evo u čemu je stvar. Jedna od prednosti modela bez poslužitelja trebala bi biti ta da se nejasni, rijetko korišteni programi mogu koristiti jeftinije jer plaćate samo vrijeme njihovog rada. A opskurni, rijetko korišteni programi često su napisani u... opskurnim, rijetko korištenim programskim jezicima.

To potkopava jednu od ključnih prednosti modela bez poslužitelja.

Vezanje za dobavljača

Drugi problem s platformama bez poslužitelja, ili barem načinom na koji su trenutačno implementirane, je taj što obično ne izgledaju slično na operativnoj razini. Praktički nema standardizacije u smislu funkcija pisanja, implementacije i upravljanja. To znači da je migracija značajki s jedne platforme na drugu iznimno dugotrajna.

Najteži dio prelaska na model bez poslužitelja nisu računalne značajke, koje su obično samo isječci koda, već način na koji aplikacije komuniciraju s povezanim sustavima kao što su pohrana objekata, upravljanje identitetom i redovi čekanja. Funkcije se mogu premještati, ali ostatak aplikacije ne može. To je upravo suprotno od obećanih jeftinih i fleksibilnih platformi.

Neki tvrde da su modeli bez poslužitelja novi i da nije bilo vremena da se standardizira njihov način rada. Ali one nisu toliko nove, kao što sam gore napomenuo, a mnoge druge tehnologije u oblaku, poput spremnika, već su postale mnogo praktičnije zbog razvoja i širokog usvajanja dobrih standarda.

Performanse

Računalne performanse platformi bez poslužitelja teško je izmjeriti, djelomično zato što su dobavljači skloni tajnosti podataka. Većina tvrdi da značajke na udaljenim platformama bez poslužitelja rade jednako brzo kao i na internim poslužiteljima, osim nekoliko neizbježnih problema s kašnjenjem.

Međutim, neki dokazi govore suprotno. Funkcijama koje se prethodno nisu izvodile na određenoj platformi ili se nisu izvodile neko vrijeme potrebno je neko vrijeme za inicijalizaciju. To je vjerojatno zbog toga što je njihov kod prenesen na neki manje dostupan medij za pohranu, iako - kao i kod mjerila - većina dobavljača neće vam reći o prijenosu podataka.

Naravno, postoji nekoliko načina da se to zaobiđe. Jedan je optimizacija značajki za bilo koji jezik oblaka na kojem vaša platforma bez poslužitelja radi, ali to donekle potkopava tvrdnju da su te platforme "agilne".

Drugi pristup je osigurati da se programi kritični za performanse redovito izvode kako bi bili "svježi". Ovaj drugi pristup, naravno, pomalo je u suprotnosti s tvrdnjom da su platforme bez poslužitelja isplativije jer plaćate samo vrijeme izvođenja vaših programa. Pružatelji usluga u oblaku uveli su nove načine za smanjenje hladnih startova, ali mnogi od njih zahtijevaju "scale to one" (skala na jedan), što potkopava izvornu vrijednost FaaS-a.

Problem hladnog pokretanja može se djelomično riješiti pokretanjem sustava bez poslužitelja u kući, ali to dolazi na svoju cijenu i ostaje opcija za nišu za timove s dobrim resursima.

Ne možete pokretati cijele aplikacije

Konačno, možda najvažniji razlog zašto arhitekture bez poslužitelja neće uskoro zamijeniti tradicionalne modele je taj što (općenito) ne mogu pokretati cijele aplikacije.

Točnije, s troškovne je strane nepraktičan. Vaš uspješan monolit vjerojatno ne bi trebao biti pretvoren u skup od četiri tuceta funkcija povezanih s osam pristupnika, četrdeset redova čekanja i desetak instanci baze podataka. Iz tog razloga, bez poslužitelja je prikladniji za nove razvoje. Gotovo nijedna postojeća aplikacija (arhitektura) ne može se prenijeti. Možete migrirati, ali morate početi od nule.

To znači da se u velikoj većini slučajeva platforme bez poslužitelja koriste kao dopuna pozadinskim poslužiteljima za obavljanje računalno intenzivnih zadataka. Ovo se jako razlikuje od druga dva oblika računalstva u oblaku, spremnika i virtualnih strojeva, koji nude holistički način za izvođenje udaljenog računalstva. Ovo ilustrira jedan od izazova migracije s mikroservisa na sustave bez poslužitelja.

Naravno, to nije uvijek problem. Sposobnost povremenog korištenja ogromnih računalnih resursa bez kupnje vlastitog hardvera može donijeti stvarne i trajne koristi mnogim organizacijama. Ali ako su neke aplikacije na internim poslužiteljima, a druge na arhitekturi oblaka bez poslužitelja, tada upravljanje prelazi na novu razinu složenosti.

Živjela revolucija?

Unatoč svim ovim pritužbama, ne protivim se rješenjima bez poslužitelja sama po sebi. iskreno. Samo što programeri moraju shvatiti - pogotovo ako prvi put istražuju modele bez poslužitelja - da ova tehnologija nije izravna zamjena za poslužitelje. Umjesto toga, pogledajte naše savjete i resurse na izgradnja aplikacija bez poslužitelja i odlučite kako najbolje primijeniti ovaj model.

Izvor: www.habr.com

Dodajte komentar