Воблачныя функцыі супраць рухавіка Kubernetes

Абноўлены жнівень 2019 года.

Кампанія Google вылічэння прапануе мноства выдатных варыянтаў. Дзве лепшыя тэхналогіі на GCP - гэта Kubernetes Engine і Cloud Functions. Абодва яны магутныя, і як распрацоўшчык, яны лёгка па змаўчанні ў Cloud Cloud, таму што гэта займае шмат адміністрацыйных работ з маіх рук. Гэтая адміністрацыйная праца, хоць і дэкларатыўныя файлы ямла, з'яўляецца важным аспектам налады Kubernetes Engine.

Першапачатковая перадумова гэтага артыкула распрацоўнік проста пытаўся ў мяне: "калі б вы выбралі Kubernetes над функцыямі хмары?". Гэта я шмат разглядаў, бо працую з абедзвюма, і таму я думаю, што найлепшы спосаб справіцца з гэтым - гэта па змаўчанні да функцый Cloud і растлумачыць выпадкі, калі Kubernetes Engine стане лепшым выбарам. Хоць я не каталогізую ўсе прычыны, вось некалькі лепшых, якія выбіраюць Kubernetes.

3 мовы не збіраюцца яго скарачаць

Пры выкарыстанні хмарных функцый на дадзены момант у вас ёсць толькі тры асяроддзя распрацоўкі, і гэта Node.js, Python і Go. Гэта неверагодная тэхналогія і яна магутная.

Kubernetes Engine прапануе вам свабоду, таму што струкі, якія вы ствараеце, - гэта ізаляванае асяроддзе, якое можа працаваць на любой мове і падчас выканання. Вы можаце быць .NET крамай і вам трэба выкарыстоўваць C #. Я забаўляў ідэю выкарыстання бібліятэк Core Foundation ад кампаніі Apple у службе. Такую паслугу трэба будзе напісаць у Swift. Гэта толькі некаторыя выпадкі, якія могуць быць звязаны з выкарыстаннем іншай мовы і набору рамак. У далейшым Cloud Functions будзе падтрымліваць больш гэтых тэхналогій, але для гэтага спатрэбіцца некалькі гадоў, перш чым яна з'явіцца ў вытворчасці.

Хуткасць

Хуткасць, і я маю на ўвазе зараз, не ў 200 мс. Гэта прынцыповая розніца. Бываюць выпадкі, калі вы проста хочаце атрымаць дадзеныя і адсунуць іх куды-небудзь. Калі воблачная функцыя не выкарыстоўваецца нейкі час, усе выпадкі гэтай функцыі будуць спыненыя. Гэта добра, што вы нічога не плаціце, калі не карыстаецеся. Аднак могуць быць выпадкі, калі проста не хочацца чакаць гэтага халоднага часу. Калі гэта не варыянт, то ў Kubernetes будзе ваша спіна, вы ўжо кластар, і вы можаце запусціць пару стручкоў для гэтай канкрэтнай службы, гатовай прыступіць да дзеяння, калі ўзнікне неабходнасць.

Цяжкая апрацоўка і вялікая нагрузка

Функцыі выдатна падыходзяць для падлучэння розных службаў разам. Аднак яны не прызначаны для цяжкіх і працяглых заданняў. У іх недахоп працэсара і памяці ў параўнанні з Compute, Kubernetes і App Engine. У іх значна больш хуткі час чакання ў 5 хвілін, а значыць, працу трэба зрабіць хутка, і вам трэба хутка вярнуцца з функцыі.

Акрамя таго, ён не спраўляецца з вялікімі нагрузкамі. Калі вы збіраецеся рабіць шмат апрацоўкі малюнкаў альбо аналізу вялікіх дадзеных на хмарнай функцыі, вы сутыкнецеся з праблемай. З Kubernetes Engine вы маеце магчымасць маштабаваць струкі на аснове розных параметраў, такіх як высокі працэсар, памяць і г.д. З дапамогай хмарных функцый у вас няма магчымасці выбіраць працэсар, а размеркаванне памяці даволі нізкае ў параўнанні з іншымі вылічальнымі службамі.

Закліканне вар'яцтва

Колькі разоў вы выклікаеце функцыю? Гэта сто ці сто тысяч разоў на дзень? Па-іншаму, калі ваша хмарная функцыя абапіраецца на трыгер базы дадзеных агнявой базы, у гэты момант варта прыняцца за воблачную функцыю. Аднак, калі вы спрабуеце стварыць службу, якая будзе правяраць электронную пошту ці проста паглынаць вялікую колькасць дадзеных, то варта разгледзець Kubernetes. Па-першае, у вас заўсёды могуць працаваць некалькі струкоў, каб скараціць час затрымкі ў службе. Па-другое, частка функцый Cloud Functions заключаецца ў тым, колькі разоў выклікаецца функцыя. З Kubernetes вы можаце маштабаваць да большай колькасці асобнікаў у пік, чым маштаб назад. Не мае значэння, калі вы звяртаецеся за паслугу дзесяць тысяч разоў, у гэты момант вы плаціце за колькасць вузлоў і струкоў, якія вы працуеце, што прывядзе да зніжэння агульных выдаткаў.

Сувязь мікрасэрвісаў

Нарэшце, у нас ёсць зносіны паміж паслугамі. Воблачныя функцыі маюць некалькі сапраўды магутных трыгераў як для Firebase, так і для GCP. Напрыклад, вы можаце наладзіць трыгер Cloud Pub / Sub або запусціць іншую функцыю, загрузіўшы файлы ў Cloud Storage. Акрамя таго, у нас ёсць трыгеры HTTP, якія карысныя для стварэння вэб-гаплікаў.

Аднак што рабіць, калі ў вас ёсць некалькі службаў, якія не трэба запускаць, а проста хочаце, каб яны размаўлялі паміж сабой? На дадзены момант размова і зносіны паміж службамі - гэта не зусім эфектыўны падыход пры выкарыстанні хмарных функцый. Падумайце толькі пра працэс разгортвання. З функцыямі Cloud гэта немагчыма, калі вы пачынаеце абнаўляць кучу паслуг у Google Cloud. Між тым, з Kubernetes вы проста загружаеце свае канфігурацыі, і Kubernetes забяспечвае правільнае асяроддзе для вас. Так, для стварэння файлаў yaml існуе значна больш працы, але потым працягваць працаваць у гэтай інфраструктуры вельмі проста.

У канчатковым рахунку, гэта залежыць ад таго, што вы будуеце і якія маеце патрэбы, але калі вы жангліруеце ідэяй выклікаць некалькі запуску функцый HTTP на аснове аднаго званка ў воблачныя функцыі, то вам варта адступіць і спытаць сябе, ці лепш Kubernetes? за 90% зносін, якія адбываюцца.

Гэты спіс не з'яўляецца вычарпальным і ён, безумоўна, адкрыты для тлумачэння. Зноў жа, гэта заснавана на вашых патрэбах кампаніі і арганізацыі. Kubernetes па-ранейшаму расце хуткімі тэмпамі, і не ва ўсіх ёсць распрацоўшчык / каманда, якая можа кіраваць праектам Kubernetes Engine. З іншага боку, магчыма, у вас ёсць шмат сэрвісаў .NET Core, якія вы хочаце разгарнуць, а Cloud Cloud не проста перарэжаце яго, таму што вам трэба выкарыстоўваць Node.js, Python або Go. Заўсёды варта зрабіць крок назад і падумаць пра розныя тэхналогіі, якія можна гуляць, і як мы можам выкарыстоўваць іх, каб яны былі максімальна прадуктыўнымі.

Джэймс Уілсан - гэта распрацоўшчык будынкаў, якія распаўсюджваюць сістэмы з выкарыстаннем Go і Google Cloud. Ён таксама аўтар Pluralsight, і вы можаце прагледзець яго курсы тут.