Рубрики
Без рубрики

Node.js APIS на AWS – плюсы и минусы экспресс по сравнению с серверуми

Уильям Woodhead Node.js APIS на AWS – плюсы и минусы Express VS безвесочны недавно я играю с сервесом + AWS LAMBDA, и я должен сказать, что я был awseStruck. За последние несколько лет у меня почти исключительно использовали Express и AWS EC2 (и более

Автор оригинала: 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 все еще молодой, поэтому в этом пространстве, скорее всего, в этом пространстве будет много развитий.

Шаги, которые помогут вам решить, следует ли использовать неверный

  1. Насколько сложны ваши API? Вам нужна конфигурация низкой уровня и близость, которую вы получаете от использования Express?
  2. Как вы в настоящее время управляете развертыванием, масштабированием и мониторингом? Вы довольны своим решением? Как быстро может быть недавно нанятый разработчик узнает все разные части вашей архитектуры?
  3. Не могли бы вы сохранить любые деньги, переключаясь на серверу?

Если вам понравилась эта история, пожалуйста? И, пожалуйста, поделитесь с другими. Также, пожалуйста, проверьте мою компанию 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/”