Рубрики
Uncategorized

Собираетесь полностью без промежутков с помощью Nextjs и Terraform

Если вы работаете в компании, где у них есть неверная инфраструктура, вы можете быть заинтересованы в этом L … Помечено JavaScript, безверенно, реагировать, дежопт.

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

Мы пошли жить с веб-сайтом электронной коммерции, который работает на облачной инфраструктуре, веб-сайт тоже.

Почему?

SEO для моего клиента важен, так как для многих веб-сайтов там есть. Когда мы запустили первую версию сайта ( SPA ), нам пришлось поставить на место перенаправления, метаданные, название, описания и т. Д. Через несколько недель от нашего запуска мы заметили, что на Google новые страницы не были правильно проиндексированы. Мы верили, что GoogleBot смог выполнить JavaScript и понять асинхронный код, но нет. Или, по крайней мере, это не работало, как мы ожидали.

Вот когда мы решили реформировать существующее приложение и использовать Nextjs Отказ Он предлагает ССР, который был то, что мы хотели.

Развертывание

Через несколько дней я начал оценивать то, как развертывается на производстве новый веб-сайт. Как старая школа, я мог бы настроить веб-сервер и вернуть запрошенную HTML. Хотя это не работает хорошо на серверу по нескольким причинам. Особенно с Nextjs.

NextJS, недавно выпустив фантастическую функцию, которая позволяет нам экспортировать файлы страницы, которые можно использовать непосредственно на Сердечная среда Действительно Хотя, есть улов: эти файлы нельзя бросить прямо в свой облачный провайдер! Здесь у вас нет много документации о том, как продолжить.

Вот когда я и мой коллега из DevOps решили использовать террафом (вместо облачности) создавать наши безмерные ресурсы. Да, мой клиент использует AWS как облачный провайдер.

Я изучал разные решения. Смертные рамки был одним из них. К сожалению, это не очень хорошо играет с количеством страниц, которые у нас есть. После приблизительной оценки мы обнаружили, что нам нужно больше или меньше 10 ресурсов для каждой страницы, в течение почти 300 ресурсов, которые будут изменены/уничтожены/созданы в каждом развертывании! Стоимость этого была огромной (деньги и время).

Интеграция

Террафом Был ли наш способ пойти. В этот момент я начал создавать сценарий, который будет интерфейс Nextjs и Terraform.

Как я уже говорил ранее, существует не так много примеров того, как интегрировать Nextjes Serverless Build с существующими облачными поставщиками. Пример того, что в настоящее время есть только для использования сейчас , что является программным обеспечением недвижимости.

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

Открытый исходный код

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

Terraform Nextjs плагин

Как это использовать

Просто создайте файл build.js И давайте поместим в этот код:

const generateResources = require('@ematipico/terraform-next-plugin');
const routes = {
  prefix: '',
  mappings: [
    { page: '/contactUs', route: '/contact-us'},
    { page: '/aboutUs', route: '/about-us'},
    { page: '/product', route: '/products/:product', params: {
       hideComments: false // <= it tells Terraform that this is not mandatory as query string param
    }}
  ]
};
generateResources({
  gatewayKey: 'MyAwesomeProject',
  lambdaPath: '../../ui-project',
  provider: 'AWS',
  routes
}, true) // <= write configuration on disk

Это понравилось, будет генерировать два файла, которые должны быть даны террафом: Gateway.terrasom.tf.json и lambdas.terrasom.tf.json Отказ

Вы должны запустить build.js Скрипт после запуска Следующая сборка команда Отказ

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

Конечно, вам все еще нужен основной файл конфигурации Terraform, чтобы развернуть все. Так что еще есть некоторые дежопты работы. Потенциально это может быть охвачено этой библиотекой, но это зависит от потребностей потребителей.

Вы можете проверить небольшой пример в Тест интеграции Отказ

Библиотека сейчас в постоянном развитии, чтобы убедиться, что она охватывает большую часть требований там!

Оригинал: «https://dev.to/ematipico/going-completely-serverless-with-nextjs-and-terraform-43b2»