Автор оригинала: FreeCodeCamp Community Member.
Уильям Вудлс
Недавно я играю вокруг Смертный + AWS лямбда, и я должен сказать, я был awsestruck.
За последние несколько лет у меня почти эксклюзивно используются выражать и AWS EC2 (и совсем недавно Docker ) создать apis apis javascript.
Этот кусок описывает плюсы и минусы Экспресс и Смертный и объясняет, почему это имеет смысл для нашей команды на Pilcro переключиться. Эта часть направлена на Tech Teams, которые хотят развернуть и управлять APIS-apis node.js на AWS (или аналогично).
TL; доктор
Переключение с Экспресс к Смертный полностью преобразовал нашу доставку за последние 6 месяцев.
Плюсы: Сниженная стоимость |. Выполнение масштабируемости и мониторинга развертывания | Молния-быстрое развитие.
Минусы : потеря контроля | загадочный Лямбда время выполнения |. Молодая экосистема |. Нет нерезной развертывания нулевого простоя
Что такое экспресс | Что такое безверенно?
Экспресс это Node.js Пакет, который, по его ядру, является хорошо разработанной абстракцией над нативным модулем HTTP (S) Node.js.
С другой стороны, Serverless, с другой стороны, это инструментарий, который взаимодействует с облачными платформами, такими как AWS или GCP , развернуть и управлять API.
Из этих описаний мы можем видеть, что Express и Serverless действительно очень разные – возможно, слишком разные для сравнения. Однако причина я Я Сравнение их, заключается в том, что как Express, и Serverless можно использовать для написания APIS-apis node.js. Так что давайте прыгнем в некоторые сравнения:
Индекс файла
В целом я предпочитаю запись кода для записи конфигурации. Это означает, что вы можете запустить, тестировать и отлаживать свою работу.
С Express ваш файл индекса – код JavaScript. Это действительно выразительный декларативный файл. С помощью Serverless это YML Config, я боюсь.
Вот экспресс Здравствуйте, мир index.js Файл:
const express = require('express');const handler = require('./handler');const app = express();app.get('/hello-world', handler.helloWorld);app.listen(3000, () => console.log('Listening on port 3000'));Вот безверенно Здравствуйте, мир index.yml Файл:
service: hello-worldprovider: name: aws runtime: nodejs6.10functions: helloWorld: handler: handler.helloWorld events: - http: path: hello-world method: get
Довольно похожее на самом деле, Но я лично люблю экспресс-промежуточное ПО подходом. Для меня это более читаемо и проще тестировать и отладки.
Кривая обучения
Это сложная тема, потому что это зависит от того, что вы пытаетесь достичь:
- Если вы являетесь хоббистом Node.js, и вы хотите узнать, как настроить Localhost Server на своем собственном компьютере, Express для вас. Это отличный пакет для эксперимента с документацией «Начало работы» на веб-сайте превосходно, и вы можете легко начать играть с помощью сложных ody.js архитектуру на основе событий.
- Если вы пытаетесь развернуть и управлять устойчивыми, масштабируемыми APIS.js APIS, кривая обучения определенно проще с помощью Serverless. Это связано с тем самым бесплатными справится со многими вашими сложными проблемами на основе облаков, вне коробки. К ним относятся развертывание, мониторинг и предоставление инфраструктуры для имени всего несколько.
Операции – развертывание, масштабирование, регистрация, мониторинг …
Это то, где безвестеннее действительно входит в свой. Express не предназначен для решения всех сложностей облачных архитектур самостоятельно. Если вы используете Express, вам понадобится помощь от других пакетов:
Для развертывания и масштабирования вы можете использовать Докер , Кубернеты , Эластичный Beanstalk или некоторые другие услуги AWS.
Для регистрации, мониторинга и обработки ошибок вы можете использовать Новая реликвия , Datadog , Пингдомирование , и так далее.
Вы получаете идею. Express – это отличный низкоуровневый инструмент для строительства API, но вам нужно изучить кучу других пакетов для вашего API, чтобы процветать в современном облачном мире. Это отлично, если вы хотите настроить свои собственные архитектуры и иметь полный контроль.
С серверу, вы получаете столько из коробки. Не из самого пакета без сервеса, а потому, что серверу можно автоматически взаимодействовать со всеми сервисами на вашей облачной платформе. Например, только с Здравствуйте, мир Index.yml Пример Мы видели выше, вы получите по умолчанию:
- Мониторинг от AWS Lambda
- Регистрация от AWS CloudWatch.
- Автоскалинг от aws лямбда
- Развертывание от серверу & AWS CloudFormation
Это абсолютно невероятно для быстрого движущихся технологических команд, которые хотят сосредоточиться на написании приложений, а не на управляющей инфраструктуре.
Обратите внимание: в настоящее время с серверуми мы не достигаем развертывания нулевого простоя. Я думаю, что можно добиться с AWS CoDdeDeploy, но в настоящее время мы просто позволяем API снизиться на секунду или около того.
Расходы
Для любого, кто строит надежные, высокодоступные API на облаке, стоимость – это огромное рассмотрение. Serverless сократил наши расходы на невероятное количество:
Один T2-Medium EC2 Linux Machine на AWS стоит около 33 долларов в месяц. Мы использовали 3 из этих машин перед переключением на серверу.
С помощью Serverless + AWS Lambda вы получаете 1 миллион запросов бесплатно каждый месяц.
В Пилокко мы еще не ударили этот тест Поэтому мы уже спасли себя более ста долларов в месяц. С серверусными и лямбдами, Теперь мы можем запустить наши API бесплатно Отказ
AWS Lambda Runtime
Одним из недостатков использования SESERLENLES является то, что ваши функции API работают в RAMBDA AWS Lambda Runtime. Это означает, что вы никогда не совсем уверены, что происходит.
Вы также должны иметь дело с определенными странами странностей AWS Lambda функции, как Funky мероприятие и контекст Объекты, которые вводятся в ваши обработчики:
function awsLambdaHandler(event, context, callback) { ...}function expressHandler(req, res, next) { ...}Я предпочитаю REQ, RES, следующий Схема промежуточного программного обеспечения экспресс. Это кажется более логичным и понятным для меня.
Другой quirk заключается в том, что для AWS Lambda запускает ваши обработчики, они должны быть загружены в контекст выполнения. Это может занять некоторое время. Функции кэшируются в контексте выполнения на некоторое время, поэтому часто первый запрос на лямбду займет больше времени, чем последующие запросы. Это может быть раздражающим, если ваша API используется нечасто.
Примечание : Одно из великих вещей о AWS Node.js лямбда Runtime – это то, что у них есть Воображение Бинарный установлен. Таким образом, вы можете сделать манипулирование изображениями в ваших функциях лямбда из коробки!
Заключение
Это не сравнение между Express and Serverless. Это подтверждение, которое – в стремлении к прочному, масштабируемым облачным API – пакеты, такие как серверы, такие как без коробки, которые продолжают использовать Express (рядом с другими инструментами), чувствуют себя как много тяжелой работы и обучения.
На Pilcro Наши API довольно просты и стандартны. Они состоят из простых запросов на отдых и несколько сложных функций манипуляций изображений.
Потому что наши API настолько простым, решение использовать серверу и Lambda было простым – наши главные водители были Стоимость , Масштабируемость и Скорость развития.
Стоимость потому что … стоимость.
Масштабируемость Поскольку мы построены на вершине G-Suite, поэтому нам нужно было быстро и эффективно масштабировать чрезвычайно и эффективно.
Скорость развития Потому что нам нужно было доставить палочку через 6 месяцев с небольшой технической командой.
Serverless дал нам эти три преимущества, которые полностью преобразовали нашу доставку за последние 6 месяцев. Экосистема Serverless все еще молодой, поэтому в этом пространстве, скорее всего, в этом пространстве будет много развитий.
Шаги, которые помогут вам решить, следует ли использовать неверный
- Насколько сложны ваши API? Вам нужна конфигурация низкой уровня и близость, которую вы получаете от использования Express?
- Как вы в настоящее время управляете развертыванием, масштабированием и мониторингом? Вы довольны своим решением? Как быстро может быть недавно нанятый разработчик узнает все разные части вашей архитектуры?
- Не могли бы вы сохранить любые деньги, переключаясь на серверу?
Если вам понравилась эта история, пожалуйста? И, пожалуйста, поделитесь с другими. Также, пожалуйста, проверьте мою компанию P ilcro.com. Pilcro – это программное обеспечение для бренда для G-Suite – для маркетологов и парковых агентств.
Оригинал: “https://www.freecodecamp.org/news/node-js-apis-on-aws-the-pros-and-cons-of-express-versus-serverless-a370ab7eadd7/”