Programmēšana

Bez servera mākonī: AWS pret Google Cloud pret Microsoft Azure

Ja jūs kādreiz esat pamodis pulksten 3 no rīta, jo serveris pārcēlās uz priekšu, jūs sapratīsit tādu vārdu vārdu kā “bez servera”. Iekārtu konfigurēšana var ilgt stundas, dienas vai dažreiz pat nedēļas, un pēc tam tās ir pastāvīgi jāatjaunina, lai novērstu kļūdas un drošības caurumus. Šie atjauninājumi parasti rada savas problēmas, jo jaunie atjauninājumi rada nesaderību, liekot citiem atjauninājumiem, vai arī tas šķiet bezgalīgs.

Bezgalīga servera palaišanas galvassāpju ķēde ir viens no iemesliem, kāpēc lielākie mākoņdatošanas uzņēmumi ir izmantojuši “bez servera” arhitektūru. Viņi zina, ka priekšnieks pārāk ilgi ir dzirdējis attaisnojumus - šo serveri, šo serveri. Ja mēs spētu atbrīvoties tikai no šiem serveriem, priekšniekam jādomā.

Tas ir brīnišķīgs pārdošanas termiņš, un vienīgā problēma ir tā, ka tas nav stingri taisnība. Šīs lietotnes ir bez serveriem tāpat kā restorāni bez virtuves. Ja ēdienkartē ir tas, ko vēlaties, un jums patīk, kā pavārs to gatavo, sēdēšana restorānā ir lieliska. Bet, ja jūs vēlaties citu ēdienu, ja vēlaties dažādas garšvielas, labi, labāk iegūstiet savu virtuvi.

Amazon, Google un Microsoft ir trīs no lielākajām kompānijām, kas cīnās par nākotnes lietojumprogrammu mitināšanu, kuras, viņuprāt, tiks ierakstītas viņu servera API un pārvaldītas, izmantojot automatizācijas slāni. Ja platformas dara to, ko vēlaties, un jaunie modeļi ir diezgan vispārīgi, tie var būt vienkāršākais un ātrākais veids, kā izveidot savu tīmekļa lietotni vairāku miljardu dolāru vienradzim. Jūs rakstāt tikai izšķirošos loģikas gabalus, un platforma apstrādā visas detaļas.

Bez servera funkcijas kļūst par līmi vai skriptu valodu, kas sasaista visas mākoņa funkcijas. Kartēšanas vai AI rīki, kas kādreiz bija diezgan neatkarīgi, tagad ir sasaistīti, izmantojot notikumu virzītas bez servera funkcijas. Tagad vairāk jūsu darba var atrisināt ar pieprasījumiem, kas viļņojas un atlec cauri katra mākoņa dažādajiem stūriem, tos aktivizējot un aktivizējot notikumu plūsmai. Ja vēlaties izpētīt mašīnmācīšanos un izmantot to, lai analizētu savus datus, viens no ātrākajiem veidiem, kā to izdarīt, ir izveidot bez servera lietotni un sākt sūtīt pasākumus mākoņa mašīnmācīšanās stūrī.

Netiešais solījums ir tas, ka, sagriežot visu plānāk, ir vieglāk kopīgot resursus mākonī. Agrāk visi izmisīgi radīja jaunus gadījumus, piemēram, ar Ubuntu Server, kas darbojas savā virtuālajā mašīnā. Visi izmantoja vienu un to pašu operētājsistēmu, un tajā pašā reālajā lodziņā, kas izlikās par duci vai vairāk virtuālām Ubuntu kastēm, tas tika dublēts ziljonu reižu. Operācijas bez servera ļauj izvairīties no visas šīs dublēšanās, padarot mākoņdatošanu dramatiski lētāku, it īpaši darbiem, kas darbojas sporādiski un nekad nav īsti iestrēguši veco lodziņu, kas atrodas jūsu kondicionētajā servera telpā.

Protams, visām šīm ērtībām ir slēptas izmaksas. Ja kādreiz vēlaties pamest kodu vai pārvietot to uz citu vietni, iespējams, būsit iestrēdzis, pārrakstot lielāko daļu kaudzes. API ir atšķirīgi, un, lai gan populārām valodām, piemēram, JavaScript, ir noteikta standartizācija, tās ir diezgan tuvu īpašumtiesībām. Ir daudz iespēju bloķēšanai.

Lai saprastu serveru opciju pievilcību, es kādu laiku pavadīju, veidojot dažas funkcijas un klabinot ap kaudzēm. Es nerakstīju daudz kodu, bet tas bija punkts. Es pavadīju vairāk laika, noklikšķinot uz pogām un ierakstot tīmekļa veidlapās, lai visu konfigurētu. Vai atceraties, kad mēs visu konfigurējām ar XML un pēc tam ar JSON? Tagad mēs aizpildām tīmekļa veidlapu, un mākonis to dara mūsu vietā. Jums tomēr ir jādomā kā programmētājam, lai saprastu, kas notiek aizkulisēs un ārpus jūsu kontroles.

AWS Lambda

AWS Lambda kļūst par visa Amazon mākoņa čaulas skriptu slāni. Tā ir pamata sistēma, kas ļauj iegult funkcijas, kas reaģē uz notikumiem, kurus var ģenerēt gandrīz jebkura milzīgās Amazon mākoņu infrastruktūras daļa. Ja S3 augšupielādē jaunu failu, jūs varētu likt tai aktivizēt funkciju, kas ar to dara kaut ko interesantu. Ja kādu video pārkodē Amazon Elastic Transcoder, jums var būt funkcija Lambda, kas gaida, kad tā tiks aktivizēta, kad tā būs pabeigta. Šīs funkcijas savukārt var izraisīt citas Lambda darbības vai varbūt vienkārši nosūtīt kādam atjauninājumu.

Jūs varat rakstīt Lambda funkcijas JavaScript (Node.js), Python, Java, C # un Go. Ņemot vērā to, ka šīs valodas var iegult daudzas citas valodas, ir pilnīgi iespējams palaist citu kodu, piemēram, Haskell, Lisp vai pat C ++. (Pārbaudiet šo stāstu par mantotā C ++ apkopošanu bibliotēkā, lai to izmantotu ar AWS Lambda.)

Lambda funkciju rakstīšana bieži jūtas daudz sarežģītāka, nekā jūs gaidāt, jo Amazon piedāvā tik daudz konfigurācijas un optimizācijas iespēju. Kaut arī tehniski ir taisnība, ka jūs varat uzrakstīt tikai dažas koda rindiņas un paveikt lieliskas lietas, man šķita, ka pēc tam man bija jāpiešķir vairāk laika koda darbības konfigurēšanai. Liela daļa no tā tiek panākta, aizpildot veidlapas pārlūkprogrammā, nevis ierakstot teksta failos. Reizēm šķiet, ka mēs tikko esam mainījuši teksta redaktoru pret pārlūkprogrammas veidlapu, taču tā ir cena, saglabājot visu elastību, ko Amazon piešķir Lambda lietotājam.

Dažas no papildu darbībām ir saistītas ar to, ka Amazon atklāj lietotājam vairāk iespēju un sagaida vairāk no pirmo funkciju rakstītāju. Kad esmu pabeidzis rakstīt funkciju Google vai Microsoft, es varētu norādīt savu pārlūkprogrammu uz pareizo URL un nekavējoties to pārbaudīt. Amazon lika man noklikšķināt, lai konfigurētu API vārteju un atvērtu pareizo atveri ugunsmūrī.

Galu galā visa šī klikšķināšana pievieno turēšanas slāni, kas darbu padara nedaudz vieglāku nekā sākt ar teksta failu. Kad veidoju vienu funkciju, pārlūkprogrammā bija brīdinājums: “Šī funkcija satur ārējās bibliotēkas.” Tīrā mezgla laikos tas bija kaut kas tāds, ko man vienkārši sagaidīja zināt, vai arī es to uzzināšu, meklējot kļūdas ziņojumu Google tīklā, sakrustojot pirkstus un cerot, ka atbilde ir tur. Tagad mākonis steidzas palīgā.

Amazon ir vairākas citas iespējas, kas ir gandrīz tikpat “bez servera” kā AWS Lambda, ja bez servera nozīmē atbrīvot jūs no servera pārvaldības darbiem. Tam ir elastīgi rīki, piemēram, Amazon EC2 Auto Scaling un AWS Fargate, kas pagriež un izslēdz serverus, un AWS Elastic Beanstalk, kas paņem jūsu augšupielādēto kodu, izvieto to tīmekļa serveros un veic slodzes līdzsvarošanu un mērogošanu. Protams, izmantojot daudzus no šiem automatizācijas rīkiem, jūs joprojām esat atbildīgs par servera attēla izveidi.

Viens no noderīgākajiem piedāvājumiem ir AWS Step Functions, sava veida bez koda blokshēmas rīks valsts mašīnu izveidei, lai modelētu to, ko programmatūras arhitekti sauc par darbplūsmu. Daļa no jautājuma ir tāda, ka visām bez servera funkcijām ir jābūt pilnīgi bez stāvokļa, kaut kas darbojas, ja jūs ieviešat diezgan pamata biznesa loģiku, bet tas var būt mazliet murgs, kad jūs iet kādu klientu caur kontrolsaraksts vai blokshēma. Jūs nepārtraukti dodaties uz datu bāzi, lai atkārtoti ielādētu informāciju par klientu. Solis Funkcijas salīmē kopā Lambda funkcijas ar stāvokli.

Google mākoņa funkcijas un Firebase

Ja jūsu mērķis ir atbrīvoties no grūtībām ar serveru konfigurēšanu, pakalpojumā Google Cloud ir vairāki pakalpojumi, kas piedāvā dažādu brīvību no tādām lietām kā, piemēram, root paroles pieprasīšana vai pat komandrindas izmantošana vispār.

Sākot ar Google App Engine 2008. gadā, Google ir lēnām pievienojis dažādas iespējas bez serveriem ar dažādām ziņojumapmaiņas un datu pārredzamības kombinācijām. Viens, ko sauc par Google Cloud Pub / Sub, slēpj ziņojumapmaiņas rindu no jums, tāpēc viss, kas jums jādara, ir jāuzraksta datu ražotāja un patērētāja kods. Google mākoņa funkcijas piedāvā uz notikumiem balstītu aprēķinu daudziem galvenajiem produktiem, tostarp dažiem telšu rīkiem un API. Pēc tam ir Google Firebase, steroīdu datu bāze, kas ļauj sajaukt JavaScript kodu datu glabāšanas slānī, kas piegādā datus klientam.

No tiem Firebase man ir visintriģējošākais. Daži apgalvo, ka datubāzes bija sākotnējā bez servera lietotne, kas abstrahēja datu struktūras un diska glabāšanas darbus, lai visu informāciju piegādātu, izmantojot TCP / IP portu. Firebase izmanto šo abstrakciju līdz galam, pievienojot arī JavaScript kodu un ziņojumapmaiņu, lai veiktu gandrīz visu, ko jūs varētu vēlēties darīt ar servera puses infrastruktūru, ieskaitot autentifikāciju. Tehniski tā ir tikai datubāze, bet tā var apstrādāt lielu daļu jūsu loģikas biznesa loģikas un ziņojumapmaiņas. Jūs patiešām varat atbrīvoties, izmantojot nedaudz klienta HTML, CSS, JavaScript un Firebase.

Jums varētu rasties kārdinājums izsaukt Firebase JavaScript slāņus par “saglabātajām procedūrām”, tāpat kā to darīja Oracle, taču tam pietrūka lielāka attēla. Firebase kods ir rakstīts JavaScript, tāpēc tas darbosies vietējā Node.js versijā. Šajā slānī varat iegult lielu daļu uzņēmējdarbības loģikas, jo mezgla pasaule jau ir piepildīta ar bibliotēkām, lai apstrādātu šo darbplūsmu. Turklāt jūs izbaudīsit izomorfā koda priekus, kas darbojas klientā, serverī un tagad datu bāzē.

Daļa, kas piesaistīja manu uzmanību, bija Firebase iebūvētais sinhronizācijas slānis. Tas sinhronizēs objektu kopijas no datu bāzes visā tīklā. Triks ir tāds, ka jūs varat iestatīt klienta lietotni kā vēl vienu datu bāzes mezglu, kas abonē visas izmaiņas attiecīgajiem datiem (un tikai attiecīgajiem datiem). Ja dati mainās vienā vietā, tie mainās visur. Jūs varat izvairīties no visām ziņojumapmaiņas grūtībām un koncentrēties tikai uz informācijas rakstīšanu Firebase, jo Firebase to atkārtos tur, kur tai jābūt.

Jums nav jākoncentrējas tikai uz Firebase. Pamata Google mākoņa funkcijas ir vienkāršāka pieeja pielāgota koda iegulšanai visā Google mākonī. Pašlaik mākoņa funkcijas lielākoties ir tikai Node.js koda rakstīšanas iespēja, kas darbosies iepriekš konfigurētā mezgla vidē. Kaut arī pārējā Google mākoņa platforma atbalsta dažādas valodas - sākot no Java un C # līdz Go, Python un PHP -, mākoņa funkcijas ir stingri ierobežotas ar JavaScript un Node. Ir bijuši mājieni, ka nāk citas valodas iespējas, un es nebūtu pārsteigts, ja tie drīz parādīsies.

Google mākoņa funkcijas vismaz šajā brīdī nenonāk tik dziļi Google mākonī kā AWS Lambda. Kad es bakstījos, apskatot funkcijas veidošanu, lai mijiedarbotos ar Google dokumentiem, es atklāju, ka man, iespējams, būs jāizmanto REST API un jāraksta kods kaut kā Apps Script. Citiem vārdiem sakot, Google dokumentu pasaulei ir sava REST API, kas ilgi pirms modinātāja izveides bija bez servera.

Ir vērts atzīmēt, ka Google App Engine turpina darboties. Sākumā tā vienkārši piedāvāja izveidot Python lietojumprogrammas, lai apmierinātu ikviena, kas nāk uz vietni, pieprasījumu, taču gadu gaitā tas ir paplašināts, lai apstrādātu daudz dažādu valodu izpildlaiku. Kad kods ir apvienots izpildāmā failā, App Engine veic pietiekami daudz mezglu palaišanas procesu, lai apstrādātu jūsu trafiku, palielinot vai samazinot, kad lietotāji sūta pieprasījumus.

Joprojām jāpatur prātā daži šķēršļi. Tāpat kā ar mākoņa funkcijām, arī jūsu kods ir jāraksta samērā bezvalstnieku veidā, un katram pieprasījumam tas jāaizpilda ierobežotā laikā. Bet App Engine neizmet visas sastatnes un neaizmirst visu starp pieprasījumiem. App Engine bija liela daļa no revolūcijas bez serveriem, un tā joprojām ir vispieejamākā tiem, kas tur vienu kāju atpakaļ vecās skolas metodē, veidojot savu kaudzi Python, PHP, Java, C # vai Go.

Microsoft Azure funkcijas

Microsoft, protams, strādā tikpat smagi kā pārējie, lai pārliecinātos, ka arī visas šīs gudrās bez servera lietas cilvēki var paveikt arī ar Azure mākoni. Uzņēmums ir izveidojis savas žonglēšanas pamatfunkcijas - Azure Functions - un izveidojis dažus sarežģītus rīkus, kas pusprogrammētājiem ir vēl pieejamāki.

Vislielākā Microsoft priekšrocība var būt Office lietojumprogrammu kolekcija, kas ir bijušie darbvirsmas izpildāmie faili, kas lēnām, bet droši pāriet uz mākoņu. Patiešām, viena mākoņa ieņēmumu uzskaite Microsoft apsteidza Amazon, daļēji sakraujot daļu no Office ieņēmumiem īslaicīgā “mākoņa” rubrikā.

Viens no labākajiem piemēriem no Azure Functions dokumentācijas parāda, kā var aktivizēt mākoņa funkciju, kad kāds saglabā izklājlapu OneDrive. Pēkšņi mazie rūķīši mākonī atdzīvojas un izdara lietas izklājlapā. Tas noteikti būs gods IT veikaliem, kas atbalsta komandas, kuras mīl viņu Excel izklājlapas (vai citus Office dokumentus). Viņi var rakstīt Azure Functions, lai darītu praktiski visu. Mēs bieži domājam, ka HTML un tīmeklis ir vienīgais mākoņa interfeiss, taču nav iemesla, kāpēc to nevar izdarīt, izmantojot tādus dokumentu formātus kā Microsoft Word vai Excel.

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