Zašto je revolucija bez servera u ćorsokaku

Ključne točke

  • Već nekoliko godina nam je obećano da će računarstvo bez servera uvesti novu eru bez specifičnog OS-a za pokretanje aplikacija. Rečeno nam je da će ova struktura riješiti mnoge probleme skalabilnosti. U stvari, sve je drugačije.
  • Iako mnogi gledaju bez servera kao na novu ideju, njeni korijeni sežu do 2006. godine sa pojavom Zimki PaaS-a i Google App Engine-a, od kojih oba koriste arhitekturu bez servera.
  • Četiri su razloga zašto je revolucija bez servera zastala, od ograničene podrške programskog jezika do problema sa performansama.
  • Računanje bez servera nije baš beskorisno. Ne sve. Međutim, ne treba ih smatrati direktnom zamjenom za servere. Za neke aplikacije mogu biti praktičan alat.

Server je mrtav, živeo server!

Ovo je bojni poklič revolucije bez servera. Samo brzi pogled na industrijsku štampu u posljednjih nekoliko godina i lako je zaključiti da je tradicionalni model servera mrtav i da ćemo za nekoliko godina svi koristiti arhitekture bez servera.

Kao što svi u industriji znaju, i kao što smo također istakli u našem članku o stanje računarstva bez servera, ovo je pogrešno. Unatoč mnogim člancima o zaslugama revolucija bez servera, nikada se nije dogodilo. Zapravo, pokazuju najnovija istraživanjada je ova revolucija možda došla u ćorsokak.

Neka od obećanja modela bez servera su sigurno ostvarena, ali ne sva. Ne svako.

U ovom članku želim pogledati razloge za ovo stanje. Zašto je nedostatak fleksibilnosti modela bez servera još uvijek prepreka njihovom širem usvajanju, iako ostaju korisni u specifičnim, dobro definiranim okolnostima.

Ono što su adepti računarstva bez servera obećali

Prije nego što uđemo u izazove računarstva bez servera, pogledajmo šta je ono trebalo da pruži. Obećanje revolucije bez servera bili brojni i - ponekad - vrlo ambiciozni.

Za one koji nisu upoznati s pojmom, evo kratke definicije. Računarstvo bez servera definira arhitekturu u kojoj se aplikacije (ili dijelovi aplikacija) pokreću na zahtjev u okruženjima koja se obično nalaze na daljinu. Osim toga, sistemi bez servera mogu biti smješteni kod kuće. Izgradnja otpornih sistema bez servera bila je glavna briga za sistem administratore i SaaS kompanije u posljednjih nekoliko godina, jer (tvrdi se) ova arhitektura nudi nekoliko ključnih prednosti u odnosu na "tradicionalni" klijent-server model:

  1. Modeli bez servera ne zahtevaju od korisnika da održavaju sopstvene operativne sisteme ili čak da kreiraju aplikacije kompatibilne sa određenim operativnim sistemima. Umjesto toga, programeri kreiraju zajednički kod, postavljaju ga na platformu bez servera i gledaju kako radi.
  2. Resursi u okvirima bez servera se obično naplaćuju po minutu (ili čak u sekundi). To znači da klijenti plaćaju samo za vrijeme kada stvarno pokrenu kod. Ovo je povoljno u poređenju sa tradicionalnim VM-om u oblaku, gde mašina većinu vremena miruje, ali za to morate da platite.
  3. Problem skalabilnosti je također riješen. Resursi u okvirima bez servera se dinamički dodeljuju tako da sistem može lako da se nosi sa iznenadnim porastom potražnje.

Ukratko, modeli bez servera pružaju fleksibilna, jeftina, skalabilna rješenja. Iznenađujuće je da se na ovu ideju nismo dosjetili ranije.

Je li ovo zaista nova ideja?

Zapravo, ideja nije nova. Koncept omogućavanja korisnicima da plaćaju samo za vrijeme kada se kod stvarno pokreće postoji otkako ga je uveo Zimki PaaS 2006. godine, a otprilike u isto vrijeme Google App Engine je ponudio vrlo slično rješenje.

Zapravo, ono što sada nazivamo modelom „bez servera“ starije je od mnogih tehnologija koje se sada nazivaju „native u oblaku“ koje pružaju gotovo istu stvar. Kao što je navedeno, modeli bez servera su u suštini samo produžetak SaaS poslovnog modela koji postoji već decenijama.

Također je vrijedno prepoznati da serverless nije FaaS arhitektura, iako postoji veza između njih. FaaS je u suštini računarski fokusiran deo arhitekture bez servera, ali ne predstavlja ceo sistem.

Dakle, oko čega je sva frka? Pa, kako stope penetracije interneta i dalje vrtoglavo rastu u zemljama u razvoju, potražnja za računarskim resursima također raste u isto vrijeme. Na primjer, mnoge zemlje s brzorastućim sektorima e-trgovine jednostavno nemaju računarsku infrastrukturu za aplikacije na ovim platformama. Tu dolaze plaćene platforme bez servera.

Problemi sa modelima bez servera

Kvaka je u tome što modeli bez servera imaju... probleme. Nemojte me pogrešno shvatiti: ne kažem da su one same po sebi loše ili ne daju značajnu vrijednost nekim kompanijama u nekim okolnostima. Ali glavna tvrdnja "revolucije" - da će arhitektura bez servera brzo zamijeniti tradicionalnu arhitekturu - nikada se ne ostvaruje.

Zbog toga.

Ograničena podrška za programske jezike

Većina platformi bez servera dozvoljavaju vam samo pokretanje aplikacija koje su napisane na određenim jezicima. Ovo ozbiljno ograničava fleksibilnost i prilagodljivost ovih sistema.

Smatra se da platforme bez servera podržavaju većinu glavnih jezika. AWS Lambda i Azure funkcije također pružaju omotač za pokretanje aplikacija i funkcija na nepodržanim jezicima, iako to često dolazi sa troškovima performansi. Dakle, za većinu organizacija ovo ograničenje obično nije velika stvar. Ali evo u čemu je stvar. Jedna od prednosti modela bez servera bi trebala biti da se malo poznati, rijetko korišteni programi mogu koristiti jeftinije jer plaćate samo vrijeme kada rade. A malo poznati, rijetko korišteni programi često su napisani na... malo poznatim, rijetko korištenim programskim jezicima.

Ovo podriva jednu od ključnih prednosti modela bez servera.

Vendor binding

Drugi problem sa platformama bez servera, ili barem načinom na koji se trenutno implementiraju, je to što one obično nisu slične jedna drugoj na operativnom nivou. Praktično ne postoji standardizacija u pogledu funkcija pisanja, implementacije i upravljanja. To znači da je migracija funkcija s jedne platforme na drugu izuzetno dugotrajna.

Najteži dio prelaska na model bez servera nisu računske funkcije, koje su obično samo isječci koda, već način na koji aplikacije komuniciraju sa povezanim sistemima kao što su skladištenje objekata, upravljanje identitetima i redovi čekanja. Funkcije se mogu premještati, ali ostatak aplikacije ne može. Ovo je sušta suprotnost jeftinim i fleksibilnim platformama koje su obećane.

Neki tvrde da su modeli bez servera novi i da nije bilo vremena da se standardizuje njihov rad. Ali oni nisu toliko novi, kao što sam gore naveo, i mnoge druge tehnologije u oblaku, poput kontejnera, već su postale mnogo upotrebljivije zahvaljujući razvoju i širokom usvajanju dobrih standarda.

Produktivnost

Računarske performanse platformi bez servera je teško izmjeriti, dijelom zbog toga što dobavljači teže čuvanju informacija privatnim. Većina tvrdi da funkcije na udaljenim platformama bez servera rade jednako brzo kao one na internim serverima, s izuzetkom nekoliko neizbježnih problema sa kašnjenjem.

Međutim, pojedinačne činjenice govore suprotno. Funkcijama koje prethodno nisu radile na određenoj platformi ili nisu radile neko vrijeme trebat će neko vrijeme da se inicijaliziraju. Ovo je vjerovatno zbog činjenice da je njihov kod prebačen na neki manje pristupačan medij za pohranu, iako - kao i kod benčmarka - većina dobavljača vam neće reći o migraciji podataka.

Naravno, postoji nekoliko načina da se ovo riješi. Jedan je optimizirati funkcije za bilo koji cloud jezik na kojem vaša platforma bez servera radi, ali to donekle potkopava tvrdnju da su ove platforme „agilne“.

Drugi pristup je osigurati da se programi od ključne važnosti za produktivnost izvode redovno kako bi bili svježi. Ovaj drugi pristup je, naravno, pomalo kontradiktoran tvrdnji da su platforme bez servera isplativije jer plaćate samo vrijeme koje vaši programi rade. Provajderi u oblaku uveli su nove načine za smanjenje hladnog pokretanja, ali mnogi od njih zahtijevaju "razmjer do jedan", što potkopava izvornu vrijednost FaaS-a.

Problem hladnog pokretanja može se djelimično riješiti pokretanjem sistema bez servera u kući, ali to dolazi sa svojim troškovima i ostaje niša opcija za timove sa dobrim resursima.

Ne možete pokrenuti cijele aplikacije

Konačno, možda najvažniji razlog zašto arhitekture bez servera neće uskoro zamijeniti tradicionalne modele: one (obično) ne mogu pokrenuti cijele aplikacije.

Tačnije, nepraktično je sa stanovišta troškova. Vaš uspješan monolit vjerovatno ne bi trebao biti pretvoren u skup od četiri tuceta funkcija povezanih sa osam gateway-a, četrdeset redova i desetak instanci baze podataka. Iz tog razloga, server bez servera je pogodniji za nove razvoje. Gotovo nijedna postojeća aplikacija (arhitektura) se ne može migrirati. Možete migrirati, ali morate početi od nule.

To znači da se u velikoj većini slučajeva platforme bez servera koriste kao dopuna back-end serverima za obavljanje računarski intenzivnih zadataka. Ovo ih čini veoma drugačijim od druga dva oblika cloud tehnologija – kontejnera i virtuelnih mašina – koje nude holistički način za obavljanje daljinskog računarstva. Ovo ilustruje jednu od poteškoća prelaska sa mikroservisa na sisteme bez servera.

Naravno, to nije uvijek problem. Sposobnost povremenog iskorištavanja ogromnih računarskih resursa bez potrebe za kupovinom vlastitog hardvera može donijeti stvarne, trajne koristi mnogim organizacijama. Ali kada se neke aplikacije nalaze na internim serverima, a druge na arhitekturi oblaka bez servera, upravljanje poprima novi nivo složenosti.

Živjela revolucija?

Uprkos svim ovim pritužbama, nisam protiv rješenja bez servera sama po sebi. Iskreno. Programeri samo treba da shvate – posebno ako prvi put istražuju bez servera – da tehnologija nije direktna zamena za servere. Umjesto toga, pogledajte naše savjete i resurse za kreiranje aplikacija bez servera i odlučite kako najbolje primijeniti model.

izvor: www.habr.com

Dodajte komentar