Рубрики
Uncategorized

Управление инфраструктурой многоразовой платформы электронной коммерции с террафором

Настройка и обслуживание инфраструктуры для многоразовой платформы электронной коммерции с микросервисом A … Помечено террафором, архитектурой, дежопами.

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

Наша команда использует Azure Как наш облачный поставщик для управления всеми этими ресурсами. Каждый сервис использует разные ресурсы, связанные с бизнес-логикой, которую они обрабатывают. Мы используем такие ресурсы, как Azure Service Bus обрабатывать асинхронную связь между ними и Azure Key Vault хранить секреты и переменные среды.

В тех, где нам нужен настойчивый слой, мы полагаемся на ресурсы Azure Cosmos DB или База данных Azure для PostgreSQL . Другие услуги предоставляют API для поиска среди каталога продуктов с Лазурный когнитивный поиск Отказ Как я объясню позже, мы работаем с разными среды Поэтому создание и обновление ресурсов на них становится сложнее.

Если вы хотите лучше понять контекст многоразовая платформа электронной коммерции Я упоминаю в этой лекции, я рекомендую вам взглянуть на Эта статья . Хотя архитектура немного изменилась, основная концепция платформы повторно используемой электронной коммерции остается неизменной, что делает эту статью легче понять.

Итак, как вы отслеживаете все ресурсы услуг, которые используются через них?

Это где Террафом приходит в удобное.

  • Что такое террафор
    • Модули
    • Ресурсы
    • План террафора
    • Террафом применяется
    • Состояние
  • Как мы его используем
    • Система управления версиями
    • Переменные террафора
    • Среда и Cicd
  • Выводы

Что такое террафор

Логотип террафора от Hashicorp

Террафом Это инфраструктура с открытым исходным кодом, поскольку программный инструмент CODE, разработанный Hashicorp. Он обеспечивает последовательный рабочий процесс CLI для управления сотнями облачных служб в файлах конфигурации. Здесь является официальным руководством о том, как его установить.

Terraform — это инструмент, который помогает вам управлять различными файлами конфигурации кодирования услуг облачной инфраструктуры, где вы можете настроить необходимые. Он имеет поддержку основных поставщиков облаков, таких как AWS, Azure или GCP.

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

Модули

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

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

Ресурсы

Ресурсы — это ключ Элемент в террафоре. Каждый из них описывает облачный сервис, такой как вычисленный экземпляр, система настойчивости или записи DNS.

Вот простой пример того, как мы бы определили ресурс, который мы хотим использовать в нашей инфраструктуре:

terraform {
  required_providers {
    food = {
      source  = "hashicorp/food"
      version = "~> 1.0.4"
    }
  }
}

resource "food_tapas" "spanish_omelet" {
  ingredient_1 = "eggs"
  ingredient_2 = "onions"
  Ingredient_3 = "potatoes"
}

Язык, используемый в террафоре, — это Язык конфигурации Hashicorp (HCl) Отказ В приведенном выше примере мы сначала указываем облачный провайдер еда Отказ Затем определите ресурс типа food_tapas с именем Spanish_omelet Отказ Внутри блока ресурсов у нас есть аргументы конфигурации, которые являются ингредиентами для этого вкусного ресурса.

План террафора

Как только все ресурсы инфраструктуры были определены, A План бежит. Здесь Terraform проверяет код для синтаксических ошибок, проверки состояния, аутентификации API, а затем выводит сводку изменений.

Бег План террафора Позволяет проверить, следует ли применять план для такой конфигурации, то он ожидал, прежде чем изменить инфраструктуру.

Вот пример резюме вывода, которое мы получим при запуске План террафора с примером ресурса

$ terraform plan
An execution plan has been generated and is shown below.

Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # food_tapas.spanish_omelet will be created
  + resource "food_tapas" "spanish_omelet" {
        + id                = (known after apply)
        + ingredient_1      = "eggs"
        + ingredient_2      = "onions"
        + ingredient_3      = "potatoes"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Террафом применяется

После подтверждения, краткое изложение изменений — это те, которые требуются, мы выполняем их с Террафом применяется Отказ

После успешной работы консоль показывает этот выход.

 Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

И это общий вид определения и создания ваших инфраструктурных ресурсов в автоматизированный способ. Все через файлы конфигурации Удаление ручного процесса.

Террафом ресурс испанский омлет из Casa Paco, Мадрид

Состояние

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

Когда удаленный объект создан, его идентичность записывается против определенного экземпляра ресурса.

Будущие изменения конфигурации будут обновлять состояние и сделать обновление Terraform или удалить этот объект.

Как мы его используем

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

Система управления версиями

Наличие всей инфраструктуры, определенной в файлах кода означает, что мы можем использовать VCS (Версия контроля системы). Мы выбираем Git и разместите его в репозитории GitHub. Таким образом, мы можем вести контроль истории ресурсов, которые мы использовали.

Кроме того, интеграция с GitHub позволяет нам работать с запросами на тягу, чтобы добавить, изменить или уничтожить ресурсы из инфраструктуры.

Хотя состояние террафора хранится локально по умолчанию в файле с именем Terraform.tfstate Мы храним его удаленно за пределами VCS. Это хорошая практика при работе в командной среде.

Переменные террафора

Быть многоразовой платформой означает, что ее инфраструктура должна быть одинаковой в каждом магазине, которую мы создаем. С террафом, мы достигаем этого, определив Переменная ввода террафора называется Shops_to_Apply Отказ

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

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

variable "shops_to_apply" {
  default = {
   happy  = "happyReadings"
   world  = "worldOfWaves"   
   healt  = "healthyFruits"
  }
}

Затем в каждом ресурсе мы используем террафору for_each meta-аргумент итереть их.

resource "azurerm_postgresql_database" "orders-api-service" {
  for_each            = var.shops_to_apply
  name                = "${each.key}-orders-api-service"
  ... other config
}

Среда и Cicd

Мы работаем с тремя средами:

  • Развитие: Окружающая среда тестирования, в которой все услуги новых функций, рефакторов и исправлений ошибок выпускаются один раз, объединенные в основную ветку репозитория.
  • Постановка: Зеркало производственной среды. Когда изменения были должным образом реализованы в развитии, они способствуют этой среде. В этой среде мы можем увидеть, как они будут работать в производственной ситуации.
  • Производство: Окружающая среда пользователь имеет доступ к. Последняя среда, где изменения продвигаются от постановки.

Не все изменения видны сразу в каждой среде. Мы используем Configcat. Как наша система флагов функций, чтобы получить большинство из изменений, видимых или нет.

Мы используем Действия GitHub и Azure DevOps Для нашей непрерывной интеграции и системы непрерывной доставки. Когда изменения на репозитории инфраструктуры террафора добавляются в главную ветку, система CICD запускается, а план выполнен в наших условиях развития. Когда журналы из плана ожидаемые, которые мы вручную запускаем Применить Отказ

Выводы

Имея инфраструктуру, определенную в качестве кода, принесли нам ничего, кроме улучшения нашей платформе. Вот список их:

  • Уменьшить человеческую ошибку и увеличить автоматизацию. Меньшее ресурсы, которые вы настраиваете вручную, тем меньше ошибок, которые вы получаете в долгосрочной перспективе.
  • Легче поддерживать Поскольку вся инфраструктура закодирована в конфигурации файлов. Плюс мы Использование репозиториев GitHUB и запросы на тягу сотрудничать все вместе.
  • Инфраструктура — легче изменить по сравнению с традиционными ручными способами.
  • Все файлы конфигурации работают как Документация ресурсов Мы используем.
  • Благодаря использованию переменных мы Ускорить процесс настройки новых платформ электронной коммерции.
  • Обновление и удаление ресурсов — это деликатная тема. Наличие надлежащего CICD позволяет нам прогнозировать и внести изменения в инфраструктуру в безопасном порядке.
  • Мы можем легко Предоставление нашего развития, постановки и производственной среды с той же последовательной конфигурацией.

Оригинал: «https://dev.to/dcsl-guidesmiths/managing-the-infrastructure-of-a-reusable-ecommerce-platform-with-terraform-51dg»