Это первый официальный выпуск Up Pro, который включает ряд улучшений по сравнению с версией с открытым исходным кодом для производственных приложений.

Если вы не знакомы с Up, это инструмент, который поможет вам за секунды управлять бессерверными API, приложениями и веб-сайтами и развертывать их в вашей собственной инфраструктуре AWS. Вкратце: это самый простой способ развернуть Node.js, Golang, Python среди других на AWS, и его запуск может стоить всего 1 доллар в месяц, а в некоторых случаях - бесплатно.

Улучшения адаптации

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

Up now требует для проекта up.json, однако Up поможет вам создать его за вас. После того, как вы настроите учетную запись AWS и учетные данные, Up поможет вам в создании вашего первого приложения:

Затем он запросит профиль учетных данных AWS или предоставит инструкции, если у вас их нет.

Затем выберите регион.

После этого ваше приложение и его ресурсы развернуты и готовы к работе. Скоро появятся новые улучшения пользовательского опыта. Теперь о новых возможностях производства!

Электронная почта, Slack и SMS-оповещения

Функция предупреждений Up Pro позволяет легко определять, как и когда следует запускать уведомления об ошибках приложения, проблемах с производительностью и т. Д.

Оповещение начинается с определения alerts для вашего проекта. Ниже приводится пример оповещения об ошибках сервера 5xx, уведомляющего бэкэнд-команду по электронной почте.

{
  "alerts": [
    {
      "metric": "http.5xx",
      "statistic": "sum",
      "threshold": 15,
      "action": "email backend team"
    }
  ]
}

После того, как вы определите оповещения, вам понадобится хотя бы одно actions - в данном случае просто электронное письмо бэкэнд-команде.

{
  "actions": [
    {
      "name": "email backend team",
      "type": "email",
      "emails": ["[email protected]"]
    }
  ],
  "alerts": [
    {
      "metric": "http.5xx",
      "statistic": "sum",
      "threshold": 15,
      "action": "email backend team"
    }
  ]
}

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

Up также имеет поддержку предупреждений Slack, при желании можно указать channel, поскольку в противном случае он будет использовать Slack Webhook по умолчанию.

{
  "name": "slack.backend",
  "type": "slack",
  "url": "https://hooks.slack.com/services/T0YS6H6S5/...",
  "channel": "alerts"
}

Он также имеет дополнительную поддержку Giphy, потому что почему бы и нет, просто добавьте "gifs": true

SMS-оповещения также поддерживаются «из коробки» - это отличный способ привлечь больше внимания к сбоям - и вы можете указать более одного номера для каждого действия.

{
  "name": "text.backend",
  "type": "sms",
  "numbers": ["+12508005312"]
}

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

{
  "name": "myapp",
  "actions": [
    {
      "name": "email.backend",
      "type": "email",
      "emails": ["[email protected]", "[email protected]"]
    },
    {
      "name": "text.backend",
      "type": "sms",
      "numbers": ["+12508005312"]
    },
    {
      "name": "slack.backend",
      "type": "slack",
      "url": "https://hooks.slack.com/services/...",
      "channel": "alerts-backend",
      "gifs": true
    }
  ],
  "alerts": [
    {
      "metric": "http.count",
      "statistic": "sum",
      "threshold": 100,
      "action": "email.backend"
    },
    {
      "metric": "http.5xx",
      "statistic": "sum",
      "threshold": 5,
      "action": "slack.backend",
      "description": "Server errors"
    },
    {
      "metric": "http.5xx",
      "statistic": "sum",
      "threshold": 25,
      "action": "text.backend",
      "description": "Server errors"
    },
    {
      "metric": "http.latency",
      "statistic": "avg",
      "threshold": 1500,
      "period": "10m",
      "action": "slack.backend",
      "description": "Large traffic spike"
    }
  ]
}

Чтобы создать все эти предупреждения, просто запустите up stack plan и up stack apply после просмотра изменений.

Ознакомьтесь с документацией, чтобы узнать больше.

Зашифрованные переменные среды

Up Pro имеет зашифрованные переменные среды, что является важной функцией для любого производственного приложения.

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

Переменные по умолчанию относятся ко всем средам, вы можете переопределить эти значения с помощью флага стадии -s или, если вы предпочитаете быть явным, укажите стадию для каждого определения.

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

Ознакомьтесь с документацией, чтобы узнать больше.

Автозаполнение конфигурации с помощью JSON-схемы

Up now имеет официальное определение схемы JSON, используемое для улучшения возможностей редактирования. Проект Schema Store поддерживается многими редакторами, чтобы помочь в написании конфигурации. Я не знал, что этот проект существует до недавнего времени, но он отлично подходит для меньшего количества посещений документации.

Улучшения ведения журнала

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

$ up logs 'method=GET path=/foo/bar'
$ up logs 'method in (GET, HEAD, OPTIONS)'
$ up logs 'cart.products[0].name = ps4'

Другое небольшое изменение заключается в том, что теперь подразумевается поле message. Когда вы работаете со структурированными журналами, сообщение никогда не должно содержать динамическое содержимое, например user signed in - хорошее сообщение, а user Tobi signed in - нет. Раньше для запроса сообщений вам нужно было сделать:

(message="user login" or message="user logout") name=tj

Теперь это можно упростить до:

("user login" or "user logout") name=tj

Бревна теперь тоже имеют фиолетовый оттенок:

Я буду продолжать делать журналы более естественными, но это уже получается!

Небольшие изменения

  • Добавлено 4 дополнительных крючка
  • Вывод CI - это простой текст для CI=true или --format=plain
  • Загрузка нескольких частей S3 стала примерно на 30% быстрее (по franciscocpg на GH)
  • Загрузки S3 снимают ограничение на загрузку в 50 МБ (автор franciscocpg на GH)
  • переменные среды доступны up start и хукам
  • NODE_ENV заполняется автоматически

Изменения политики IAM

Существующим пользователям может потребоваться обновить свою политику IAM, так как S3 теперь используется для загрузки функций Lambda, если вы не используете root-аккаунт AWS.

Если интересно - загляните в Подписка на Up Pro и помогите поддержать проект! Ранние последователи могут использовать купон up-early-followers-57AAA8693354 на 50% скидку (навсегда), поскольку я продолжаю работать над версией 1.0, скоро появится много нового!