Serverless: Ce este și de ce este diferit
Publicat: 2019-01-11Ce este Serverless Computing?
S-ar putea să fi văzut tot hype-ul recent despre serverless în comunitatea de dezvoltatori. Deci, ce este mai exact? Vreau să spun că codul trebuie încă să ruleze undeva, așa că cum este de fapt fără server?
Tot ceea ce înseamnă este că dezvoltatorii și echipa de operațiuni nu trebuie să supravegheze, să gestioneze sau chiar să le pese de serverele reale. Acest lucru poate suna foarte similar cu cloud computing, dar există câteva diferențe cheie. Și aceste diferențe stau în principal în ceea ce nu știi față de alte modele.
Sistem de operare necunoscut!?!?
Una dintre modalitățile ușoare de a diferenția serverless de o formă de orchestrare cloud sofisticată, cum ar fi Kubernetes, este că nimeni din compania ta nu știe ce sistem de operare folosește serverul care rulează codul tău. S-ar putea să credeți că, din moment ce rulați un cod .Net, este Windows sau că, pentru că este Ruby, este pe Linux, dar în cele din urmă, nu sunteți sigur și nu are nicio consecință pentru dezvoltarea dvs.
Sunteți capabil să scrieți cod folosind un limbaj acceptat de furnizorul fără server și, atâta timp cât rămâneți în limitele casetei pe care o oferă, sunteți A-Bine, fără cunoștințe despre sistemul de operare, versiunile etc. care alimentează asta.
Și, de fapt, unul dintre punctele forte ale serverless este că, în orice moment, aplicația dvs. poate rula pe mai multe sisteme de operare diferite. Toate acestea sunt gestionate și operate de furnizorul dumneavoastră pentru dvs.
De câte servere aveți nevoie pentru a vă gestiona traficul?
Dacă puteți răspunde la această întrebare cu orice fel de presupuneri despre serverele X sau avem nevoie de procesoare Y, atunci nu faceți dezvoltare fără server.
Contractul fără server implică faptul că numărul și puterea oricărui proces de calcul este necesar pentru a alimenta aplicația dvs. nu vor fi de interes pentru dezvoltator. Nu înseamnă că nu ești taxat pentru asta, doar că nu este ceva de care tu sau echipa ta vei gestiona sau îți pasă. Furnizorii buni se ocupă de gestionarea automată a serviciului dvs., astfel încât acesta să mențină disponibilitatea și capacitatea de răspuns ridicate.
Model de facturare bazat pe calcul, stocare și rețea. Nu servere, procesoare și hard disk-uri
Văzând că nu știți ce hardware real rulează sub aplicația dvs., o nouă modalitate de facturare vine odată cu ea. Furnizorii de platforme cloud fără server facturează utilizarea măsurată a calculului, stocării și transferului în rețea. Aceasta înlocuiește alte modele de facturare care se taxează după procesor, unități de disc și conexiuni la rețea. Într-o lume fără server, ei dețin controlul asupra acelei piese și ești facturat doar pentru utilizarea exactă a acesteia pentru aplicația ta.
Acest lucru aduce calcularea mult mai aproape de modelul electricității. Compania dvs. de energie electrică vă facturează cu KWH, care este consumul contorizat de electricitate. Puterea în sine este creată de cărbune, nuclear, gaz, orice altceva. Dar facturarea este măsurată la fel, indiferent de sursă.
Inactiv la zero
Cealaltă schimbare majoră în serverless este că atunci când aplicația dvs. este nefolosită, se scalează automat la zero. Deoarece nu sunteți facturat de CPU, ci de calcul, atunci când nu îl utilizați factura dvs. este zero.
Furnizorul este întotdeauna gata să măsoare calculul după cum este necesar, dar nu este nevoie să plătiți pentru ca un server să fie pregătit pentru când este utilizat. Este pur și simplu un calcul al plății pentru al doilea de calcul consumat efectiv atunci când aplicația dvs. se execută.
Te poți gândi un pic ca la un magazin alimentar. Este treaba lor să țină magazinul aprovizionat cu lapte, astfel încât, atunci când ți-e sete, ca client, să poți intra, să cumperi lapte de băut și apoi să pleci. Nu plătești înainte de a avea nevoie de lapte și nu plătești dacă au lapte care se dă rău pentru că nimeni nu l-a cumpărat. Aceasta este tot ce treaba magazinului alimentar este să se asigure că au un inventar disponibil, având grijă să nu suprasocieze și să nu irosească laptele stricat. Tot ce știi este că au ceea ce îți dorești atunci când vrei, iar restul este simplificat departe de grija ta.
Compensații pentru serverless
Deci toată această simplificare sună destul de bine. De ce nu și-ar dori o persoană toate aceste lucruri: facturare mai simplă, responsabilitate operațională mai mică, scalare ușoară. Ei bine, ca și în cazul tuturor lucrurilor, acest lucru vine cu unele compromisuri. Deci hai să vorbim despre ele.
Înlocuiți blocarea sistemului de operare cu blocarea furnizorului de cloud
În alte modele, ai avut diverse compromisuri și limitări din cauza sistemelor de operare sau serverelor pe care a rulat codul tău. Acum că cadrele fără server descarcă această responsabilitate furnizorului, există noi constrângeri pe care trebuie să le trăiți.
În prezent, nu există un set convenit de standarde care să definească constrângeri și garanții între furnizorii de servicii. Asta înseamnă că, asemănător cu cât de dificil ar fi în trecut să muți aplicațiile de la Windows la Linux, de exemplu. Acum vă veți confrunta cu asta atunci când încercați să vă mutați aplicațiile fără server de la Google Cloud la Amazon.
Aceste companii nu oferă încă niciun cadru comun care să permită clienților să mute cu ușurință sarcinile de lucru fără server între ele. Și sincer, nu este în interesul lor să facă asta chiar acum, deoarece ar prefera să te blocheze în ofertele lor cât mai mult posibil. Așadar, trebuie să fiți foarte conștienți de faptul că ofertele timpurii fără server au multe puncte de blocare proprietare pentru a vă face dificilă trecerea din ele.
Mai puțină vizibilitate asupra performanței și costurilor
Instrumentele de scufundare în performanța codului sunt foarte bine stabilite pentru modelele de programare anterioare. Lucruri precum a afla cât de mult CPU sau RAM folosește un anumit program sunt toate obișnuite.
Cu modelul fără server, optimizările se modifică în funcție de numărul de apeluri de calcul, rețea și API pe care codul tău folosește. Pentru a fi corect, acestea sunt legate de CPU și RAM din trecut. Dar, pe măsură ce sunt îndepărtate și mai mult, aceste instrumente vor împiedica să fie la fel de utile.
Cred pe deplin că noi instrumente open-source pentru depanare și optimizare a performanței vor apărea să deservească această piață. Dar vor necesita o mai bună înțelegere a modului în care arhitectura serverless este implementată de către furnizori. Ar putea însemna că furnizorii de cloud sunt singurii capabili să ofere o vedere suficient de profundă pentru a face aceste instrumente eficiente. Și nu este în interesul lor să vă ajute să utilizați mai puține resurse, deoarece ei facturează pentru acele resurse, indiferent dacă le-ați folosit eficient sau nu.
Aplicațiile de lungă durată nu sunt punctul ideal
Pentru a obține toată flexibilitatea oferită de serverless, în general limitează dezvoltatorul de aplicații la limitări bazate pe timp pentru aceste funcții ca serviciu. Aceasta înseamnă că se optimizează pentru a permite codului dvs. să răspundă la o solicitare web în care are maximum 1 minut pentru a răspunde.
Aceste maxime de timp fix ajută furnizorul să poată îndeplini promisiunile fără server pentru tine. Ei se așteaptă să se poată deplasa în jurul sarcinii de lucru între procesoarele fizice reale și locații, după cum este necesar, pentru a oferi echipelor de dezvoltare un serviciu care se auto-scalează și se vindecă de defecțiunile echipamentelor. Sarcinile de lucru de lungă durată încalcă această presupunere. De fapt, aceasta este de obicei listată ca una dintre cerințele ofertei lor. Unde codul trebuie să fie completat în X timp sau să fie terminat.
Pentru lucruri precum solicitările web sau API-urile pentru aplicații mobile, aceste limitări nu sunt o mare problemă. Dar pentru alte cazuri de utilizare, cum ar fi codificarea video, operarea serverelor de jocuri în timp real sau soluțiile de videoconferință, aceste limitări nu sunt fezabile. În multe cazuri, puteți opera în jurul acestor limite prin utilizarea creativă a resurselor fără server, dar de obicei sunteți îndreptățit într-o soluție care vă va costa mai mult și va funcționa mult mai încet. Furnizorii de cloud vor fi bucuroși să vă ajute să faceți acest lucru, deoarece o utilizare mai mare înseamnă mai mulți dolari pentru ei. Așadar, asigurați-vă că utilizați serverless pentru aplicații web și sisteme unde se potrivește cel mai bine.