Фиребасе Цлоуд функције: сјајне, мех и ружне

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

Фиребасе Цлоуд Функције најављене су неколико месеци касније. Услуга је још увек у бета верзији, али користим је срећно већ неколико месеци у производњи.

Да видимо како је.

Шта су Фиребасе Цлоуд функције?

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

У многим случајевима ова нова парадигма може поједноставити писање, одржавање и покретање позадинског кода.

Посебно функције Фиребасе Цлоуд-а су попут Лего блокова које можете повезати са било којом Фиребасе услугом. На пример, функција се може покренути када се слика отпреми у Фиребасе Стораге да би се створила сличица или можда очистити неке корисничке податке када се чвор избрише у бази података у реалном времену. Прилично све што вас занима у Фиребасе-у може покренути функцију.

Ако то није довољно, можете да користите и ХТТП за покретање функција помоћу ГЕТ, ПОСТ итд. Погледајте овај невероватни видео о томе како комбиновати Фиребасе хостинг са функцијама у облаку да бисте креирали комплетну Екпресс апликацију:

Велики

Инфраструктура није лакша од ове

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

Цене

Цлоуд функције су уопште исплативе. Тешко је упоређивати цене добављача у облаку, али могу да кажем да су на основу мог искуства Фиребасе Цлоуд Фунцтионс смешно јефтине. Тешко је поверовати да Гоогле од овога зарађује.

Једноставан за коришћење

Као и обично код Фиребасе-а и Гоогле-а, документи су сјајни и нећете правити менталне акробације да бисте их добили . На Гитхуб-у такође постоје тоне узорака за почетак. Ауторитетом за примену управља Фиребасе ЦЛИ, па је покретање здравог света дословно:

firebase init functionsfirebase deploy

Мислим да је једноставност коришћења Фиребасе-а и Гоогле Цлоуд-а уопште сјајна, посебно у поређењу са конкуренцијом.

Флексибилно

Као што сам раније написао, ове функције могу покренути свакакви догађаји. Кладим се да вам неће недостајати идеја о томе како да их интегришете са својим Фиребасе пројектом или чак остатком свог стека.

Ево неколико проблема које смо решили помоћу Фиребасе Цлоуд Фунцтионс:

  • Генеришите ПДФ-ове за услугу фактурисања на мрежи користећи Пхантом.јс и потпишите ове рачуне неком владином службом
  • Повежите Го услугу са независним добављачем СОАП-а (угх)
  • Шаљите е-пошту путем ХТТП-а са било ког места у нашој групи

Мех

Хладни покрети

Скалабилност је одлична, али време извођења може невероватно да варира. Једноставној функцији здравог света може бити потребно 3 мс да уради свој посао или 100 мс.

functions.https.onRequest((request, response) => { response.send(“Hello from Firebase!”);});

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

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

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

Нема планера (црон)

Функције у облаку савршене су за обављање задатака са малим саобраћајем, попут генерисања извештаја или повремених резервних копија у 2:00, али са Фиребасе-ом или Гоогле Цлоуд-ом нема једноставног начина да покренете функције на основу распореда.

Фиребасе тим препоручује израду пројекта Апп Енгине за оркестрирање ових окидача. Услуга заиста моли за нешто попут Хероку Сцхедулера.

Само ЈаваСцрипт

Ма, добро сам са ЈаваСцриптом, али и Азуре и АВС подржавају много више језика. Иронично је што Гоогле не подржава Го у својој услузи клауд функција, али АВС подржава.

Чвор 6

Опет, конкуренција иде боље. И функције АВС Ламбда и Азуре већ се изводе на чвору 8. Највећи недостатак овде је повратак на обећања без асинхронизације / чекања или конфигурације Бабел-а на вашем пројекту.

Ружни

Ток рада програмера

Осим функција које покреће ХТТП, функције не можете покретати локално. Функције које покреће Фиребасе услуга морају да се примене у облак.

Ово има много ружних импликација:

  • Мале грешке на крају коштају пуно времена, јер новим функцијама треба неколико минута да почну да раде.
  • Постављене функције немају очигледне верзије. Чини се да су сви дневници исте функције из исте верзије. Никада није јасно када нове функције заправо раде, па је ваш једини избор ручно покретање функција и Сее-Вхат-Хаппенс ™.
  • Нема повратка

Окружења

Поврх претходних тачака, управљање окружењима је ... компликовано.

Можете да додате променљиве окружења у своје функције пројеката користећи Фиребасе ЦЛИ, али, као и други аспекти Фиребасе-а, ово је наиван приступ који се не мери добро.

Биће вам потребни акредитиви за приступ готово било чему изван Фиребасе заштитног окружења. За остале Гоогле Цлоуд услуге ови акредитиви долазе у облику .jsonдатотека. Помножите то са свим окружењима (развојним, продукцијским, сценским) и на крају ћете добити краљевски неред.

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

Волео бих да видим картицу Околина у Фиребасе конзоли где бих могао лако да управљам овим подешавањима за цео Фиребасе пројекат. Пребацивање између окружења требало би да буде лако као firebase use production.

Закључак

Осим неких трења током фазе развоја, моје искуство са Фиребасе Цлоуд Фунцтионс је било позитивно. Једном примењене, ове ствари су поуздане и захтевају никакво одржавање како је обећано. Тако да, Фиребасе је коначно потпуно без сервера. Ура!

Ако већ користите Фиребасе, заиста вам то не пада на памет. Фиребасе Цлоуд Фунцтионс су сјајна допуна вашем пројекту, чак и ако је услуга још увек у бета верзији.

С друге стране, поштено је рећи да конкуренција има зрелији производ. Ако нисте уложени у Фиребасе или Гоогле Цлоуд, а размишљате о коришћењу функција облака у свом стеку, вероватно би требало да погледате и шта нуде АВС или Азуре.

Да будем потпуно искрен, помало сам забринут што је услуга још увек у бета верзији. Прошло је више од годину дана од када је објављено и напредак се осећа болно спор. Чини се да је конкуренција много посвећенија својим производима у облаку, чак и ако је, према Диане Греене, извршној директорки за Гоогле-ове компаније у облаку, Гоогле Цлоуд „облак са најбржим растом“.

То је све.

Напомена: У претходној верзији овог чланка тврдио сам да није било могуће писати тестове за функције које нису ХТТП. Ово је погрешно, и ево докумената о томе како се то ради.