В прошлом году я видел, как слово ServerLess появлялось во многих местах. Было введено относительно много концепций, но по-прежнему очень мало реальных практик. Это также из-за любопытства к новым технологиям, поэтому я планирую глубже понять ServerLess. Чтобы понять, какое удобство может принести нам ServerLess, лучше всего начать с Hello World.
об авторе: Джун Май, разработчик Nodejs, сертифицированный автор МООК, молодежь после 90-х, которая любит технологии и любит делиться, добро пожаловать на внимание.Стек технологий Nodejsи проект с открытым исходным кодом Githubwww.nodejs.red
О бессерверных функциях
Serverless означает «бессерверная архитектура», но это не означает, что в серверах нет необходимости.Управление этими серверами обеспечивается платформой облачных вычислений.Со стороны пользователя нет необходимости уделять внимание настройке сервера, мониторингу , состояние ресурса и т. д., на которые можно ориентироваться в бизнес-логике.
На приведенном ниже рисунке микросервисы далее подразделяются на функцию «Функция как услуга» (FaaS), которая имеет меньшую степень детализации, чем микросервисы.
Источник изображения:stackify
Узнайте больше о бессерверных технологиях
Что такое безсерверный? В Интернете есть много информации об этом. Может быть, вы можете обратиться к ним. Вот некоторые предыдущие публикации:
-
Перспективы технологии Node FaaS в облачную эпоху в конце 2019 г.
-
2019 JSConf China «Ориентированная на традиции бессерверная эволюция» общая текстовая версия
Поддержка поставщика облачных услуг
На данный момент многие поставщики облачных услуг поддерживают ServerLess:
... Более
AWS Lambda function
В этом примере будет использоваться Aws Lambda. Вы можете выбрать других поставщиков услуг, перечисленных выше. AWS предоставляет бесплатную пробную версию на один год, но вам необходимо иметь действующую кредитную карту для привязки перед использованием сервисов AWS. сумма 1$ для проверки.
Сначала необходимо выполнить следующие шаги:
-
Создайте учетную запись AWS, получите доступconsole.aws.amazon.com/
-
Настройте свои учетные данные провайдера, вот подробная документация для справки:GitHub.com/сервер меньше/…, или обратитесь к видеоУуху. YouTube.com/watch?V=HS…
Установка и настройка ServerLess framework
Платформа ServerLess — это инструмент командной строки, написанный на Node.js. Разработчики могут развернуть полную и удобную бессерверную архитектуру приложения, не обращая внимания на базовые ресурсы. Перед установкой вам необходимо иметь среду выполнения Node.js.Если вы не установили Node.js, вы можете обратиться к этой статье«3N Brothers», чтобы помочь вам завершить создание среды Node.jsОписывает различные способы установки Node.js.
Установите бесполезный фреймворк
$ npm i serveless -g
Проверьте, успешно ли установлен serverless
$ serverless --version
Framework Core: 1.60.0
Plugin: 3.2.6
SDK: 2.2.1
Components Core: 1.1.2
Components CLI: 1.4.0
Настройте учетные данные AWS
Если он уже установлен, может произойти сбой, просто добавьте -o после учетных данных безсерверной конфигурации.
$ serverless config credentials --provider aws --key <your_access_key_id> --secret <your_access_key_secret>
Serverless: Setting up AWS...
Первый проект по созданию Nodejs ServerLess
Вы можете быстро создать проект с помощью бессерверного инструмента командной строки. --template — это шаблон, поддерживаемый скаффолдом. Дополнительные шаблоны см.GitHub.com/сервер меньше/…
$ serverless create --template hello-world --path aws-hello-nodejs-function
Serverless: Generating boilerplate...
Serverless: Generating boilerplate in "/Users/test/aws-hello-nodejs-function"
_______ __
| _ .-----.----.--.--.-----.----| .-----.-----.-----.
| |___| -__| _| | | -__| _| | -__|__ --|__ --|
|____ |_____|__| \___/|_____|__| |__|_____|_____|_____|
| | | The Serverless Application Framework
| | serverless.com, v1.60.0
-------'
Serverless: Successfully generated boilerplate for template: "hello-world"
После успешного создания вы можете увидеть следующую структуру проекта
├── handler.js # 逻辑处理
├── .gitignore # 忽略文件
└── serverless.yml # ServerLess 配置文件
handler.js
handler.js — это место для логической обработки. Конечно, вы также можете настроить другие файлы. После того, как вы настроите файл, вам нужно реагировать на изменения в файле serverless.yml. Этот раздел является лишь введением, поэтому он не будет Это не слишком сложно.Используйте практику REST API, реализованную ServerLess, вы можете следить за официальной учетной записью «Технологический стек Nodejs», чтобы получать последние новости.
Вот три параметра, о которых вам нужно знать:
-
событие: данные, используемые для разбора запроса
-
контекст: используйте контекст для передачи параметров времени выполнения функциям Lambda.
-
обратный вызов возвращает данные ответа
'use strict';
module.exports.helloWorld = (event, context, callback) => {
const response = {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*', // Required for CORS support to work
},
body: JSON.stringify({
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
}),
};
callback(null, response);
};
serverless.yml
-
служба: имя службы
-
провайдер: определяет, где ваш сервис должен быть развернут
-
функции: определить код для развертывания
-
functions.helloWorld: функция
-
functions.helloWorld.handler: "handle.helloWorld" в значении определяет путь к файлу функции, функция helloWorld в файле дескриптора
-
functions.helloWorld.events: события определяют, как запускать программу «handler.helloWorld».
service: aws-hello-nodejs-function
provider:
name: aws
runtime: nodejs12.x
functions:
helloWorld:
handler: handler.helloWorld
events:
- http:
path: hello-world # 定义请求路径
method: get # 定义接口请求方式
cors: true # 开启跨域
развертывать
Перечислите некоторые команды, связанные с развертыванием ServerLess:
-
развернуть все:
$ serverless deploy -
одиночное развертывание:
$ serverless deploy function -f helloWorld -
Локальный запуск функционального теста:
$ serverless invoke local -f helloWorld -
Просмотр журналов:
$ serverless logs -f helloWorld -l
Выполните команду serverless deploy и увидите следующую информацию: служба успешно развернута, не правда ли, это очень просто? Нет необходимости уделять внимание построению и развертыванию серверной среды, а можно сосредоточиться на развитии бизнеса.
$ serverless deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
........
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service aws-hello-nodejs-function.zip file to S3 (404 B)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
.................................
Serverless: Stack update finished...
Service Information
service: aws-hello-nodejs-function
stage: dev
region: us-east-1
stack: aws-hello-nodejs-function-dev
resources: 12
api keys:
None
endpoints:
GET - https://******.execute-api.us-east-1.amazonaws.com/dev/hello-world
functions:
helloWorld: aws-hello-nodejs-function-dev-helloWorld
layers:
None
Serverless: Run the "serverless" command to setup monitoring, troubleshooting and testing.
Конечные точки в приведенном выше журнале показывают адрес интерфейса доступа, и теперь вы можете вызвать его через интерфейс или получить доступ к нему с помощью postman и curl.
$ curl https://******.execute-api.us-east-1.amazonaws.com/dev/hello-world
Локальный тест ServerLess-Offline
Используйте этот бессерверный автономный подключаемый модуль, чтобы локально запустить HTTP-сервер, эмулирующий AWS Lambda и API Gateway.
Установить плагин
Установите плагин.Если локально нет файла package.json, npm init может сгенерировать файл package.json
$ npm install serverless-offline --save-dev
Изменить serverless.yml
Добавьте плагин serverless-offline в serverless.yml проекта следующим образом:
plugins:
- serverless-offline
местный старт
Выполните автономную команду без сервера в корневом каталоге проекта, чтобы успешно запустить тест локально.
$ serverless offline
Serverless: Starting Offline: dev/us-east-1.
Serverless: Routes for helloWorld:
Serverless: GET /hello-world
Serverless: POST /{apiVersion}/functions/aws-hello-nodejs-function-dev-helloWorld/invocations
Serverless: Offline [HTTP] listening on http://localhost:3000
Адрес по умолчаниюhttp://localhost:3000Мы можем легко получить доступ к нашему примеру выше, как показано ниже.
$ curl http://localhost:3000/hello-world
serverless-offline предоставляет множество параметров, которые вы можете настроить, например, изменить порт, который слушает запускаемый проект, вы можете обратиться кGitHub.com/DrinkRaulHe/Цвет…
Адрес исходного кода Github этого раздела выглядит следующим образом:
https://github.com/Q-Angelo/project-training/tree/master/serverless/aws-hello-nodejs-function
Суммировать
Я надеюсь, что с помощью руководства по началу работы в этом разделе вы научитесь запускать бессерверное приложение, а также развертывать, разрабатывать и отлаживать его локально. Это только начало. В следующем разделе я буду использовать ServerLess, Node.js и MongoDB на этой основе Облако Atlas создает REST API, пожалуйста, обратите внимание на общедоступную учетную запись «Технологический стек Nodejs» для получения последней информации.