Архітэктурныя праекты ў мінулым часта былі маналітнымі і не мелі магчымасці кіравання, маштабаванасці і манеўранасці. У гэтай сітуацыі кампаніям трэба будзе разгарнуць поўную праграму на адзіночным серверы прыкладанняў, які працуе на адзіночным кампутары.
Часам уся база дадзеных можа быць усталявана ў адной сістэме. Нават пасля выканання ўсяго гэтага праблема проста прывядзе да выключэння праграмы, перапыніўшы ўсе дзеянні.
Вынікам стаў бясконцы цыкл кадавання, разгортвання і ліквідацыі непаладак, які знізіў прадукцыйнасць бізнесу.
Але калі архітэктурныя ідэі змяніліся, галіна ўбачыла рэзкі пераварот, які прывёў да з'яўлення дзвюх асноўных архітэктур, вядомых як бессерверная і мікрасэрвісы. Абодва маюць важкія аргументы для выкарыстання ў маштабуемых і гнуткіх сістэмах.
Абодва надаюць перавагу бяспецы, але падыходзяць па-рознаму. Уладальнікі прадпрыемстваў рэгулярна сумняваюцца, аднолькавыя яны ці не.
Які з іх выбраць, калі яны адрозніваюцца, каб атрымаць яшчэ больш дзіўныя перавагі? Гэты артыкул дапаможа нам даведацца.
Што такое мікрасэрвісы?
Архітэктурны шаблон праектавання, вядомы як мікрасэрвісы, дзеліць больш буйное прыкладанне на некалькі меншых, адкуль і назва. Гэтаму цалкам супрацьстаіць маналітная канструкцыя, у якой увесь функцыянал змешчаны ў адным блоку.
Давайце скарыстаемся прыкладам прыкладання для інтэрнэт-крам, каб дапамагчы нашаму разуменню. Знайшоўшы патрэбны тавар(ы), спажывец дадае яго ў кошык і робіць заказ.
Інтэрфейсы прыкладнога праграмавання (API) злучаюць некалькі службаў, якія працуюць незалежна адзін ад аднаго (API). Мікрасэрвісы забяспечваюць такія функцыі, як кошык для пакупак, працэс афармлення заказу і прадукт.
Укараненне мікрасэрвісаў можа ажыццяўляцца рознымі метадамі. Кожны мікрасэрвіс мае асноўныя кампаненты, неабходныя для незалежнага функцыянавання, уключаючы ўласную базу дадзеных, бібліятэкі і шаблоны.
Па сутнасці, ён прытрымліваецца прынцыпаў SOA (сэрвісна-арыентаванай архітэктуры), якія даюць карыстальніку магчымасць ствараць новыя прыкладанні і запускаць розныя прыкладанні незалежна адзін ад аднаго.
DevOps падзяляе ўсе функцыі прыкладання на больш дробныя прыкладанні або службы, якія могуць працаваць самастойна, працягваючы працаваць як прыкладанне ў цэлым. Перад разгортваннем кожны з гэтых мікрасэрвісных прыкладанняў ствараецца і функцыянальна тэстуецца.
Што такое бессерверная мадэль?
У бессервернай парадыгме знешні пастаўшчык хмарных паслуг адказвае за кіраванне серверам. Распрацоўшчыкам проста трэба патурбавацца аб кодзе; пастаўшчык паслуг будзе клапаціцца аб абнаўленнях бяспекі, балансіроўка нагрузкі, кіраванне ёмістасцю, маштабаванасць, вядзенне часопісаў і маніторынг.
Усё прыкладанне можа быць запушчана з выкарыстаннем бессервернай архітэктуры або толькі яго частка. Як толькі код праграмы запускаецца, сервер размяркоўвае яму рэсурсы і вызваляе іх, калі праграма больш не выкарыстоўваецца, таму яна патрабуецца толькі тады, калі праграма актыўна выкарыстоўваецца.
Уладальнік праграмы спаганяе плату толькі за той час, пакуль праграма выкарыстоўваецца. Кампаніі, якія займаюцца воблачнымі паслугамі, прадастаўляюць Backend-as-a-Service (BaaS) і Function-as-a-Service (FaaS).
BaaS прапануе загадзя створаныя функцыі, таму распрацоўшчыку проста трэба засяродзіцца на інтэрфейсе. Ён рэдка выкарыстоўваецца з-за абмежаваных магчымасцей наладжвання і кантролю, якія ён прапануе.
FaaS, аднак, з'яўляецца больш гнуткім, паколькі распрацоўшчыкі могуць ствараць як пярэдні, так і бэк-энд, працягваючы выконваць прыкладанне на аддаленым серверы. З дапамогай FaaS прыкладанне можа быць створана як набор функцый.
Кожная функцыя мае мэту і ініцыятыўны фактар. Функцыя не можа працаваць пастаянна; звычайна яно часовае і спыняецца, як толькі ў ім больш не патрабуецца.
Бессерверныя супраць мікрасэрвісаў
Дэцэнтралізаваная праграма, якая была падзелена на некалькі меншых кампанентаў, таксама вядомых як службы, называецца архітэктурай мікрасэрвісаў. Усе яны нясуць адказнасць за тое, каб адна канкрэтная задача была выканана дасканала.
Мікрасэрвісы вельмі спецыялізаваныя і могуць бездакорна рабіць толькі адно. Кожная архітэктура мае сваю стратэгію вырашэння праблем. Доўгатэрміновыя выпраўленні даступныя з мікрасэрвісамі.
Кожны сэрвіс можа функцыянаваць бесперапынна і кругласутачна. Гэта выдатны доўгатэрміновы адказ для каманд, якія павялічваюцца.
З іншага боку, функцыі бессерверных прыкладанняў сканцэнтраваны на павышэнні эфектыўнасці кода. Функцыі доўжацца не так доўга, як мікрасэрвісы. Яны пачынаюць дзейнічаць толькі ў адказ на пэўны ўваход або сітуацыю.
Паколькі бессерверная архітэктура кіруецца падзеямі, функцыя не будзе працаваць, калі няма трыгера. Праграма не выкарыстоўвае больш працэсара, чым неабходна, і каманды могуць зэканоміць грошы на вылічэнні і месцы для захоўвання дадзеных дзякуючы гэтай эфектыўнай метадалогіі распрацоўкі.
Акрамя гэтых асноўных варыяцый, дзве канструкцыі таксама адрозніваюцца іншымі спосабамі.
Давайце засяродзімся на некалькіх ключавых меркаваннях пры прыняцці рашэння аб выкарыстанні мікрасэрвісаў або бессерверных вылічэнняў.
функцыі
Функцыі часовыя і выконваюцца толькі тады, калі іх патрабуе пэўная сітуацыя. Яны больш кампактныя і зграбныя.
Мікрасэрвіс можа кіраваць некалькімі звязанымі аперацыямі адначасова, тады як функцыя адказвае выключна за адно дзеянне.
Адзін мікрасэрвіс можа выконваць некалькі функцый.
Час выканання
Бессерверныя функцыі маюць кароткі час выканання. Працягласць працы пэўнай функцыі залежыць ад пастаўшчыка.
Напрыклад, функцыя можа працаваць на AWS Lambda на працягу 15 хвілін. Гэта звязана з тым, што функцыі па сваёй прыродзе з'яўляюцца кароткімі працэдурамі, якія не павінны спажываць шмат аператыўнай памяці.
Спецыфікацыі пастаўшчыка для часу выканання, захоўвання і аператыўнай памяці не з'яўляюцца абмежаваннем для мікрасэрвісаў. З-за гэтага яны больш падыходзяць для складанай, доўгатэрміновай дзейнасці, якая патрабуе захоўвання і апрацоўкі велізарных аб'ёмаў даных.
IT Operations
Стварэнне камандных рэсурсаў неабходна для мікрасэрвісаў. Задачы маніторынгу, разгортвання, падтрымкі і абслугоўвання выконваюцца ўнутранай або знешняй камандай. Каманда цалкам адказвае за падтрымку архітэктуры, апрацоўку яе вылічэнняў і забеспячэнне яе бяспекі.
Наадварот, бессерверная архітэктура залежыць ад старонняга пастаўшчыка. Бізнэсу не патрабуецца ствараць, абараняць і кіраваць уласным серверным месцам. Усе ўнутраныя функцыі апрацоўваюцца воблачным пастаўшчыком.
Гэтая стратэгія можа знізіць выдаткі на праект, пазбягаючы платы за найм і ўступленне, платы за захоўванне і пакупкі абсталявання.
Каштаваць
Першапачатковы кошт стварэння мікрасэрвісаў вышэй. Каб завяршыць праект, патрабуецца некалькі каманд, і патрэбны час і дбайная падрыхтоўка, каб усталяваць адносіны паміж рознымі кампанентамі.
Стварэнне і абслугоўванне мікрасэрвісаў даражэйшае ў выніку залежнасці ад унутраных рэсурсаў і дапамогі.
Аднак у гэтай стратэгіі ёсць перавагі. Бізнэс не абапіраецца на знешнія планы і не падвяргаецца небяспецы блакіроўкі пастаўшчыка.
Магчымасць скарачэння выдаткаў - галоўная канкурэнтная перавага бессервернай архітэктуры. Кампаніі, якія выкарыстоўваюць бессерверную архітэктуру, выйграюць ад аб'яднання рэсурсаў.
Паколькі яны падзяляюць свае серверы паміж некалькімі кліентамі, іншыя пастаўшчыкі могуць прапанаваць больш нізкія цэны на падпіску.
Акрамя таго, вы эканоміце на выдатках на кадры, таму што вам не трэба наймаць апаратных і серверных спецыялістаў.
Калі вы павінны выкарыстоўваць мікрасэрвісы супраць бессервернай архітэктуры
Мікрасэрвісы - лепшы варыянт, калі канфідэнцыяльнасць - ваш галоўны прыярытэт
Паслугі бессервернай архітэктуры могуць быць не ідэальным выбарам, калі вы абменьваецеся інфармацыяй. Прыкладанне можа мець сур'ёзныя праблемы.
Форма кіраванага або сумеснага хостынгу - воблачны хостынг.
Такім чынам, вы зможаце заўважыць, што вы не адзіны, хто выкарыстоўвае рэсурсы старонніх пастаўшчыкоў. Паколькі гэтая акалічнасць датычыцца «мульты-арандатараў», а не «адных арандатараў», вашы даныя ў гэтым выпадку не цалкам абаронены.
Інфармацыя і даныя, якія належаць іншаму арандатару, бачныя і даступныя аднаму арандатару. Акрамя таго, малаверагодна, што вы будзеце пастаянна спажываць рэсурсы ад аднаго пастаўшчыка. Іх можа быць вялікая колькасць.
Такім чынам, магчымасць кантраляваць і наладжваць увесь працэс будзе складаней са зменай пастаўшчыка.
Выкарыстоўвайце мікрасэрвісы, калі хочаце, каб ваша спадчына захавалася.
Паслугі бессервернай архітэктуры не будуць працаваць, калі інфраструктура старой сістэмы павінна быць на месцы.
Хуткасць і кошт - два аспекты бессервернай архітэктуры, якія працуюць добра, але не адзіныя.
Нягледзячы на тое, што бессерверная сістэма даволі дэталёвая, яна несумяшчальная з значнай існуючай кодавай базай з-за такой дэталёвасці.
Іншымі словамі, калі ў вас ёсць састарэлая сістэма, гэта занадта вялікі скачок. Такім чынам, пераважней выбраць стратэгію Microservices.
Калі вы стартап, выбар без сервераў - гэта шлях.
Лепшы выбар для бессервернай архітэктуры - калі вы з'яўляецеся заснавальнікам стартапа. Бессерверная архітэктура забяспечыць вам самы хуткі і хуткі выхад на рынак, незалежна ад вашай мэты - рэагаваць на абмежаваны па часе рынак або неадкладна захапіць долю рынку ў пачатку любой тэндэнцыі.
Акрамя таго, гэта будзе даступным варыянтам для прадпрымальнікаў. Сервер, які не выкарыстоўваецца, нічога вам не будзе каштаваць. З-за адсутнасці надзейнай статыстыкі выкарыстання вам часта патрэбныя вельмі адаптыўныя праграмы.
Калі вы пачынаеце з нуля, варта выкарыстоўваць бессерверныя і мікрасэрвісы
Пачатак нанава дазваляе атрымаць перавагі пастаўшчыкоў бессервернай архітэктуры хутчэй, але не адразу. Выкарыстоўвайце мікрасэрвісы пры распрацоўцы зусім новай архітэктуры, але чакайце пераходу на бессерверны рэжым пазней.
Бессерверная архітэктура супраць мікрасэрвісаў: плюсы і мінусы
На жаль, ні адна тэхналогія не з'яўляецца ідэальнай; калі б гэта было, свет ужо быў бы задаволеным, высокаразвітым месцам.
Кожная тэхналогія ўключае перавагі, якія вы можаце выкарыстоўваць для свайго праекта, а таксама недахопы, з якімі вы павінны быць гатовыя жыць. Давайце цяпер разгледзім абодва.
Плюсы мікрасэрвісаў
- Больш простае маштабаванне: паколькі сэрвісы асобныя, можна дадаваць або выдаляць функцыі і маштабаваць рэчы з найменшай працай. У адрозненне ад маналітных праграм, вам не трэба разглядаць поўную кодавую базу.
- Палепшаная ўстойлівасць праграмнага забеспячэння: паколькі мікрасэрвісы менш залежаць адзін ад аднаго, адмова аднаго не выводзіць з ладу ўсё прыкладанне. Гэта асабліва карысна, калі рух транспартны.
- Розныя платформы: вы можаце звязаць мікрасэрвісы, размешчаныя на некалькіх платформах, у дадатак да моў. Частка прыкладання таксама можа размяшчацца ў звычайным рэжыме і без сервера.
- Аўтаномнасць каманды: некалькі невялікіх каманд могуць адначасова ўзаемадзейнічаць і працаваць над праектам
- Шматмоўны: API дазваляе звязваць мікрасэрвісы, напісаныя на некалькіх мовах. Гэта карысная перавага, таму што розныя тэхналогіі больш эфектыўна задавальняюць розныя патрабаванні функцыі. Аднак выкарыстанне занадта вялікай колькасці моў можа прывесці да цяжкасцей са звязваннем усяго, таму лепш рабіць усё проста.
- Прастора для эксперыментаў: нягледзячы на нашы багатыя дадзеныя, нашы здагадкі часам бываюць няслушнымі, і мікрасэрвісы дазваляюць праверыць усё. Паколькі прыкладанні з мікрасэрвісамі неверагодна адаптуюцца, як мы абмяркоўвалі раней, няма неабходнасці марнаваць тысячы долараў проста на тое, каб дадаць новую функцыю, якую вы, магчыма, захочаце ліквідаваць пазней.
Мінусы мікрасэрвісаў
- Праблемы бяспекі: Вы павінны ўважліва сачыць за сваімі API, таму што яны часта няправільна настроены і, такім чынам, успрымальныя.
- Праблемы з падключэннем: Вы павінны старанна распрацаваць, як звязаць усе мікрасэрвісы і перамяшчаць даныя з аднаго месца ў іншае.
- Адладка складаная, бо вам трэба правяраць журналы кожнай мікраслужбы.
- Складанае тэсціраванне: перад ацэнкай злучэння ў глабальным маштабе неабходна праверыць кожны мікрасэрвіс асобна.
Плюсы бессерверных
- Лёгкае маштабаванне: сервер аўтаматычна наладжваецца ўверх ці ўніз.
- Вельмі хуткае разгортванне: вы можаце хутка распрацаваць новыя функцыі і праверыць свае ідэі.
- Адміністраванне сервера - гэта не ваша клопат: вы можаце засяродзіцца на дадатку, а не на серверы.
- Аплата па меры выкарыстання: Вы проста плаціце за ёмістасць сервера, які выкарыстоўваеце; няма неабходнасці плаціць за час неактыўнасці.
Мінусы бессерверных
- Цяжкае тэставанне: нават калі вы не можаце цалкам прайграць бессервернае асяроддзе, цяжка зразумець, як будзе працаваць код пасля яго разгортвання.
- Нізкая гібкасць: у многіх людзей узнікаюць праблемы з прывязкай да аднаго пастаўшчыка бессервернага асяроддзя на працяглы перыяд.
- Халодны запуск: ён застаецца ў кэшы, але толькі ненадоўга, пасля завяршэння кожнай функцыі. Функцыі трэба будзе зноў адказаць на запыт выкліку, што патрабуе часу, калі вы запусціце яе зноў і яна не кэшуецца.
заключэнне
Бессерверныя і мікрасэрвісы - гэта архітэктурна звязаныя тэхналогіі, якія выкарыстоўваюць розныя метады. Як бессерверныя, так і мікрасэрвісы падкрэсліваюць маштабаванасць, адаптыўнасць, эканамічнасць і прастату дадання новых функцый у адрозненне ад маналітнага дызайну.
Паколькі кожны сэрвіс функцыянуе як незалежнае прыкладанне, доўгатэрміновая маштабаванасць з'яўляецца галоўнай мэтай мікрасэрвісаў.
У залежнасці ад аб'ёму прадукцыі і прыярытэтаў арганізацыі, можна выбраць адну з дзвюх стратэгій.
Мікрасэрвісы дадуць вам бессерверныя мікрасэрвісы для доўгатэрміновых рашэнняў, калі вы збіраецеся пабудаваць вялікую платформу, якая патрабуе пастаяннага росту.
Бессерверная архітэктура - выдатны варыянт, калі вы хочаце разгарнуць яе хутка і па даступнай цане.
Пакінуць каментар