Funksionet në cloud vs Kubernetes Engine

Përditësuar në gusht 2019.

Përllogaritja e llogaritjes së Google ofron shumë zgjedhje të shkëlqyera. Dy nga teknologjitë më të mira në GCP janë Kubernetes Engine dhe Funksionet Cloud. Të dy janë të fuqishëm dhe si një zhvillues është e thjeshtë të paracaktoni për Funksionet Cloud sepse kërkon shumë punë administrative nga duart e mia. Kjo punë administrative, megjithëse skedarët deklarues të yaml është një aspekt i rëndësishëm për konfigurimin e Kubernetes Engine.

Premisa origjinale për këtë artikull ishte një zhvillues thjesht duke më pyetur mua, "kur do të zgjidhni Kubernetes mbi Funksionet në Re?". Shtë një pyetje që unë e kam konsideruar shumë veten që nga puna me të dyja këto, dhe kështu që unë mendoj se mënyra më e mirë për të trajtuar këtë është të paracaktoni për Funksionet Cloud dhe të shpjegoni rastet kur Kubernetes Engine do të ishte një zgjedhje më e mirë. Ndërsa nuk bëj katalog për çdo arsye, këtu janë disa nga kryesorët që zgjedhin Kubernetes.

3 gjuhë nuk do ta shkurtojnë atë

Kur përdorni Funksionet Cloud për momentin ju keni vetëm tre ambiente zhvillimi për të zgjedhur dhe kjo është Node.js, Python dhe Go. Kjo është një teknologji e jashtëzakonshme dhe është e fuqishme.

Kubernetes Engine ju ofron liri sepse pods që po krijoni janë mjedise të izoluara që mund të drejtojnë çdo gjuhë dhe kohë pune. Ju mund të jeni një dyqan. NET dhe duhet të shfrytëzoni C #. Kam argëtuar idenë e përdorimit të bibliotekave të Fondacionit Core nga Apple në një shërbim. Ky shërbim do të duhet të shkruhet në Swift. Këto janë vetëm disa nga rastet që mund të përfshijnë përdorimin e një gjuhe tjetër dhe kornizash të ndryshme. Në të ardhmen, Funksionet në Re do të mbështesin më shumë nga këto teknologji, por kjo do të zgjasë mjaft vite para se të jetë në prodhim.

shpejtësi

Shpejtësia, dhe dua të them tani, jo në 200 ms. Ky është një ndryshim thelbësor. Ka raste kur thjesht doni të merrni të dhëna dhe t'i shtyni diku. Nëse një funksion Cloud nuk përdoret për ca kohë, të gjitha instancat e këtij funksioni janë mbyllur. Kjo është një gjë e mirë, ju nuk po paguani asgjë nëse nuk jeni duke e përdorur atë. Sidoqoftë, mund të ketë raste kur thjesht nuk doni të prisni atë kohë të fillimit të ftohtë. Nëse kjo nuk është një opsion, atëherë Kubernetes do të ketë shpinën, ju tashmë jeni një grup dhe mund të keni një palë dyshe që konkurrojnë për atë shërbim të veçantë të gatshëm për t'u hedhur në veprim kur lind nevoja.

Përpunim i rëndë dhe ngarkesa të mëdha pune

Funksionet janë të shkëlqyera për lidhjen e shërbimeve të ndryshme së bashku. Sidoqoftë, ato nuk janë të destinuara për detyra të rënda ose të gjata. Ata janë të shkurtër në CPU dhe Memory në krahasim me Compute, Kubernetes dhe App Engine. Ata kanë një kohë shumë më të shpejtë të kohës në 5 minuta që do të thotë se puna duhet të bëhet shpejt dhe ju duhet të ktheheni nga funksioni shpejt.

Plus, nuk merret mirë me ngarkesa të rënda. Nëse do të bëni shumë përpunim të figurave ose analizë të madhe të të dhënave për një funksion re, do të keni probleme. Me Kubernetes Engine ju keni mundësinë të shkallëzoni podat bazuar në parametra të ndryshëm si CPU të lartë, memorie, etj. Me funksione cloud nuk keni mundësinë të zgjidhni CPU dhe alokimi i kujtesës është mjaft i ulët në krahasim me shërbimet e tjera të llogaritjes.

Ocmenduri e thirrjes

Sa herë jeni duke thirrur në funksion? A është njëqind e njëqind mijë herë në ditë? Shtë e ndryshme nëse funksioni juaj i cloud mbështetet në një bazë të dhënash baze zjarri, në atë pikë ia vlen të vendoseni për Funksionin Cloud. Sidoqoftë, nëse po përpiqeni të ndërtoni një shërbim që do të vlejë për email ose thjesht do të hidhni një sasi të madhe të të dhënave, ia vlen të konsideroni Kubernetes. Së pari, gjithmonë mund të keni disa pod në mënyrë që të zvogëloni çdo vonesë në shërbim. Së dyti, me Funksionet Cloud pjesë e çmimit është sa herë thirret një funksion. Me Kubernetes ju jeni në gjendje të shkallëzoni deri në më shumë raste gjatë kohërave të pikut sesa shkalla të kthehet poshtë. Nuk ka rëndësi nëse shërbimi juaj është thirrur dhjetë mijë herë, në këtë pikë ju po paguani për numrin e nyjeve dhe kutive që po ekzekutoni, gjë që do të zvogëlojë kostot e përgjithshme.

Komunikim Mikroservice

Më në fund, kemi komunikim shërbim-për-shërbim. Funksionet në re kanë disa shkaktues vërtet të fuqishëm si për Firebase ashtu edhe për GCP. Për shembull, ju mund të konfiguroni një Cloud Pub / Sub nxitës ose të nxisni një funksion tjetër duke ngarkuar skedarë në Cloud Storage. Përveç kësaj, ne kemi shkaktues HTTP të cilat janë të dobishme për krijimin e lidhjeve në internet.

Sidoqoftë, çfarë nëse keni disa shërbime që nuk duhen shkaktuar, por thjesht dëshironi që ata të flasin me njëri-tjetrin? Për momentin biseda dhe komunikimi midis shërbimeve nuk është me të vërtetë një qasje efektive kur përdorni Funksionet në Re. Mendoni vetëm për procesin e vendosjes. Me Funksionet në re kjo është e rëndë pasi filloni të azhurnoni një bandë shërbimesh në Google Cloud. Ndërkohë, me Kubernetes thjesht po ngarkoni konfigurimet tuaja dhe Kubernetes po siguron që mjedisi po funksionon siç duhet për ju. Po ka shumë më tepër punë përpara për të krijuar skedarët yaml, por atëherë është jashtëzakonisht e thjeshtë ta mbash atë infrastrukturë të funksionojë.

Në fund të fundit, varet nga ajo që po ndërtoni dhe cilat janë nevojat tuaja, por nëse jeni duke kërkuar ide të thirrjes së funksioneve të shumëfishta HTTP bazuar në një thirrje në Funksionet tuaja në Re, atëherë duhet të tërhiqeni dhe të pyesni veten nëse Kubernetes është një mundësi më e mirë për ndërveprimin 90% që po ndodh.

Kjo listë nuk është shteruese dhe është padyshim e hapur për interpretim. Përsëri, bazohet në nevojat tuaja si kompani dhe organizatë. Kubernetes është ende në rritje me një ritëm të shpejtë dhe jo të gjithë kanë një zhvillues / ekip në dorë që mund të menaxhojë një projekt Kubernetes Engine për ta. Nga ana tjetër, ndoshta keni shumë shërbime. NET thelbësore që doni të vendosni dhe Funksionet në cloud thjesht nuk do t'i shkurtojnë sepse duhet të përdorni Node.js, Python ose Go. Gjithmonë ia vlen të hedhim një hap prapa dhe të mendosh për teknologjitë e ndryshme në lojë dhe se si mund t'i bëjmë ata të jenë sa më produktivë të jetë e mundur.

James Wilson është një ndërtues që ndërton sisteme të shpërndara duke përdorur Go dhe Google Cloud. Ai është gjithashtu një autor Pluralsight dhe ju mund t'i shihni kurset e tij këtu.