Programiranje

Kaj je brez strežnika? Razloženo brez strežniško računalništvo

Razvijalci porabijo nešteto ur za reševanje poslovnih problemov s kodo. Nato je na vrsti ekipa ops, ki preživi nešteto ur, najprej ugotovi, kako dobiti kodo, ki jo razvijalci zapišejo in zaženejo v vseh računalnikih, ki so na voljo, in nato poskrbi, da ti računalniki delujejo brezhibno. Drugi del je resnično neskončna naloga. Zakaj ne bi tega dela prepustili nekomu drugemu?

Veliko inovacij v IT v zadnjih dveh desetletjih - navidezni stroji, računalništvo v oblaku, zabojniki - je bilo osredotočenih na to, da vam ni treba veliko razmišljati o osnovnem fizičnem računalniku, na katerem deluje vaša koda. Brez strežniškega računalništva je vse bolj priljubljena paradigma, ki to željo pripelje do logičnega zaključka: pri brezžičnem računalništvu vam ni treba vedeti, karkoli o strojni opremi ali operacijskem sistemu, na katerem deluje vaša koda, saj za vas vse skrbi ponudnik storitev.

Kaj je računalništvo brez strežnika?

Brez strežniškega računalništva je izvedbeni model za oblak, v katerem ponudnik oblaka dinamično dodeli in nato uporabniku zaračuna samo računalniške vire in pomnilnik, potreben za izvedbo določenega dela kode. Seveda še vedno obstajajo strežniki, vendar za njihovo zagotavljanje in vzdrževanje v celoti skrbi ponudnik. Chris Munns, zagovornik Amazona za brez strežnike, je na konferenci leta 2017 dejal, da z vidika ekipe, ki piše in uvaja kodo, "sploh ni strežnikov za upravljanje ali zagotavljanje. To ne vključuje ničesar, kar bi bilo golo kovino, ničesar, kar bi bilo navidezno, ničesar, kar bi bilo vsebnik - karkoli, kar bi vključevalo upravljanje gostitelja, popravljanje gostitelja ali ravnanje s čimer koli na ravni operacijskega sistema, ni nekaj, kar bi morali storiti v svet brez strežnikov. "

Kot pojasnjuje razvijalec Mike Roberts, je bil izraz nekoč uporabljen za tako imenovane back-end-as-a-service scenariji, kjer bi se mobilna aplikacija povezala z zalednim strežnikom, ki je v celoti gostovan v oblaku. Toda danes, ko ljudje govorijo o računalništvu brez strežnika, ali brezstrežniška arhitektura, pomenijo funkcija-kot-storitev ponudbe, v katero stranka napiše kodo, ki samo loteva se poslovne logike in jo naloži ponudniku. Ta ponudnik skrbi za vse strojne opreme, upravljanje navideznih strojev in vsebnikov ter celo za naloge, kot je večnitnost, ki so pogosto vgrajene v kodo aplikacije.

Brez strežniške funkcije so na podlagi dogodkov, kar pomeni, da se koda prikliče le, če jo sproži zahteva. Ponudnik zaračuna samo čas izračuna, ki ga uporabi ta izvedba, namesto pavšalne mesečne naročnine za vzdrževanje fizičnega ali navideznega strežnika. Te funkcije lahko povežete skupaj, da ustvarite cevovod za obdelavo, ali pa lahko služijo kot sestavni deli večje aplikacije, ki sodelujejo z drugo kodo, ki se izvaja v vsebnikih ali na običajnih strežnikih.

Prednosti in pomanjkljivosti računalništva brez strežnika

Iz tega opisa bi morali biti razvidni dve največji prednosti računalništva brez strežnika: razvijalci se lahko bolj kot na infrastrukturna vprašanja osredotočijo na poslovne cilje kode, ki jo pišejo; in organizacije samo zelo natančno plačujejo za računalniške vire, ki jih dejansko uporabljajo, namesto da kupujejo fizično strojno opremo ali najemajo primerke v oblaku, ki večinoma sedijo brez dela.

Kot poudarja Bernard Golden, je slednja točka še posebej koristna za aplikacije, ki temeljijo na dogodkih. Na primer, morda imate aplikacijo, ki je večino časa nedejavna, vendar mora pod določenimi pogoji obdelati več zahtev za dogodke hkrati. Morda imate aplikacijo, ki obdeluje podatke, poslane iz naprav IoT, z omejeno ali občasno internetno povezavo. V obeh primerih bi tradicionalni pristop zahteval zagotavljanje močnega strežnika, ki bi lahko obvladoval največje delovne zmogljivosti, vendar bi bil ta strežnik večino časa premalo uporabljen. Z brezstrežniško arhitekturo bi plačali le za strežniške vire, ki jih dejansko uporabljate. Brez strežniškega računalništva bi bilo dobro tudi za posebne vrste paketne obdelave. Eden od kanoničnih primerov uporabe strežniške arhitekture je storitev, ki naloži in obdela vrsto posameznih slikovnih datotek in jih pošlje drugemu delu aplikacije.

Morda je najbolj očitna pomanjkljivost brezstrežniških funkcij ta, da so namerno kratkotrajne in, kot pravi AlexSoft, "neprimerne za dolgoročne naloge". Večina ponudnikov brez strežnikov ne bo dovolila, da se vaša koda izvede več kot nekaj minut, in ko zavrtite funkcijo, ne zadrži podatkov s stanjem iz predhodno zagnanih primerkov. S tem povezana težava je, da lahko strežniška koda traja tudi nekaj sekund, da se zavrti - kar ni težava za številne primere uporabe, če pa vaša aplikacija zahteva majhno zakasnitev, bodite opozorjeni.

Številne druge slabosti, kot sta poudarila Rohit Akiwatkar in Gary Arora, so povezane z zaklepanjem prodajalcev. Čeprav so na voljo odprtokodne možnosti, na trgu brez strežnikov prevladujejo veliki komercialni ponudniki oblakov, o čemer bomo razpravljali čez trenutek. To pomeni, da razvijalci pogosto uporabljajo orodja svojih prodajalcev, zaradi česar je težko zamenjati, če postanejo nezadovoljni. In ker toliko računalništva brez strežnika poteka po definiciji na dobaviteljevi infrastrukturi, je težko brez strežniške kode vključiti v interni cevovod za razvoj in testiranje.

Ponudniki brez strežnikov: AWS Lambda, Azure Functions in Google Cloud Functions

Sodobna doba računalništva brez strežnikov se je začela z uvedbo AWS Lambda, platforme, ki temelji na Amazonovi storitvi v oblaku, leta 2014. Microsoft je sledil zgledu Azure Functions leta 2016. Google Cloud Functions, ki je bila v različici beta od leta 2017, je končno dosegla proizvodni status julija 2018. Tri storitve imajo nekoliko različne omejitve, prednosti, podprte jezike in načine delovanja. Rohit Akiwatkar ima dober in podroben pregled razlik med tremi. V teku je tudi IBM Cloud Functions, ki temelji na odprtokodni platformi Apache OpenWhisk.

Med vsemi brezžičnimi računalniškimi platformami je AWS Lambda najvidnejša in je imela očitno največ časa za razvoj in zorenje. ima v zadnjem letu dodane posodobitve in nove funkcije, dodane AWS Lambda.

Skladi brez strežnika

Kot v mnogih področjih programske opreme je tudi svet brez strežnikov videl razvoj skladov programske opreme, ki združuje različne komponente, potrebne za izdelavo brezstrežniške aplikacije. Vsak kup je sestavljen iz a programiranjejezik da boste kodo napisali v, aplikacijski okvir ki zagotavlja strukturo za vašo kodo in nabor sprožilci ki jo bo platforma razumela in uporabila za sprožitev izvajanja kode.

Medtem ko lahko v vsaki od teh kategorij kombinirate različne posebne ponudbe, obstajajo omejitve, odvisno od ponudnika, ki ga uporabljate, pri čemer se nekatere prekrivajo. Na primer, za jezike lahko v AWS Lambda uporabite Node.js, Java, Go, C # in Python, vendar samo funkcije JavaScript, C # in F # delujejo v Azure funkcijah. Kar zadeva sprožilce, ima AWS Lambda najdaljši seznam, vendar so mnogi izmed njih specifični za platformo AWS, kot sta Amazon Simple Email Service in AWS CodeCommit; Google Cloud Functions medtem lahko sprožijo splošne zahteve HTTP. Paul Jaworski je poglobljeno pregledal sklade za vsako od treh velikih ponudb.

Brezstrežniški okviri

Vredno se je malo zadržati na okvir del enačbe, saj bo to veliko opredelilo, kako na koncu gradite svojo aplikacijo. Amazon ima svojo lastno ponudbo, odprtokodni brezsržni aplikacijski model (SAM), obstajajo pa tudi drugi, ki so večinoma medplatformni in tudi odprtokodni. Eden najbolj priljubljenih se imenuje, precej splošno, brez strežnika in poudarja, da ponuja enako izkušnjo vsaka podprta platforma, to je AWS Lambda, Azure Functions, Google Cloud Functions in IBM OpenWhisk. Druga priljubljena ponudba je Apex, ki lahko pomaga, da nekateri jeziki, ki sicer niso na voljo pri nekaterih ponudnikih, postanejo neskladni.

Brez strežniške baze podatkov

Kot smo omenili zgoraj, je ena od domislic dela s kodo brez strežnika ta, ki nima trajnega stanja, kar pomeni, da vrednosti lokalnih spremenljivk ne obstajajo med instantacijami. Vse trajne podatke, do katerih mora imeti koda dostop, je treba shraniti drugje, sprožilci, ki so na voljo v skladih za glavne prodajalce, pa vključujejo baze podatkov, s katerimi lahko vaše funkcije komunicirajo.

Nekatere od teh baz podatkov so same imenovane brez strežnika. To pomeni, da se obnašajo podobno kot druge brezstrežniške funkcije, o katerih smo razpravljali v tem članku, z očitno izjemo, da se podatki hranijo za nedoločen čas. Toda velik del upravnih stroškov, vključenih v zagotavljanje in vzdrževanje baze podatkov, je zavržen. Kot pravi razvijalec Jeremy Daly, "Vse, kar morate storiti, je konfiguriranje grozda, nato pa se za vas samodejno obdelajo vsa vzdrževanja, popravki, varnostne kopije, kopiranje in skaliranje." Tako kot pri ponudbah funkcije kot storitve plačate samo čas izračuna, ki ga dejansko porabite, viri pa se vrtijo navzgor in navzdol po potrebi, da se ujemajo s povpraševanjem.

Veliki trije ponudniki brez strežnikov ponujajo svoje baze podatkov brez strežnikov: Amazon ima Aurora Serverless in DynamoDB, Microsoft Azure Cosmos DB in Google Cloud Firestore. To pa niso edine baze podatkov, ki so na voljo. Nemanja Novković ima informacije o več ponudbah.

Brez strežniškega računalništva in Kubernetes

Zabojniki pomagajo poganjati brezpostrežno tehnologijo pod pokrovom, vendar za režijsko upravljanje z njimi skrbi prodajalec in je tako uporabniku neviden. Mnogi na računalništvo brez strežnikov gledajo kot na način, kako izkoristiti številne prednosti mikroservisov v zabojnikih, ne da bi se morali spoprijeti z njihovo zapletenostjo, in celo začnejo govoriti o svetu po kontejnerjih.

V resnici bodo kontejnerji in računalništvo brez strežnikov skoraj zagotovo sobivali še vrsto let, v resnici pa lahko funkcije brez strežnika obstajajo v isti aplikaciji kot vsebinske mikro storitve. Kubernetes, najbolj priljubljena platforma za orkestracijo zabojnikov, lahko upravlja tudi brezstrežniško infrastrukturo. Dejansko lahko s Kubernetesom integrirate različne vrste storitev v eno skupino.

Brez strežnika brez povezave

Morda se vam zdi, da bi se lahko začeli ukvarjati z računalništvom brez strežnika, saj se zdi, da bi se morali prijaviti pri prodajalcu, da bi se poigrali in videli, kako to deluje. Toda ne bojte se: kode brez strežnika lahko brez povezave zaženete na svoji lokalni strojni opremi. Na primer, AWS SAM ponuja lokalno funkcijo, ki omogoča preskušanje Lambda kode brez povezave. Če uporabljate ogrodje aplikacij Serverless, si oglejte vtičnik brez povezave brez povezave, ki vam omogoča lokalno zagon kode. Veselo eksperimentiranje!

$config[zx-auto] not found$config[zx-overlay] not found