Революционная концепция настройки конфигураций с помощью языка программирования.

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

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

Эта проблема

Однако, когда конфигурации становятся сложными, становится трудно просматривать файлы YAML. Несмотря на то, что этот язык был разработан для использования в файлах конфигурации, становится легче делать ошибки, особенно опечатки. Почему мы не можем описывать компоненты на таких языках программирования, как Java или Python? Это позволило бы разработчикам читать реальный код и вносить в него свой вклад. Или можем?

Решение

Да мы можем. AWS Cloud Development Kit позволяет описывать облачную инфраструктуру с помощью языков программирования.

AWS Cloud Development Kit (AWS CDK) - это среда разработки программного обеспечения с открытым исходным кодом, позволяющая определять ресурсы облачных приложений с помощью знакомых языков программирования.

У Amazon есть сервис AWS CloudFormation для предоставления различных облачных компонентов в виде кода. Это основная служба для этой цели, использующая формат YAML или JSON.

AWS CDK делает следующее: он преобразует код, написанный на одном из поддерживаемых языков программирования, в файлы конфигурации для CloudFormation. Позже он загружает стек CloudFormation в AWS. Необходимые ресурсы будут предоставлены в соответствии с кодом.

Как

Мы можем рассмотреть простой пример, чтобы увидеть, с чего начать. Прежде всего, нам нужно установить Cloud Development Kit с помощью следующей команды.

npm install -g aws-cdk

Теперь приступим к написанию кода. Мы можем сделать это сразу, создав новый файл. Или мы можем инициализировать каталог с настройкой по умолчанию. Для Python мы бы выполнили следующую команду.

cdk init app --language python

В настоящее время AWS CDK поддерживает Python, Java, Javascript, C #, Typescript и Go.

Давайте построим очень простую инфраструктуру: мы создадим сегмент S3 и тему SNS. Мы используем тему SNS для отправки уведомления, когда в корзине создается новый объект.

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

Что делать дальше? Мы можем развернуть код в AWS с помощью команды cdk deploy. Под капотом он сгенерирует код CloudFormation и загрузит его. Вот и все. Создание инфраструктуры приложения и управление ею стало еще проще.

Полезные советы

Также есть несколько команд, которые могут оказаться полезными. Если вам интересно, какой код CloudFormation будет использоваться за сценой, вы можете запустить команду cdk synth. Он распечатает конфигурацию YAML, представляющую ваш код.

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

Исходный код CDK для каждого языка хорошо разбит на модули. Это означает, что мы должны устанавливать пакеты отдельно. Например, чтобы установить пакет S3 для Python, мы должны запустить команду pip install aws-cdk.aws-s3.

Заключение

Amazon Web Services произвел революцию в работе инженеров DevOps. Благодаря возможности писать код для инфраструктуры на любом языке программирования граница между разработкой и операциями стирается. Команды разработчиков имеют право установить облачную настройку для своих нужд.

Исходный код этого примера приложения доступен на GitHub. Также AWS CDK имеет хорошую и исчерпывающую документацию. А теперь поэкспериментируйте с этой впечатляющей технологией. Удачного кодирования!

Больше контента на plainenglish.io