Programmēšana

Kas ir bez servera? Skaidrota skaitļošana bez servera

Izstrādātāji pavada neskaitāmas stundas biznesa problēmu risināšanā ar kodu. Tad ops komandai ir pienākums pavadīt neskaitāmas stundas, vispirms izdomājot, kā iegūt kodu, kuru izstrādātāji raksta un palaiž uz visiem pieejamajiem datoriem, un pēc tam pārliecinoties, ka šie datori darbojas nevainojami. Otrā daļa patiešām ir nebeidzams uzdevums. Kāpēc gan neatstāt šo daļu kādam citam?

Pēdējo divu desmitgažu laikā daudz jauninājumu IT jomā - virtuālās mašīnas, mākoņdatošana, konteineri - ir vērsti uz to, lai jums nebūtu daudz jādomā par pamatā esošo fizisko mašīnu, kurā darbojas jūsu kods. Bezserveru skaitļošana ir arvien populārāka paradigma, kas šo vēlmi noved pie loģiskā secinājuma: izmantojot skaitļošanu bez servera, jums nav jāzina jebko par aparatūru vai OS, kurā darbojas jūsu kods, jo par to visu rūpējas pakalpojumu sniedzējs.

Kas ir skaitļošana bez servera?

Bezserveru skaitļošana ir mākoņa izpildes modelis, kurā mākoņa nodrošinātājs dinamiski piešķir un pēc tam iekasē no lietotāja tikai tos skaitļošanas resursus un krātuvi, kas nepieciešami konkrēta koda fragmenta izpildei. Protams, joprojām ir iesaistīti serveri, taču par to nodrošināšanu un uzturēšanu pilnībā rūpējas pakalpojumu sniedzējs. Kriss Munns, Amazon aizstāvis bez serveriem, 2017. gada konferencē teica, ka no komandas viedokļa, kas raksta un izvieto kodu, "vispār nav serveru, kurus pārvaldīt vai nodrošināt. Tas neietver neko, kas būtu tukšs metāls, nekas virtuāls, nekas, kas ir konteiners - viss, kas saistīts ar saimniekdatora pārvaldīšanu, resursdatora ielāpīšanu vai operēšanu ar kaut ko operētājsistēmas līmenī, jums nav jādara bez serveriem. ”

Kā skaidro izstrādātājs Maiks Robertss, šis termins savulaik ticis lietots t.s. back-end-a-service scenāriji, kur mobilā lietotne izveidotu savienojumu ar aizmugures serveri, kas pilnībā mitināts mākonī. Bet šodien, kad cilvēki runā par skaitļošanu bez serveriem vai bez servera arhitektūra, tie nozīmē funkcija kā pakalpojums piedāvājumi, kuros klients raksta kodu tikai risina biznesa loģiku un augšupielādē to pakalpojumu sniedzējam. Šis pakalpojumu sniedzējs rūpējas par visu aparatūras nodrošināšanu, virtuālo mašīnu un konteineru pārvaldību un pat tādiem uzdevumiem kā daudzsavienojums, kas bieži tiek iebūvēts lietojumprogrammas kodā.

Bez servera funkcijas ir notikumu vadīts, kas nozīmē, ka kods tiek izsaukts tikai tad, kad to aktivizē pieprasījums. Pakalpojuma sniedzējs iekasē tikai par aprēķina laiku, ko izmanto šī izpilde, nevis fiksētu ikmēneša maksu par fiziskā vai virtuālā servera uzturēšanu. Šīs funkcijas var savienot kopā, lai izveidotu apstrādes cauruļvadu, vai arī tās var kalpot kā lielākas lietojumprogrammas sastāvdaļas, mijiedarbojoties ar citiem kodiem, kas darbojas konteineros vai parastajos serveros.

Bezserveru skaitļošanas priekšrocības un trūkumi

No šī apraksta vajadzētu būt skaidriem diviem lielākajiem skaitļošanas bez servera ieguvumiem: izstrādātāji var koncentrēties uz rakstītā koda biznesa mērķiem, nevis uz infrastruktūras jautājumiem; un organizācijas maksā tikai par aprēķināšanas resursiem, ko tās faktiski izmanto ļoti detalizēti, nevis pērkot fizisku aparatūru vai nomājot mākoņa gadījumus, kas pārsvarā darbojas dīkstāvē.

Kā norāda Bernards Zelta, šis pēdējais punkts ir īpaši noderīgs notikumu virzītām lietojumprogrammām. Piemēram, jums var būt lietojumprogramma, kas lielāko daļu laika ir dīkstāvē, bet noteiktos apstākļos tai vienlaikus jāapstrādā daudzi notikumu pieprasījumi. Vai arī jums var būt lietojumprogramma, kas apstrādā datus, kas nosūtīti no IoT ierīcēm ar ierobežotu vai periodisku interneta savienojumu. Abos gadījumos tradicionālajai pieejai būtu nepieciešams nodrošināt labu serveri, kas spētu apstrādāt maksimālās darba jaudas, taču lielākoties šis serveris tiktu nepietiekami izmantots. Izmantojot bez servera arhitektūru, jūs maksājat tikai par faktiski izmantotajiem servera resursiem. Bezserveru skaitļošana būtu laba arī īpašiem pakešu apstrādes veidiem. Viens no bez servera arhitektūras izmantošanas gadījuma kanoniskajiem piemēriem ir pakalpojums, kas augšupielādē un apstrādā atsevišķu attēlu failu virkni un nosūta tos uz citu lietojumprogrammas daļu.

Varbūt visspilgtākais bez servera funkciju trūkums ir tas, ka tās ir apzināti īslaicīgas un, kā saka AlexSoft, "nav piemērotas ilgtermiņa uzdevumiem". Lielākā daļa pakalpojumu sniedzēju bez servera neļaus jūsu kodam darboties ilgāk par dažām minūtēm, un, aktivizējot funkciju, tas nesaglabā datus par iepriekš izpildītiem gadījumiem. Saistīta problēma ir tā, ka koda bez servera izveidošana var ilgt vairākas sekundes - tas nerada problēmas daudzos lietošanas gadījumos, taču, ja lietojumprogrammai ir nepieciešama zema latentuma pakāpe, jābrīdina.

Daudzi citi trūkumi, kā norāda Rohit Akiwatkar un Gary Arora, ir saistīti ar pārdevēja bloķēšanu. Lai gan ir pieejamas atvērtā koda iespējas, bez servera tirgū dominē lielie komerciālo mākoņu nodrošinātāji, kā mēs to apspriedīsim pēc brīža. Tas nozīmē, ka izstrādātāji bieži izmanto savu piegādātāju rīkus, kas apgrūtina pārslēgšanos, ja viņi kļūst neapmierināti. Tā kā liela daļa skaitļošanas bez servera pēc definīcijas notiek pārdevēja infrastruktūrā, var būt grūti integrēt bez servera kodu iekšējās izstrādes un testēšanas cauruļvados.

Bez servera piegādātāji: AWS Lambda, Azure Functions un Google Cloud Functions

Mūsdienu bezserveru skaitļošanas laikmets sākās ar 2014. gadā palaistu AWS Lambda, platformu, kas balstīta uz Amazon mākoņpakalpojumu. Microsoft 2016. gadā sekoja piemēram ar Azure Functions. Google Cloud Functions, kas bija beta versijā kopš 2017. gada, beidzot sasniedza ražošanas statusu 2018. gada jūlijā. Trim pakalpojumiem ir nedaudz atšķirīgi ierobežojumi, priekšrocības, atbalstītās valodas un veidu, kā rīkoties. Rohitam Akiwatkaram ir labs un detalizēts pārskats par atšķirībām starp trim. Darbībā ir arī IBM Cloud Functions, kura pamatā ir atvērtā koda Apache OpenWhisk platforma.

Starp visām bezserveru skaitļošanas platformām AWS Lambda ir visizcilākā, un acīmredzot tai ir bijis visvairāk laika attīstīties un nobriest. pēdējā gada laikā AWS Lambda ir papildināts ar atjauninājumiem un jaunām funkcijām.

Bez servera skursteņi

Kā tas notiek daudzās programmatūras sfērās, pasaulē bez serveriem ir notikusi attīstība kaudzes programmatūras, kas apvieno dažādus komponentus, kas nepieciešami bez servera lietojumprogrammas izveidošanai. Katra kaudze sastāv no programmēšanavaloda kurā ierakstīsit kodu, an pieteikuma ietvars kas nodrošina jūsu koda struktūru un kodu izraisa platforma sapratīs un izmantos koda izpildes uzsākšanai.

Lai gan jūs varat sajaukt un saskaņot dažādus specifiskus piedāvājumus katrā no šīm kategorijām, ir ierobežojumi atkarībā no tā, kuru pārdevēju jūs izmantojat, ar dažiem pārklāšanās gadījumiem. Piemēram, valodām AWS Lambda var izmantot Node.js, Java, Go, C # un Python, taču Azure funkcijās dabiski darbojas tikai JavaScript, C # un F #. Runājot par aktivizētājiem, AWS Lambda ir garākais saraksts, taču daudzi no tiem ir raksturīgi AWS platformai, piemēram, Amazon Simple Email Service un AWS CodeCommit; Tikmēr Google mākoņa funkcijas var aktivizēt, izmantojot vispārīgus HTTP pieprasījumus. Pols Džavorskis padziļināti aplūko katra lielā trīs piedāvājuma kaudzes.

Bez servera ietvari

Ir vērts mazliet kavēties ietvaros daļa no vienādojuma, jo tas daudz noteiks to, kā jūs galu galā izveidojat savu lietojumprogrammu. Amazon ir savs vietējais piedāvājums, atvērtā koda serveru lietojumprogrammu modelis (SAM), taču ir arī citi, no kuriem lielākā daļa ir starpplatformu un arī atvērtā koda. Vienu no populārākajām sauc par vispārīgi - bez serveriem, un uzsver, ka tā nodrošina tādu pašu pieredzi katrā atbalstītajā platformā, t.i., AWS Lambda, Azure Functions, Google Cloud Functions un IBM OpenWhisk. Vēl viens populārs piedāvājums ir Apex, kas var palīdzēt satricināt dažas valodas, kas dažkārt nav pieejamas dažiem pakalpojumu sniedzējiem.

Bez servera datu bāzes

Kā mēs jau iepriekš minējām, viena dīvainība, strādājot ar kodu bez servera, ir tāda, ka tam nav pastāvīga stāvokļa, kas nozīmē, ka lokālo mainīgo vērtības nemainās visā instancēs. Visi pastāvīgie dati, kuriem jūsu kodam ir jāpiekļūst, ir jāuzglabā citur, un galvenajiem piegādātājiem, kas ir pieejami kaudzītēs, ir visas datu bāzes, ar kurām var mijiedarboties jūsu funkcijas.

Dažas no šīm datubāzēm pašas tiek dēvētas par bez servera. Tas nozīmē, ka viņi rīkojas līdzīgi citām funkcijām bez servera, kuras esam apsprieduši šajā rakstā, ar acīmredzamu izņēmumu, ka dati tiek glabāti uz nenoteiktu laiku. Bet liela daļa vadības pieskaitāmo daļu, kas saistīta ar datu bāzes izveidošanu un uzturēšanu, tiek atstāta malā. Kā saka izstrādātājs Džeremijs Dalijs: "Viss, kas jums jādara, ir jākonfigurē kopa, un pēc tam visa apkope, ielāpīšana, dublēšana, replikācija un mērogošana tiek automātiski apstrādāti jūsu vietā." Tāpat kā ar pakalpojumu kā pakalpojumu piedāvājumu, jūs maksājat tikai par faktiski izmantoto skaitļošanas laiku, un resursi tiek virzīti uz augšu un uz leju, cik nepieciešams, lai apmierinātu pieprasījumu.

Trīs lielie serveru nodrošinātāji katrs piedāvā savas datu bāzes bez serveriem: Amazon ir Aurora Serverless un DynamoDB, Microsoft ir Azure Cosmos DB un Google ir Cloud Firestore. Tomēr šīs nav vienīgās pieejamās datubāzes. Nemanjai Novkovičai ir informācija par vairākiem piedāvājumiem.

Bez servera skaitļošana un Kubernetes

Konteineri palīdz bez servera tehnoloģijai darboties zem pārsega, taču to pārvaldīšanas vispārējās izmaksas rūpējas pārdevējs un tādējādi lietotājam neredzams. Daudzi uzskata, ka skaitļošana bez servera ir veids, kā iegūt daudzas konteineru mikropakalpojumu priekšrocības, neraizējoties par to sarežģītību, un pat sāk runāt par pasauli pēc konteinera.

Patiesībā konteineri un bez servera skaitļošana gandrīz noteikti pastāvēs daudzus nākamos gadus, un faktiski bez servera funkcijas var pastāvēt tajā pašā lietojumprogrammā kā konteineru mikropakalpojumi. Kubernetes, vispopulārākā konteineru orķestrēšanas platforma, var pārvaldīt arī bez servera infrastruktūru. Patiešām, izmantojot Kubernetes, vienā klasterī varat integrēt dažāda veida pakalpojumus.

Bez servera bezsaistē

Iespējams, ka darba sākšanas ar bez servera skaitļošanu izredzes ir nedaudz biedējošas, jo šķiet, ka jums jāreģistrējas pie pārdevēja, lai spēlētos un redzētu, kā tas darbojas. Bet nebaidieties: ir veidi, kā bezsaistes kodu palaist bezsaistē ar savu vietējo aparatūru. Piemēram, AWS SAM nodrošina vietējo funkciju, kas ļauj pārbaudīt Lambda kodu bezsaistē. Un, ja jūs izmantojat lietojumprogrammu Serverless, pārbaudiet spraudni serverless-offline - spraudni, kas ļauj vietni palaist kodu. Priecīgus eksperimentus!

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