Сейчас мы находимся на этапе, когда вы можете развернуть функциональность, подобную серверной, в бессерверной среде без необходимости создания среды Node или Ruby on Rails и без Heroku или AWS. Вы можете просто развернуть то, что в основном является дискретными функциями в бессерверной архитектуре, без настройки серверов или какой-либо работы с серверами. Это передовая работа, которая еще не достигла критической массы (например, блокчейн, IoT, Ethereum и т. д.).

Обратите внимание, что бессерверные вычисления — это не то же самое, что микросервисы, но именно к этому все идет. Вы можете построить целую архитектуру микросервисов на бессерверном стеке. Микросервисы обременительны для небольшого стартапа — это чрезмерная оптимизация. Запуск 10 узлов микросервиса требует разных серверных архитектур для каждого, и в итоге вы платите за все необходимые серверы. Но с бессерверной архитектурой вы платите только за вычислительные ресурсы — необработанные вычислительные циклы и, в некоторых случаях, объем запросов.

Давайте сделаем краткое руководство по внедрению предварительно написанного кода, чтобы помочь вам развернуть активную функцию на платформе Turbo.

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

Текстовое SMS-сообщение с Twilio SDK

Во-первых, давайте создадим несколько базовых репозиториев, которые помогут вам полностью погрузиться в процесс. Мы можем начать использовать CLI под названием Turbo: генератор шаблонов проектов для проектов Node, React и Redux.

Убедитесь, что у вас правильная версия Node.

$ node -v

Подойдет все, что старше версии 6.

Пара глобальных установок:

$ sudo npm i -g gulp
$ sudo npm i -g webpack
$ sudo npm i -g turbo-cli

Перейдите на www.turbo360.co и создайте учетную запись, если у вас ее еще нет.

В Терминале перейдите туда, где вы программируете — для целей этого руководства это будет рабочий стол.

$ cd ~/desktop

Создайте проект Turbo с именем sms-demo. Мы создаем проект, в котором будет развернута бессерверная функция, отправляющая текстовое сообщение. Перейдите в каталог вашего проекта и установите npm для зависимостей и модулей узлов.

$ turbo new sms-demo
$ cd sms-demo
$ npm install

Во-первых, мы выполним развертывание в тестовой среде и сразу же разместим ее на Github. После этого мы подключимся к функциональности. Это даст вашему проекту богатую историю коммитов. Давайте снова зайдем на сайт турбо и создадим соответствующий проект на платформе Турбо. Авторизуйтесь и нажмите «Создать приложение» в меню. Назовите свое приложение «sms-demo» с необязательным описанием (может быть, «Отправлять текстовые сообщения!»). Создание этого откроет обзорную панель инструментов с «Идентификатором приложения» в правом верхнем углу. Выделите и скопируйте идентификатор. Вернувшись в Терминал, подключите свой проект к приложению. Мы также выполним быстрое развертывание на промежуточной стадии, чтобы убедиться, что все работает.

$ turbo app PASTE_APP_ID_HERE
$ turbo deploy

По завершении вы увидите DEPLOY COMPLETE: WEBSITE_URL строку в коде терминала. Это ваша промежуточная среда, которая находится в Интернете — посетите ее в своем веб-браузере, если хотите. Также убедитесь, что запущенный $ turbo devserver отображается в Терминале, что сервер разработки работает на http://localhost:3000. Нажмите CONTROL-C, чтобы отключить сервер разработки на данный момент.

Теперь вы можете перейти к редактору кода по вашему выбору и изучить код, который уже был настроен в среде вашего проекта. В комплекте с Turbo scaffold вы получаете ознакомительный файл с надлежащей уценкой и инструкциями. Отправка этого на Github избавит вас от необходимости создавать его для любого проекта.

Находясь в текстовом редакторе, замените код файла .gitignore среды вашего проекта (sms-demo) тем, что показано ниже.

Теперь давайте зафиксируем проект на Github.

$ git init
$ git add .
$ git status
$ git commit -m "initial"
$ git status

Эта последовательность команд должна заканчиваться сообщением о том, что у вас есть «очистка рабочего дерева». В веб-браузере перейдите к github.com и создайте новый репозиторий с именем sms-demo. На странице, которая появляется после создания репозитория, в разделе «… или создать новый репозиторий в командной строке» скопируйте строку, аналогичную приведенной ниже.

git remote add origin YOUR_UNIQUE_ADRESS.git

Теперь вставьте его в терминал для запуска вместе с отправкой исходного мастера.

$ git remote add origin YOUR_UNIQUE_ADRESS.git
$ git push -u origin master

При перезагрузке страницы репозитория Github появится хорошо отформатированный файл readme и все остальное — включая инструкции. Это соблюдение передовой практики; Turbo помогает пользователю всегда использовать передовой опыт разработки.

Теперь давайте создадим пару кусочков функциональности. Это подчеркнет функциональность бессерверного развертывания. Мы называем эти единицы функциональности, развернутые в Turbo, векторами. Запустите приведенный ниже код терминала, чтобы создать файлы. Затем снова развернуть.

$ npm run build
$ turbo deploy

Если вы вернетесь к turbo360.co и посмотрите на свою панель инструментов, вы увидите приложение «sms-demo». При нажатии на приложение откроется информация о проекте. Найдите ссылку «Общедоступная страница» и нажмите на нее. Это страница вашего проекта с отображаемым файлом readme. Этот файл сведений автоматически корректируется с учетом изменений, внесенных в него при каждом развертывании.

Код функционала проекта приведен ниже, эта статья не будет руководством по его разработке.

В текстовом редакторе разверните папку vectors вашего проекта. Турбо-векторы поддерживают две среды выполнения: Python и JavaScript. Откройте index.js папки js. Удалите код там и вставьте код выше.

Обратите внимание на то, что в верхней части файла нам нужно установить две зависимости: superagent и twilio. Давайте установим их обратно в Терминал.

$ turbo install superagent
$ turbo install twilio

Просматривая код, мы можем собрать его базовую структуру. В строке 8 есть req и res — запрос и ответ. Это очень похоже на архитектуру Node Express, где вы отправляете ответ и объект res. Объект запроса ищет два параметра: сообщение и запрос. Он отправляет смс на указанный номер телефона. Теперь запустим сервер разработки Turbo на терминале.

$ turbo devserver

Теперь конечной точкой векторов является базовый URL *слэш* векторов *слэш* имя вектора (в данном случае смс): http://localhost:3000/vectors/sms. В этот момент переход к этому в браузере выдаст ошибку, потому что нет параметра сообщения. Мы можем добавить параметр запроса сообщения и параметр to, чтобы исключить все ошибки: http://localhost:3000/vectors/sms?message=hello!&to=INSERT_PHONE_NUMBER. Вы можете вставить в него свой собственный номер телефона (только последовательные цифры, без дефисов) и получить текст, отправленный вам, чтобы убедиться, что все работает до сих пор.

Время развернуть векторы на Турбо. Среда vectors представляет собой полную абстракцию бессерверной архитектуры для конечного пользователя.

$ turbo vectors

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

Давайте закончим последовательность git.

$ git status
$ git add .
$ git status
$ git commit -m "sms vector"
$ git status
$ git push origin master

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

$ turbo theme
$ turbo theme THEME_NAME
$ turbo devserver

Теперь при переходе к локальному хосту в веб-браузере будет отображаться приятный пользовательский интерфейс. Это дает вам необработанную тему, которую вы можете настроить по своему усмотрению. Хорошей функцией было бы наличие полей ввода, в которые пользователь вводит свое сообщение и номер телефона, чтобы легко проверить вашу функцию (это делается в .../sms-demo/assets/js/app.js только с помощью javascript). Не забудьте снова зафиксировать изменение, чтобы сохранить тему.

$ git status
$ git add .
$ git status
$ git commit -m "hyperspace theme integration"

Разверните в Turbo, и теперь страница будет работать.

$ turbo deploy