Бессерверный режим не обязательно должен быть раздражающим черным ящиком

1656651378 besservernyj rezhim ne obyazatelno dolzhen byt razdrazhayushhim chernym yashhikom

«В науке, вычислительной технике и инженерии a Черный ящик это устройство, система или объект, который можно рассматривать с точки зрения его входов и выходов (или характеристик передачи), без знания его внутренней работы. Его исполнение «непрозрачно» (черное). Черным ящиком можно назвать почти все: транзистор, алгоритм или мозг человека».

— Беззастенчиво изъято мной из Википедии

Несколько недель назад я смотрел документальный фильм HBO (поскольку я стар, а старые люди так делают — мы смотрим документальные фильмы) о черепно-мозговой травме.

tNhImYReknpw9o8VWV7cfZnuFWiCu8hb1but

В фильме они рассказывают о четырех проснувшихся из комы, вызванных физической травмой. Все пациенты находятся на разных стадиях выздоровления. У них ограниченная способность двигаться, говорить или даже слышно. Все, для чего вам нужен ваш мозг, может сработать, а может и нет. Вот почему я был шокирован, когда врачи спросили одного из этих пациентов, что-то изменилось после несчастного случая, и они сказали:Нет.»

Они не могут ходить, не могут держать голову — и то, и другое они могли делать всего несколько месяцев назад, но их мозг был не в состоянии обработать что-то изменившееся.

Это определение черного ящика: данные поступают, но получаются не то, что мы ожидаем. И мы ничего не можем с этим поделать, потому что вы не можете «наладить» мозг. Если бы вы могли, я бы поставил туда остановку и узнал, почему строка «Пиво и куриные крылышки» выполняется КАЖДОЙ НОЧИ.

eddAOXko7Lcef7-MWPvO2bHnH7RYghPEL2FK
отладчик;

Поэтому понадобилось полгода, чтобы понять, почему этот пациент не слышит. ШЕСТЬ МЕСЯЦОВ. Все, что они могут сделать, это пробовать разные вещи, пока что-то не сработает или не сработает, и они смогут сузить круг.

Это все способом проб и ошибок. Для людей с травмами головного мозга большая часть процесса восстановления состоит именно в этом: пробуют разные входные данные снова и снова, пока что-то не сработает. Что, к сожалению, именно то, что идет на бессерверную разработку.

Печаль без сервера

Текущее состояние Serverless очень похоже на человеческий мозг. Это крутая технология, но разработчики скрывают ее внутренние свойства, и нам остается делать обоснованные предположения относительно того, что происходит.

Это невероятно сложный способ создания приложений, и он почти достаточно сложен, чтобы омрачить любые экономические преимущества, которые обеспечат бессерверный режим.

«Моя бессерверная функция стоит мне всего 1 доллар в месяц! Мне понадобилось 6 месяцев, чтобы его создать, но СМОТРИТЕ, КАК ОНО ДЕШЕВО!»

Я составил этот высоконаучный и полезный график, чтобы визуализировать соотношение затрат и преимуществ бессерверного использования в течение времени разработки.

Gv5NsT0tviB6W3QaDYSSTjEhZU0CexMO8I5s

Одна из причин, почему это так, состоит в том, что вся суть бессерверного режима состоит в том, чтобы абстрагироваться от среды исполнения — это следующий шаг к прекрасной стопке абстракций. И когда вы абстрагируетесь, вы теряете контроль.

Но нам нравятся абстракции.

JavaScript – это абстракция, которая впоследствии выполняется как машинный код. Это означает, что мы теряем контроль над такими вещами как управление памятью, но ХАХАХАХА никого это не волнует, потому что JavaScript.

В случае бессерверного использования прекрасно, что абстракция перемещена где-то в облако, но нам нужен доступ к этой абстракции при разработке. Большинство бессерверных поставщиков предлагает онлайн-редактор как основной интерфейс для разработки. Это круто и все, но вы не можете создавать серверные программы в онлайн-редакторе, потому что у вас нет доступа к серверу. И в этом лежит прославленная (и буквальная) коробка.

Итак, позвольте мне перефразировать это: нам нравятся абстракции, пока мы не любим.

Когда нам не нравятся абстракции

Давайте начнем с базового опыта без сервера.

Если вы создадите новый бессерверный проект с чем-то вроде функций Azure, вы попадете в онлайн-редактор.

FhIr-06GznTw8ualvzcdqxexJsg-URnJil3w

Это очень удобно. Нет ничего похожего на возможность просто начать писать код напрямую. Или, если вы это я, «копируйте и вставляйте из Stack Overflow».

qCXbZRS6pfwd77lkDATsNUajh7HqwjW23Dx9

Вы можете даже проверить функцию онлайн. В общем это приятный первый опыт.

Однако это имеет серьезные ограничения. Что, если мы хотели бы установить пакет Node? Не знаю какой, но наверняка left-pad. Как ты это делаешь? Мы не можем быстро переключаться между файлами. Мы не можем напечатать код и точно не можем добавить точки остановки.

Теперь кто-либо, кто серьезно относится к Serverless (или просто создает что-либо, если на то пошло), не воспринимает опыт онлайн-редактора слишком серьезно. Чтобы создать что-нибудь значимое, нам нужно развиваться на местном уровне.

Локальная бессерверная разработка

Большинство бессерверных провайдеров предлагает определенный опыт локальной разработки. Обычно это достигается путём отправки пользователю эмулятора. Это не окончательное время выполнения, а это значит, что вам нужно сделать некоторые предположения о вещах, которых вы просто не знаете.

К примеру, вы можете разработать бессерверную функцию локально с помощью простого веб-сервера Node, но очень вероятно, что это не то, как ваш код будет вызываться в производстве. Это означает, что входные данные и, возможно, даже весь контекст функции могут… БУДУТ другими при развертывании.

Azure Functions обрабатывает это несколько по-другому. Вместо того чтобы давать вам эмулятор для локальной разработки, они дают вам время выполнения. Правильно, вы получаете всю коробку.

Локальное развитие с функциями Azure

Когда вы устанавливаете основные инструменты функций Azure, вы устанавливаете ту же среду выполнения, которую использует Azure. Поскольку вы получаете все время выполнения, вы можете создать любую функцию локально. Не только триггеры HTTP.

tcGLRR9bf-3bW9XuKDK1UQjcTOOU6494hc-3

Обратите внимание, что вы также можете использовать триггеры Blob и Queue. Если вы сбросите файл в хранилище BLOB-объектов Azure, запускается локальная функция. Если вы размещаете сообщение в очереди сообщений Azure, запускается локальная функция. Это отлично, потому что иначе как бы вы тестировали триггеры блога или очереди? Вы бы этого не сделали. Вы бы просто подняли это в облако и помолились.

OxGLltPvZ2C4vYCPBv3Xr0R1xxVLx3-VHi3A

Единственная работа «Радуйся, Мария» для Аарона Роджерса. Это два футбольных упоминания подряд, и мне очень жаль. Ты заслуживаешь лучшего.

Наличие полной среды выполнения также упрощает локальную настройку, если вы используете VS Code. Корпорация Майкрософт создает обе вещи.

Настройка бессерверных функций с помощью кода VS

Вы можете установить расширение функций Azure для VS Code, автоматически включающее настройки локальных функций.

Это добавит новую панель в VS Code для функций Azure. В этом пространстве вы можете увидеть все свои проекты разных функций.

wN3F3-HxHQ968YKdTWQ1FxmKqQE7Qi8nHy-5

Что еще более важно, он добавляет встроенную конфигурацию запуска для отладки. Если вы должны были открыть проект Azure Functions в VS Code, расширение распознает это и предложит вам настроить этот проект для использования с расширением.

NLV411BjyWu6mSg-6ArGjpt1JUJhQ4vGH7AV

Это настраивает ваш проект таким образом, чтобы запустить и наладить эту функцию, поставить остановочную точку в канале и нажать зеленую кнопку на панели отладки.

iWA16qHz6pUHfhzDoLLPuZg9wH2K09DKaRHu

В случае триггера таймера вы получаете таймер, использующий функции Azure вместе с последующим запланированным временем выполнения.

T0yky0ZV4CIjVbUnJrpSKGApKbMw6xuSjQLE

Я уже упоминал триггеры blob и queue, но на случай если вы похожи на меня и «фото, или этого не произошло»…

p56JERNxwFahTGaIrRJeJlrx2Hf-9WlxrOa8

Черные ящики для мозговых хирургов

На самом деле нет работы под названием «мозговой хирург». Он называется нейрохирург, и на 2015 год средняя зарплата составляет 609 639 долларов в год. так серьезно.

Ну, я не мозговой хирург и уверен, что мне не платят достаточно, чтобы весь день возиться с черными ящиками. Бессерверный имеет светлое будущее, но только тогда, когда он обеспечит такую ​​же производительность, как и стоимость. Обратитесь к диаграмме в этой публикации, если у вас есть вопросы по этому уравнению.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *