Савети и ресурси за прављење апликација без сервера

Савети и ресурси за прављење апликација без сервера
Иако су технологије без сервера брзо стекле популарност последњих година, још увек постоје многе заблуде и страхови повезани са њима. Зависност од добављача, алати, управљање трошковима, хладно покретање, праћење и животни циклус развоја су вруће теме када су у питању технологије без сервера. У овом чланку ћемо истражити неке од поменутих тема, као и поделити савете и везе до корисних извора информација како бисмо помогли почетницима да креирају моћне, флексибилне и исплативе апликације без сервера.

Заблуде о технологијама без сервера

Многи људи мисле да обрада без сервера и сервера (Функционише као услуга, ФааС) су скоро иста ствар. То значи да разлика није превелика и вреди увести новину. Иако је АВС Ламбда била једна од звезда врхунца без сервера и један од најпопуларнијих елемената архитектуре без сервера, ова архитектура је много више од ФааС-а.

Основни принцип иза технологија без сервера је да не морате да бринете о управљању и скалирању ваше инфраструктуре, плаћате само оно што користите. Многи сервиси одговарају овим критеријумима - АВС ДинамоДБ, С3, СНС или СКС, Грапхцоол, Аутх0, Нов, Нетлифи, Фиребасе и многи други. Генерално, без сервера значи коришћење пуне снаге рачунарства у облаку без потребе за управљањем инфраструктуром и њеном оптимизацијом за скалирање. То такође значи да безбедност на нивоу инфраструктуре више није ваша брига, што је огромна предност с обзиром на потешкоће и сложеност испуњавања безбедносних стандарда. Коначно, не морате да купујете инфраструктуру која вам је дата.

Без сервера се може сматрати „стањем ума“: одређеним менталитетом приликом дизајнирања решења. Избегавајте приступе који захтевају одржавање било које инфраструктуре. Са приступом без сервера, трошимо време на решавање задатака који директно утичу на пројекат и доносе користи нашим корисницима: креирамо одрживу пословну логику, развијамо корисничке интерфејсе и развијамо прилагодљиве и поуздане АПИ-је.

На пример, ако је могуће избећи управљање и одржавање платформе за претрагу бесплатног текста, онда ћемо то учинити. Овај приступ изградњи апликација може у великој мери да убрза време изласка на тржиште, јер више не морате да размишљате о управљању сложеном инфраструктуром. Елиминишите одговорности и трошкове управљања инфраструктуром и фокусирајте се на изградњу апликација и услуга које су вашим клијентима потребне. Патрицк Дебоис је назвао овај приступ 'услужан', термин је усвојен у заједници без сервера. Функције треба посматрати као везу ка услугама као модулима који се могу применити (уместо постављања целе библиотеке или веб апликације). Ово пружа невероватну грануларност за управљање применом и променама у апликацији. Ако не можете да примените функције на овај начин, онда то може указивати на то да функције обављају превише задатака и да их је потребно рефакторисати.

Неки су збуњени зависношћу од добављача при развоју апликација у облаку. Исто важи и за технологије без сервера, и то тешко да је погрешно схватање. Према нашем искуству, изградња апликација без сервера на АВС-у, у комбинацији са способношћу АВС Ламбда да обједини друге АВС услуге, део је снаге архитектуре без сервера. Ово је добар пример синергије, када је резултат комбинације више од пуког збира термина. Покушај да се избегне зависност од добављача може наићи на још више проблема. Када радите са контејнерима, лакше је управљати сопственим слојем апстракције између добављача облака. Али када су у питању решења без сервера, труд се неће исплатити, посебно ако се исплативост узме у обзир од самог почетка. Обавезно сазнајте како добављачи пружају услуге. Неке специјализоване услуге се ослањају на тачке интеграције са другим добављачима и могу да обезбеде „плуг-анд-плаи“ конекцију из кутије. Лакше је обезбедити Ламбда позив са крајње тачке АПИ-ја мрежног пролаза него проки захтев неком контејнеру или ЕЦ2 инстанци. Грапхцоол пружа једноставну конфигурацију са Аутх0, што је лакше него коришћење алата за аутентификацију треће стране.

Одабир правог добављача за вашу апликацију без сервера је архитектонска одлука. Када креирате апликацију, не очекујете да ћете се једног дана вратити на управљање серверима. Избор добављача у облаку се не разликује од избора употребе контејнера или базе података, или чак програмског језика.

Размотрити:

  • Које услуге су вам потребне и зашто.
  • Које услуге пружају добављачи у облаку и како их можете комбиновати са одабраним ФааС решењем.
  • Који програмски језици су подржани (са динамичким или статичким куцањем, компајлираним или интерпретираним, која су мерила, какве су перформансе при хладном старту, који је екосистем отвореног кода, итд.).
  • Који су ваши безбедносни захтеви (СЛА, 2ФА, ОАутх, ХТТПС, ССЛ, итд.).
  • Како да управљате својим ЦИ/ЦД и циклусима развоја софтвера.
  • Која решења инфраструктуре као кода можете искористити.

Ако проширите постојећу апликацију и постепено додајете функционалност без сервера, то може донекле ограничити доступне могућности. Међутим, скоро све технологије без сервера пружају неку врсту АПИ-ја (преко РЕСТ-а или редова порука) који вам омогућава да креирате екстензије независно од језгра апликације и уз лаку интеграцију. Потражите услуге са јасним АПИ-јима, добром документацијом и јаком заједницом и нећете погрешити. Лакоћа интеграције често може бити кључна метрика и вероватно је један од главних разлога зашто је АВС био тако успешан од када је Ламбда објављена 2015.

Када је без сервера добро

Технологије без сервера могу се применити скоро свуда. Међутим, њихове предности нису ограничене само на један начин примене. Баријера за улазак у рачунарство у облаку данас је тако ниска захваљујући технологијама без сервера. Ако програмери имају идеју, али не знају како да управљају инфраструктуром облака и оптимизују трошкове, онда не морају да траже неку врсту инжењера да то уради. Ако стартуп жели да изгради платформу, али се плаши да би трошкови могли измаћи контроли, лако се може окренути решењима без сервера.

Због уштеде трошкова и лакоће скалирања, решења без сервера су подједнако применљива и за интерне и за екстерне системе, све до веб апликације са вишемилионском публиком. Рачуни се мере пре него у еврима, већ у центима. Изнајмљивање најједноставније инстанце АВС ЕЦ2 (т1.мицро) на месец дана коштаће 15 евра, чак и ако ништа не урадите са њим (ко никада није заборавио да га искључи?!). За поређење, да бисте достигли овај ниво потрошње у истом временском периоду, требало би да покренете Ламбда од 512 МБ за 1 секунду око 3 милиона пута. А ако не користите ову функцију, онда не плаћате ништа.

Пошто је сервер без сервера првенствено вођен догађајима, прилично је лако додати инфраструктуру без сервера у старије системе. На пример, користећи АВС С3, Ламбда и Кинесис, можете да креирате услугу аналитике за стари малопродајни систем који може да прима податке преко АПИ-ја.

Већина платформи без сервера подржава више језика. Најчешће су то Питхон, ЈаваСцрипт, Ц#, Јава и Го. Обично не постоје ограничења за коришћење библиотека на свим језицима, тако да можете користити своје омиљене библиотеке отвореног кода. Међутим, препоручљиво је да не злоупотребљавате зависности како би ваше функције радиле оптимално и не би негирале предности огромне скалабилности ваших апликација без сервера. Што више пакета треба да се убаци у контејнер, то ће дуже трајати хладни старт.

Хладни почетак је када прво морате да иницијализујете контејнер, време извођења и руковалац грешкама пре него што их употребите. Због тога кашњење у извршавању функција може бити и до 3 секунде, а ово није најбоља опција за нестрпљиве кориснике. Међутим, хладни стартови се дешавају при првом позиву након неколико минута мировања. Многи сматрају да је ово мања сметња која се може решити редовним пинговањем функције да би остала у стању мировања. Или потпуно игноришу овај аспект.

Иако је АВС објављен СКЛ база података без сервера Аурора без сервераМеђутим, СКЛ базе података нису идеалне за ову апликацију, јер зависе од конекција за обављање трансакција, што може брзо да постане уско грло са великим саобраћајем на АВС Ламбда. Да, програмери константно побољшавају Аурору без сервера и требало би да експериментишете са њом, али данас НоСКЛ решења попут ДинамоДБ. Међутим, нема сумње да ће се ова ситуација врло брзо променити.

Комплет алата такође намеће многа ограничења, посебно у области локалног тестирања. Иако постоје решења као што су Доцкер-Ламбда, ДинамоДБ Лоцал и ЛоцалСтацк, она захтевају напоран рад и значајну количину конфигурације. Међутим, сви ови пројекти се активно развијају, тако да је само питање времена када ће комплет алата достићи ниво који нам је потребан.

Утицај технологија без сервера на развојни циклус

Пошто је ваша инфраструктура само конфигурација, можете да дефинишете и примените код помоћу скрипти, као што су схелл скрипте. Или можете да прибегнете решењима класе конфигурација као код, као што је АВС ЦлоудФорматион. Иако ова услуга не обезбеђује конфигурацију за све области, она вам омогућава да дефинишете специфичне ресурсе које ћете користити као Ламбда функције. То јест, тамо где вас ЦлоудФорматион изневери, можете написати сопствени ресурс (Ламбда функција) који ће затворити ову празнину. На овај начин можете да урадите било шта, чак и да конфигуришете зависности ван вашег АВС окружења.

Пошто је све само конфигурација, можете да прилагодите своје скрипте за примену за одређена окружења, регионе и кориснике, посебно ако користите решења инфраструктура као код као што је ЦлоудФорматион. На пример, можете да примените копију инфраструктуре за сваку грану у спремишту тако да можете да их тестирате потпуно изоловано током развоја. Ово драстично убрзава повратне информације за програмере када желе да схвате да ли њихов код функционише адекватно у живом окружењу. Менаџери не морају да брину о трошковима постављања више окружења, јер плаћају само за стварну употребу.

ДевОпс имају мање брига јер само треба да се увере да програмери имају исправну конфигурацију. Више не морате да управљате инстанцама, балансерима или безбедносним групама. Због тога се све више користи термин НоОпс, иако је и даље важно моћи конфигурисати инфраструктуру, посебно када је у питању ИАМ конфигурација и оптимизација ресурса у облаку.

Постоје веома моћни алати за праћење и визуелизацију као што су Епсагон, Тхундра, Дасхбирд и ИОПипе. Они вам омогућавају да надгледате тренутно стање ваших апликација без сервера, обезбеђују евидентирање и праћење, бележите метрику перформанси и уска грла архитектуре, вршите анализу и предвиђање трошкова и још много тога. Они не само да дају ДевОпс инжењерима, програмерима и архитектама свеобухватан увид у перформансе апликације, већ и омогућавају менаџерима да прате ситуацију у реалном времену, са трошковима ресурса по секунди и предвиђањем трошкова. Много је теже ово организовати са управљаном инфраструктуром.

Дизајнирање апликација без сервера је много лакше јер не морате да постављате веб сервере, управљате виртуелним машинама или контејнерима, серверима за закрпе, оперативним системима, интернет приступницима, итд. Апстраховањем свих ових одговорности, архитектура без сервера може да се фокусира на језгро - решење.пословне потребе и потребе купаца.

Иако би комплет алата могао бити бољи (сваки дан постаје све бољи), програмери се могу фокусирати на имплементацију пословне логике и најбољу дистрибуцију сложености апликације на различите услуге унутар архитектуре. Управљање апликацијама без сервера је засновано на догађајима и апстрахује га добављач облака (нпр. СКС, С3 догађаји или ДинамоДБ токови). Стога, програмери само треба да напишу пословну логику да би одговорили на одређене догађаје и не морају да брину о томе како најбоље имплементирати базе података и редове порука, или како да организују оптималан рад са подацима у одређеним хардверским складиштима.

Код се може покретати и отклањати грешке локално, као и код било ког процеса развоја. Јединично тестирање остаје исто. Могућност постављања целе инфраструктуре апликације са прилагођеном конфигурацијом стека омогућава програмерима да брзо добију важне повратне информације без размишљања о цени тестирања или утицају на скупа окружена којима се управља.

Алати и технике за прављење апликација без сервера

Не постоји посебан начин за прављење апликација без сервера. Као и сет услуга за овај задатак. АВС је лидер међу моћним решењима без сервера данас, али погледајте и Гоогле Цлоуд, Зеит и Фиребасе. Ако користите АВС, онда је препоручени приступ за прикупљање апликација Модел апликације без сервера (САМ), посебно када се користи Ц#, јер Висуал Студио има одличне алате. САМ ЦЛИ може да уради све што Висуал Студио може, тако да нећете ништа изгубити ако пређете на други ИДЕ или уређивач текста. Наравно, САМ ради и са другим језицима.

Ако пишете на другим језицима, Серверлесс Фрамеворк је одличан алат отвореног кода који вам омогућава да конфигуришете било шта са веома моћним ИАМЛ конфигурационим датотекама. Серверлесс Фрамеворк такође подржава различите услуге у облаку, па га препоручујемо онима који траже решење за више облака. Има огромну заједницу која је створила гомилу додатака за било коју потребу.

За локално тестирање, алати отвореног кода Доцкер-Ламбда, Серверлесс Лоцал, ДинамоДБ Лоцал и ЛоцалСтацк су веома погодни. Технологије без сервера су још увек у раној фази развоја, као и алати за њих, тако да ћете морати да се потрудите када постављате сложене тестне сценарије. Међутим, једноставно постављање стека у окружење и тестирање тамо је невероватно јефтино. И не морате да правите тачну локалну копију окружења у облаку.

Користите АВС Ламбда слојеве да смањите величину примењених пакета и убрзате преузимања.

Користите праве програмске језике за одређене задатке. Различити језици имају своје предности и мане. Постоји много мерила, али ЈаваСцрипт, Питхон и Ц# (.НЕТ Цоре 2.1+) су лидери у погледу АВС Ламбда перформанси. АВС Ламбда је недавно представио Рунтиме АПИ, који вам омогућава да наведете жељени језик и окружење за извршавање, па експериментишите.

Нека величине пакета буду мале за примену. Што су мање, то се брже учитавају. Избегавајте коришћење великих библиотека, посебно ако користите неколико функција из њих. Ако програмирате у ЈаваСцрипт-у, користите алатку за прављење као што је Вебпацк да бисте оптимизовали своју верзију и укључили само оно што вам је заиста потребно. .НЕТ Цоре 3.0 има КуицкЈит и вишеслојну компилацију која побољшава перформансе и много помаже при хладним стартовима.

Ослањање функција без сервера на догађаје може у почетку отежати координацију пословне логике. У том смислу, редови порука и државни аутомати могу бити невероватно корисни. Ламбда функције могу да позивају једна другу, али то раде само ако не очекујете одговор („испали и заборави“) – не желите да вам буде наплаћено чекање да се друга функција заврши. Редови порука су корисни за изоловање делова пословне логике, управљање уским грлима апликација и обраду трансакција (користећи ФИФО редове). АВС Ламбда функције се могу доделити СКС редовима као заглављеним редовима порука који прате неуспеле поруке за каснију анализу. АВС Степ Функције (машине стања) су веома корисне за управљање сложеним процесима који захтевају уланчане функције. Уместо да Ламбда функција позива другу функцију, функције Степ могу да координирају прелазе стања, прослеђују податке између функција и управљају глобалним стањем функција. Ово вам омогућава да дефинишете услове поновног покушаја или шта да радите када дође до одређене грешке - веома моћан алат у одређеним условима.

Закључак

Последњих година, технологије без сервера развијају се брзином без преседана. Постоје одређене заблуде повезане са овом променом парадигме. Апстрахујући инфраструктуру и управљање скалирањем, решења без сервера нуде значајне предности, од поједностављеног развоја и ДевОпс процеса до огромног смањења оперативних трошкова.
Иако приступ без сервера није без својих недостатака, постоје робусни обрасци дизајна који се могу користити за изградњу робусних апликација без сервера или интегрисање елемената без сервера у постојеће архитектуре.

Извор: ввв.хабр.цом

Додај коментар