Programavimas

Kas yra be serverio? Paaiškinta be serverio skaičiavimas

Kūrėjai praleidžia daugybę valandų spręsdami verslo problemas, susijusias su kodu. Tada operacijų komandos eilė praleisti begales valandų, pirmiausia išsiaiškinant, kaip gauti kodą, kurį kūrėjai užrašo ir veikia visuose prieinamuose kompiuteriuose, ir, antra, užtikrindami, kad tie kompiuteriai veiktų sklandžiai. Antroji dalis yra nesibaigianti užduotis. Kodėl tos dalies nepalikus kam nors kitam?

Per pastaruosius du dešimtmečius daugybė IT naujovių - virtualios mašinos, debesų kompiuterija, konteineriai - buvo sutelkta į tai, kad nereikėtų daug galvoti apie pagrindinę fizinę mašiną, kuria veikia jūsų kodas. Skaičiavimas be serverių yra vis labiau populiarėjanti paradigma, leidžianti šį norą padaryti logišką išvadą: naudojant kompiuterį be serverio nereikia žinoti nieko apie aparatinę įrangą ar OS, kurioje veikia jūsų kodas, nes tuo viskuo rūpinasi paslaugų teikėjas.

Kas yra kompiuterizavimas be serverio?

Skaičiavimas be serverio yra debesies vykdymo modelis, kuriame debesų tiekėjas dinamiškai paskirsto ir paskui apmokestina vartotoją tik skaičiavimo išteklius ir saugyklą, reikalingą tam tikram kodo fragmentui vykdyti. Natūralu, kad vis dar yra serverių, tačiau jų teikimu ir priežiūra visiškai rūpinasi paslaugų teikėjas. Chrisas Munnsas, „Amazon“ be serverių advokatas, 2017 m. Konferencijoje sakė, kad, žiūrint iš komandos, rašančios ir diegiančios kodą, „visiškai nėra serverių, kuriuos būtų galima tvarkyti ar teikti. Tai neapima nieko, kas būtų plikas metalas, nieko, kas yra virtualu, nieko, kas yra konteineris - viskas, kas apima jus valdant pagrindinį kompiuterį, pleistrą pagrindiniam kompiuteriui ar ką nors spręsti operacinės sistemos lygiu, nėra tai, ką turėtumėte daryti be serverio. “

Kaip paaiškina kūrėjas Mike'as Robertsas, kadaise šis terminas buvo naudojamas vadinamiesiems „back-end-as-a-service“ scenarijus, kai mobilioji programa prisijungs prie visiškai debesyje priglobto vidinio serverio. Tačiau šiandien, kai žmonės kalba apie kompiuterį be serverio arba a be serverio architektūra, jie reiškia funkcija kaip paslauga pasiūlymai, kuriuose klientas užrašo kodą tik sprendžia verslo logiką ir įkelia ją į paslaugų teikėją. Tas paslaugų teikėjas rūpinasi visais aparatinės įrangos teikimais, virtualių mašinų ir sudėtinių rodinių valdymu ir netgi tokiomis užduotimis, kaip daugialypis gijimas, kurie dažnai yra integruoti į programos kodą.

Be serverio funkcijos yra įvykių varomas, tai reiškia, kad kodas naudojamas tik tada, kai jį suaktyvina užklausa. Teikėjas ima tik už skaičiavimo laiką, kurį naudoja tas vykdymas, o ne fiksuotą mėnesinį mokestį už fizinio ar virtualaus serverio priežiūrą. Šios funkcijos gali būti sujungtos, kad būtų sukurtas apdorojimo vamzdynas, arba jos gali būti didesnės programos komponentai, sąveikaujantys su kitais kodais, veikiančiais konteineriuose ar įprastuose serveriuose.

Kompiuterio be serverio privalumai ir trūkumai

Iš šio aprašymo turėtų būti aiškūs du didžiausi kompiuterizavimo be serverio pranašumai: kūrėjai gali sutelkti dėmesį į savo parašyto kodo verslo tikslus, o ne į infrastruktūros klausimus; o organizacijos moka tik už apskaičiuotus išteklius, kuriuos iš tikrųjų naudoja, labai kruopščiai, užuot pirkę fizinę techninę įrangą ar nuomodami debesų egzempliorius, kurie dažniausiai būna nenaudojami.

Kaip pažymi Bernardas Goldenas, pastarasis punktas yra ypač naudingas renginiams priklausančioms programoms. Pvz., Galite turėti programą, kuri didžiąją laiko dalį neveikia, tačiau tam tikromis sąlygomis turi vienu metu apdoroti daugybę įvykių užklausų. Arba galbūt turite programą, kuri apdoroja duomenis, siunčiamus iš IoT įrenginių, turintiems ribotą ar pertraukiamą interneto ryšį. Abiem atvejais norint taikyti tradicinį metodą, reikėtų pasirūpinti dideliu serveriu, kuris galėtų apdoroti didžiausią darbo pajėgumą, tačiau tuo serveriu dažniausiai nenaudojama. Naudodami architektūrą be serverio, mokėtumėte tik už serverio išteklius, kuriuos iš tikrųjų naudojate. Be serverio skaičiavimas taip pat būtų naudingas specifinėms paketinio apdorojimo rūšims. Vienas iš kanoninių architektūros naudojimo be serverio pavyzdžių yra paslauga, įkelianti ir apdorojanti atskirų vaizdo failų serijas ir siunčianti juos į kitą programos dalį.

Bene akivaizdžiausias be serverio funkcijų trūkumas yra tas, kad jos yra tyčia trumpalaikės ir, kaip sako „AlexSoft“, „netinkamos ilgalaikėms užduotims atlikti“. Daugelis paslaugų teikėjų be serverių neleis jūsų kodui vykdyti ilgiau nei kelias minutes, o kai sukursite funkciją, jis neišlaiko jokių anksčiau paleistų egzempliorių duomenų. Susijusi problema yra ta, kad kodo be serverio sukimas gali užtrukti kelias sekundes - tai nėra problema daugeliu atvejų, tačiau jei jūsų programai reikalingas mažas delsos laikas, įspėkite.

Daugelis kitų neigiamų aspektų, kaip nurodė Rohitas Akiwatkaras ir Gary Arora, yra susiję su pardavėjo uždarymu. Nors yra atvirojo kodo variantų, be serverių rinkoje dominuoja didieji komercinių debesų tiekėjai, kaip mes aptarsime akimirksniu. Tai reiškia, kad kūrėjai dažnai naudojasi savo pardavėjų įrankiais, todėl sunku pasikeisti, jei jie nepatenkinti. Kadangi tiek daug kompiuterių be serverio pagal apibrėžimą vyksta tiekėjo infrastruktūroje, gali būti sunku integruoti be serverio kodą į vidaus kūrimo ir bandymo vamzdynus.

Tiekėjai be serverių: „AWS Lambda“, „Azure Functions“ ir „Google Cloud Functions“

Šiuolaikinis kompiuterių be serverių amžius prasidėjo 2014 m. Paleidus „AWS Lambda“ platformą, pagrįstą „Amazon“ debesų paslauga. „Microsoft“ 2016 m. Pasekė „Azure Functions“. „Google“ debesies funkcijos, kurios buvo beta versijos nuo 2017 m., Pagaliau pasiekė gamybos būseną Šiose trijose tarnybose yra šiek tiek skirtingi apribojimai, pranašumai, palaikomos kalbos ir dalykų atlikimo būdai. Rohitas Akiwatkaras gerai ir išsamiai apžvelgė skirtumus tarp trijų. Taip pat veikia „IBM Cloud Functions“, paremta atvirojo kodo „Apache OpenWhisk“ platforma.

Tarp visų serverių neturinčių skaičiavimo platformų „AWS Lambda“ yra ryškiausia ir akivaizdžiai turėjo daugiausiai laiko tobulėti ir subręsti. per pastaruosius metus „AWS Lambda“ pridėjo naujinimų ir naujų funkcijų.

Be serverio kaminai

Kaip ir daugelyje programinės įrangos sričių, pasaulyje be serverių įvyko pokyčiai kaminai programinės įrangos, apjungiančios skirtingus komponentus, reikalingus sukurti programą be serverio. Kiekvieną kaminą sudaro a programavimaskalba kad rašysite kodą, an taikymo sistema kuri suteikia jūsų kodo struktūrą ir rinkinį sukelia kad platforma supras ir naudos inicijuodama kodo vykdymą.

Nors galite maišyti ir suderinti skirtingus konkrečius pasiūlymus kiekvienoje iš šių kategorijų, yra apribojimų, priklausomai nuo to, kurį pardavėją naudojate, kai kurie sutampa. Pvz., Kalboms galite naudoti „Node.js“, „Java“, „Go“, „C #“ ir „Python“ sistemoje „AWS Lambda“, tačiau tik „JavaScript“, C # ir F # veikia natūraliai „Azure“ funkcijose. Kalbant apie trigerius, „AWS Lambda“ turi ilgiausią sąrašą, tačiau daugelis jų yra būdingi AWS platformai, pvz., „Amazon Simple Email Service“ ir „AWS CodeCommit“; Tuo tarpu „Google“ debesies funkcijas gali suaktyvinti bendrosios HTTP užklausos. Paulas Jaworskis nuodugniai išnagrinėja kiekvieno iš trijų didžiųjų aukų krūvas.

Be serverio sistemos

Verta šiek tiek pasilikti sistema dalis lygties, nes tai daug apibrėžs, kaip jūs baigsite kurti savo programą. „Amazon“ turi savo gimtąjį pasiūlymą - atvirojo kodo „Serverless Application Model“ (SAM), tačiau yra ir kitų, kurių dauguma yra įvairių platformų ir atvirojo kodo. Viena populiariausių vadinama gana paprastai „Serverless“ ir pabrėžia, kad ji suteikia tą pačią patirtį kiekvienai palaikomai platformai, t. Y. „AWS Lambda“, „Azure Functions“, „Google Cloud Functions“ ir „IBM OpenWhisk“. Kitas populiarus pasiūlymas yra „Apex“, kuris gali padėti išvilioti kai kurias kalbas, kurių tam tikri paslaugų teikėjai dar nepasiekė.

Be serverių duomenų bazės

Kaip jau minėjome aukščiau, vienas keitimas dirbant su serverio kodu yra tas, kad nėra nuolatinės būsenos, o tai reiškia, kad vietinių kintamųjų reikšmės neišlieka per momentinius veiksmus. Visi nuolatiniai duomenys, prie kurių reikia prieiti prie jūsų kodo, turi būti saugomi kitur, o didžiųjų pardavėjų paketuose prieinami trigeriai apima duomenų bazes, su kuriomis gali sąveikauti jūsų funkcijos.

Kai kurios iš šių duomenų bazių pačios vadinamos be serverio. Tai reiškia, kad jie elgiasi panašiai kaip kitos be serverio funkcijos, kurias aptarėme šiame straipsnyje, išskyrus akivaizdžią išimtį, kad duomenys saugomi neribotą laiką. Tačiau didžioji dalis vadovybės pridėtinių išlaidų, susijusių su duomenų bazių sudarymu ir priežiūra, yra atmesta. Kaip sako kūrėjas Jeremy Daly: „Viskas, ką jums reikia padaryti, tai sukonfigūruoti klasterį, tada visa techninė priežiūra, pataisymas, atsarginės kopijos, replikavimas ir mastelio keitimas bus atliekami automatiškai.“ Kaip ir funkcijų kaip paslaugų pasiūlymų atveju, jūs mokate tik už skaičiavimo laiką, kurį iš tikrųjų naudojate, o ištekliai yra sukami aukštyn ir žemyn, jei reikia, kad atitiktų paklausą.

Trys didieji paslaugų teikėjai be serverių siūlo savo duomenų bazes be serverių: „Amazon“ turi „Aurora Serverless“ ir „DynamoDB“, „Microsoft“ turi „Azure Cosmos DB“, o „Google“ - „Cloud Firestore“. Tačiau tai nėra vienintelės prieinamos duomenų bazės. Nemanja Novkovič turi informacijos apie daugiau aukų.

Kompiuteriai be serverių ir „Kubernetes“

Konteineriai padeda maitinti be serverių technologijas po gaubtu, tačiau jų valdymu pridėtinėmis sąnaudomis rūpinasi pardavėjas, todėl vartotojui jos nematomos. Daugelis mano, kad kompiuterių skaičiavimas be serverių yra būdas gauti daugybę konteinerinių mikropaslaugų pranašumų, nesusidūrus su jų sudėtingumu, ir netgi pradeda kalbėti apie pasaulį po konteinerių.

Tiesą sakant, konteineriai ir serverių neturintys kompiuteriai beveik neabejotinai egzistuos daugelį metų į priekį, o iš tikrųjų funkcijos be serverių gali egzistuoti toje pačioje programoje kaip ir konteinerių mikropaslaugos. „Kubernetes“, populiariausia konteinerių orkestravimo platforma, gali valdyti ir serverio neturinčią infrastruktūrą. Iš tiesų, naudodami „Kubernetes“, galite integruoti įvairių tipų paslaugas į vieną grupę.

Be serverio neprisijungus

Galbūt šiek tiek gąsdinsite perspektyvą pradėti skaičiuoti be serverio, nes atrodo, kad jums reikia užsiregistruoti pas pardavėją, kad galėtumėte žaisti ir pamatyti, kaip tai veikia. Bet nebijokite: Yra būdų, kaip paleisti kodą be serverio neprisijungus prie savo vietos aparatinės įrangos. Pavyzdžiui, AWS SAM teikia vietinę funkciją, leidžiančią išbandyti „Lambda“ kodą neprisijungus. Ir jei naudojate „Serverless“ programos struktūrą, patikrinkite „serverless-offline“ - papildinį, leidžiantį paleisti kodą vietoje. Laimingo eksperimentavimo!