Programavimas

Be serverio debesyje: AWS prieš „Google Cloud“ ir „Microsoft Azure“

Jei kada nors jus pažadino 3 valandą ryto, nes serveris užsibuvo, suprasite tokio žodžio, kaip „be serverio“, patrauklumą. Mašinų konfigūravimas gali užtrukti kelias valandas, dienas ar kartais net savaites, tada jas reikia nuolat atnaujinti, kad būtų pašalintos klaidos ir saugos spragos. Šie naujinimai paprastai sukelia savo vargo, nes nauji naujinimai sukelia nesuderinamumą verčiant kitus naujinimus, arba atrodo, kad jis yra begalinis.

Nesibaigianti serverio valdymo galvos skausmo grandinė yra viena iš priežasčių, kodėl pagrindinės debesų kompanijos priėmė „be serverio“ architektūrą. Jie žino, kad viršininkas pernelyg ilgai girdėjo pasiteisinimus - tai serveris, tai tas serveris. Jei mes galėtume atsikratyti tik tų serverių, bosas turi pagalvoti.

Tai puikus pardavimo terminas, o vienintelė problema yra tai, kad tai nėra griežtai tiesa. Šios programos yra be serverių, kaip ir restoranai. Jei meniu yra tai, ko norite, jums patinka, kaip virėjas ją paruošia, atsisėsti restorane yra puiku. Bet jei norite kitokio patiekalo, jei norite skirtingų prieskonių, gerai, geriau įsigykite savo virtuvę.

„Amazon“, „Google“ ir „Microsoft“ yra trys iš didesnių kompanijų, kurios kovoja dėl būsimų programų prieglobos. Tikimasi, kad jos bus įrašytos į jų serverio API ir valdomos per jų automatikos sluoksnį. Jei platformos daro tai, ko norite - o nauji modeliai yra gana bendri - tai gali būti paprasčiausias ir greičiausias būdas sukurti savo kelių milijardų dolerių vienaragio žiniatinklio programą. Jūs rašote tik svarbiausius logikos taškus, o platforma tvarko visas detales.

Be serverio funkcijos tampa klijų ar scenarijų kalba, susiejančia visas debesies funkcijas. Kadaise gana nepriklausomi žemėlapių sudarymo arba dirbtinio intelekto įrankiai dabar susieti naudojant įvykių valdomas be serverio funkcijas. Dabar daugiau jūsų darbo gali būti išspręsta per įvairius kiekvieno debesies kampus banguojančias ir atsimušančias užklausas, kurias suaktyvina ir suaktyvina įvykių srautas. Jei norite patyrinėti mašininį mokymąsi ir naudoti jį savo duomenims analizuoti, vienas greičiausių būdų tai padaryti yra sukurti programą be serverio ir pradėti siųsti įvykius į mašininio mokymosi debesies kampelį.

Netiesioginis pažadas yra tai, kad supjaustius viską ploniau, bus lengviau dalytis ištekliais debesyje. Anksčiau visi beprotiškai kūrė naujus egzempliorius, tarkime, su „Ubuntu Server“, veikiančiu savo virtualioje mašinoje. Visi naudojo tą pačią operacinę sistemą ir kopijavo milijoną kartų toje pačioje tikroje dėžutėje, kurioje buvo apsimetama keliolika ar daugiau virtualių „Ubuntu“ dėžučių. Operacijos be serverio vengia viso to dubliavimo, todėl debesų kompiuterija yra žymiai pigesnė, ypač tiems darbams, kurie vykdomi sporadiškai ir niekada neužstrigę senoje dėžutėje, sėdinčioje jūsų oro kondicionieriaus serverio kambaryje.

Žinoma, visas šis patogumas turi paslėptą kainą. Jei kada norėsite palikti kodą ar perkelti jį į kitą svetainę, greičiausiai užstrigsite perrašydami didžiąją dalį kamino. API yra skirtingos ir nors populiarios kalbos, pvz., „JavaScript“, yra šiek tiek standartizuotos, jos yra gana artimos nuosavybei. Yra daugybė galimybių užrakinti.

Norėdamas suprasti paslaugų be serverių patrauklumą, aš praleidau šiek tiek laiko, sukurdamas keletą funkcijų ir baksnodamas aplink kaminus. Nerašiau daug kodo, bet tai buvo esmė. Daugiau laiko praleidau spustelėdamas mygtukus ir įvesdamas žiniatinklio formas, kad viską sukonfigūruočiau. Ar prisimenate, kai viską sukonfigūravome naudodami XML, o tada JSON? Dabar mes užpildome žiniatinklio formą ir debesis tai daro už mus. Vis dėlto jūs turite galvoti kaip programuotojas, kad suprastumėte, kas vyksta užkulisiuose ir nepriklauso nuo jūsų.

„AWS Lambda“

„AWS Lambda“ tampa viso „Amazon“ debesies scenarijaus sluoksniu. Tai pagrindinė sistema, leidžianti įterpti funkcijas, kurios reaguoja į įvykius, kuriuos gali generuoti beveik bet kuri didžiulės „Amazon“ debesies infrastruktūros dalis. Jei į S3 bus įkeltas naujas failas, tai gali sukelti funkciją, kuri su juo daro kažką įdomaus. Jei kai kuriuos vaizdo įrašus perkoduoja „Amazon Elastic Transcoder“, galite baigti „Lambda“ funkciją, kuri laukia, kol bus suaktyvinta. Šios funkcijos savo ruožtu gali suaktyvinti kitas „Lambda“ operacijas arba tiesiog atsiųsti kam nors naujinį.

Galite rašyti „Lambda“ funkcijas „JavaScript“ (Node.js), „Python“, „Java“, „C #“ ir „Go“. Atsižvelgiant į tai, kad šios kalbos gali įterpti daugybę kitų kalbų, visiškai įmanoma paleisti kitus kodus, pvz., „Haskell“, „Lisp“ ar net „C ++“. (Peržiūrėkite šią istoriją apie senų „C ++“ versijų sukūrimą bibliotekoje, kurią naudosite su „AWS Lambda“.)

Rašant „Lambda“ funkcijas dažnai jaučiasi daug sudėtingiau, nei tikitės, nes „Amazon“ siūlo tiek daug konfigūravimo ir optimizavimo galimybių. Nors techniškai teisinga, kad galite parašyti tik kelias kodo eilutes ir nuveikti puikių dalykų, man atrodė, kad tada turėjau skirti daugiau laiko konfigūruoti, kaip veikia kodas. Didžioji to dalis pasiekiama užpildžius formas naršyklėje, o ne įvedant tekstinius failus. Kartais atrodo, kad ką tik iškeitėme teksto rengyklę į naršyklės formą, tačiau tai yra kaina, išlaikant visą „Amazon“ suteikiamą lankstumą „Lambda“ vartotojui.

Kai kuriuos papildomus veiksmus lemia tai, kad „Amazon“ atidaro vartotojui daugiau parinkčių ir tikisi daugiau pirmųjų funkcijų rašytojo. Baigęs rašyti funkciją „Google“ ar „Microsoft“, galėčiau nukreipti savo naršyklę į tinkamą URL ir nedelsdamas jį išbandyti. „Amazon“ spustelėjo man sukonfigūruoti API šliuzą ir atverti reikiamą skylę užkardoje.

Galų gale, šis spustelėjimas prideda laikymo sluoksnį, kuris šiek tiek palengvina darbą, nei pradėti nuo teksto failo. Kai kūriau vieną funkciją, naršyklėje buvo įspėjimas: „Šioje funkcijoje yra išorinės bibliotekos“. Dar grynojo mazgo laikais tai buvo kažkas, ko tikėjausi žinoti, arba aš to išmoksiu, ieškodamas klaidos pranešimo „Google“, sukryžiuodamas pirštus ir tikėdamasis, kad atsakymas buvo ten. Dabar debesis skuba padėti.

„Amazon“ turi daugybę kitų galimybių, kurios yra beveik tokios pačios „be serverio“ kaip „AWS Lambda“, jei be serverio reiškia atleisti jus nuo serverio valdymo darbų. Jame yra elastingi įrankiai, tokie kaip „Amazon EC2 Auto Scaling“ ir „AWS Fargate“, kurie sukioja ir išjungia serverius, ir „AWS Elastic Beanstalk“, kuris paima jūsų įkeltą kodą, dislokuoja jį žiniatinklio serveriuose ir tvarko apkrovos balansavimą ir mastelį. Žinoma, naudodamiesi daugeliu šių automatikos įrankių, vis tiek esate atsakingi už serverio vaizdo kūrimą.

Vienas iš naudingesnių pasiūlymų yra „AWS Step Functions“, tam tikras be kodų srautų schemos įrankis, skirtas kurti valstybės mašinas, kad būtų galima modeliuoti, ką programinės įrangos architektai vadina darbo eiga. Dalies klausimas yra tas, kad visos be serverio funkcijos yra visiškai laisvos nuo valstybės, o tai veikia, kai jūs įgyvendinate gana pagrindinę verslo logiką, tačiau tai gali būti šiek tiek košmaras, kai jūs einate kai kuriuos klientus per kontrolinis sąrašas arba schema. Jūs nuolat einate į duomenų bazę, kad iš naujo įkeltumėte informaciją apie klientą. „Žingsnio funkcijos“ sujungia „Lambda“ funkcijas su būsena.

„Google“ debesies funkcijos ir „Firebase“

Jei jūsų tikslas yra atsikratyti vargo sukonfigūruoti serverius, „Google Cloud“ turi daugybę paslaugų, kurios suteikia įvairią laisvę nuo tokių dalykų, kaip reikia pagrindinio slaptažodžio ar net visai nenaudojant komandinės eilutės.

Pradėjusi nuo „Google App Engine“ 2008 m., „Google“ pamažu įtraukė įvairias „be serverio“ parinktis su įvairiais pranešimų ir duomenų skaidrumo deriniais. Vienas vadinamas „Google Cloud Pub / Sub“ slepia jūsų pranešimų eilę, todėl jums tereikia parašyti duomenų gamintojo ir vartotojo kodą. „Google Cloud Functions“ siūlo įvykiais pagrįstą daugelio pagrindinių produktų, įskaitant kai kuriuos palėpės įrankius ir API, skaičiavimus. Tada yra „Google Firebase“, steroidų duomenų bazė, leidžianti maišyti „JavaScript“ kodą į duomenų saugojimo sluoksnį, kuris pateikia duomenis jūsų klientui.

Iš jų man labiausiai intriguoja „Firebase“. Kai kurie teigia, kad duomenų bazės buvo originali programa be serverio, pašalinanti duomenų struktūras ir disko saugojimo darbus, kad visa informacija būtų pateikta per TCP / IP prievadą. „Firebase“ išnaudoja šią abstrakciją iki galo pridėdama „JavaScript“ kodą ir susirašinėdama pranešimais, kad atliktumėte beveik viską, ką galbūt norėtumėte padaryti su serverio pusės infrastruktūra, įskaitant autentifikavimą. Techniškai tai tik duomenų bazė, tačiau ji gali apdoroti didžiąją dalį jūsų verslo logikos ir pranešimų. Jūs tikrai galite išsisukti naudodami šiek tiek kliento HTML, CSS, „JavaScript“ ir „Firebase“.

Jums gali kilti pagunda vadinti „Firebase“ „JavaScript“ sluoksnius „saugomomis procedūromis“, kaip tai darė „Oracle“, tačiau tai nepateiks didesnio vaizdo. „Firebase“ kodas yra parašytas „JavaScript“, todėl jis veiks vietinėje „Node.js“ versijoje. Į šį sluoksnį galite įterpti didžiąją dalį verslo logikos, nes „Node“ pasaulis jau užpildytas bibliotekomis, skirtomis tvarkyti šią darbo eigą. Be to, jums patiks kliento, serverio ir dabar duomenų bazės paleidžiamo izomorfinio kodo malonumai.

Mano dėmesį patraukė sinchronizavimo sluoksnis, įmontuotas į „Firebase“. Tai sinchronizuos objektų kopijas iš duomenų bazės visame tinkle. Apgaulė yra ta, kad galite nustatyti savo kliento programą kaip dar vieną duomenų bazės mazgą, kuris prenumeruoja visus atitinkamų duomenų (ir tik atitinkamų duomenų) pakeitimus. Jei duomenys keičiasi vienoje vietoje, jie keičiasi visur. Galite išvengti visų pranešimų siuntimo problemų ir sutelkti dėmesį tik į informacijos rašymą į „Firebase“, nes „Firebase“ ją atkartos ten, kur reikia.

Nereikia sutelkti dėmesio tik į „Firebase“. Pagrindinės „Google“ debesies funkcijos yra paprastesnis būdas pritaikyti pritaikytą kodą visame „Google“ debesyje. Šiuo metu „Cloud Functions“ iš esmės yra tik „Node.js“ kodo, kuris veiks iš anksto sukonfigūruotoje „Node“ aplinkoje, rašymo galimybė. Nors likusi „Google“ debesies platforma palaiko įvairiausias kalbas - nuo „Java“ ir „C #“ iki „Go“, „Python“ ir PHP, „Cloud“ funkcijos yra griežtai ribojamos „JavaScript“ ir „Node“. Buvo užuominų, kad ateina kitos kalbos galimybės ir nenustebčiau, jei jos pasirodys netrukus.

„Google Cloud Functions“ bent jau šiuo metu nepasiekia taip giliai, kaip „AWS Lambda“. Kai baksnojau, kaip sukurti funkciją sąveikai su „Google“ dokumentais, pastebėjau, kad tikriausiai turėsiu naudoti „REST“ API ir parašyti kodą vadinamame „Apps Script“. Kitaip tariant, „Google“ dokumentų pasaulis turi savo „REST“ API, kuri buvo serverio neturinti ilgai, kol nebuvo sugalvotas madingas žodis.

Verta paminėti, kad „Google App Engine“ išlieka stipri. Pradžioje ji tiesiog pasiūlė išplėsti „Python“ programas, kad patenkintų bet kokio į svetainę ateinančio asmens poreikius, tačiau per daugelį metų ji buvo išplėsta, kad galėtų tvarkyti daugybę skirtingų kalbų. Kai sujungsite kodą į vykdomąjį failą, „App Engine“ valdys pakankamai mazgų paleidimo procesą, kad būtų galima tvarkyti jūsų srautą, didinant ar mažinant, kai jūsų vartotojai siunčia užklausas.

Ir toliau reikia nepamiršti kelių kliūčių. Kaip ir „Cloud Functions“ atveju, jūsų kodas turi būti parašytas palyginti be pilietybės ir kiekvieną prašymą turi būti įvykdytas per ribotą laiką. Tačiau „App Engine“ neišmeta visų pastolių ir nepamiršta visko tarp užklausų. „App Engine“ buvo didelė revoliucijos be serverių dalis ir ji išlieka labiausiai prieinama tiems, kurie laikosi vienos kojos atgal naudodamiesi senosios mokyklos metodu kurdami savo kaminą „Python“, PHP, „Java“, „C #“ ar „Go“.

„Microsoft Azure“ funkcijos

„Microsoft“, žinoma, dirba taip pat sunkiai, kaip ir kiti, kad įsitikintų, jog žmonės gali atlikti visus šiuos protingus be serverio dalykus ir naudodami „Azure“ debesį. Bendrovė sukūrė savo pagrindines žongliravimo įvykiais funkcijas - „Azure Functions“ - ir sukūrė keletą sudėtingų įrankių, kurie dar labiau prieinami pusiau programuotojams.

Didžiausias „Microsoft“ privalumas gali būti „Office“ programų rinkinys, buvę darbalaukio vykdomieji failai, kurie lėtai, bet užtikrintai pereina į debesį. Iš tikrųjų viena debesų pajamų apskaita „Microsoft“ pralenkė „Amazon“, iš dalies sukaupdama dalį savo „Office“ pajamų į trumpalaikę „debesų“ rubriką.

Vienas iš geriausių pavyzdžių iš „Azure Functions“ dokumentacijos rodo, kaip galima suaktyvinti debesies funkciją, kai kas nors išsaugo skaičiuoklę „OneDrive“. Staiga maži elfai debesyje atgyja ir daro tai, ką reikia skaičiuoklėje. Tai neabejotinai bus IT parduotuvių, palaikančių komandas, mėgstančias jų „Excel“ skaičiuokles (ar kitus „Office“ dokumentus), malonumas. Jie gali parašyti „Azure Functions“, kad atliktų praktiškai viską. Mes dažnai galvojame, kad HTML ir žiniatinklis yra vienintelė sąsaja su debesimis, tačiau nėra jokios priežasties, kodėl to negalima padaryti naudojant tokius formatus kaip „Microsoft Word“ ar „Excel“.

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