Инфраструктура как код

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

Проще говоря, инфраструктура как код (IaC) означает управление ИТ-инфраструктурой с помощью файлов конфигурации.

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

Что такое« Инфраструктура как код и чем отличаются Terraform, CDK Ansible?»

AWS CDK

  • AWS Cloud Development Kit (AWS CDK) - это среда разработки программного обеспечения с открытым исходным кодом, позволяющая определять облачную инфраструктуру в коде и предоставлять ее с помощью AWS CloudFormation.
  • Он предлагает высокоуровневую объектно-ориентированную абстракцию для императивного определения ресурсов AWS с использованием возможностей современных языков программирования. Используя библиотеку инфраструктурных конструкций CDK, вы можете легко включить передовой опыт AWS в определение своей инфраструктуры и поделиться им, не беспокоясь о шаблонной логике.
  • AWS CDK имеет первоклассную поддержку TypeScript, JavaScript, Python, Java и C #.

Почему именно AWS CDK?

  • На основе AWS CloudFormation - AWS CDK позволяет определить инфраструктуру с помощью кода и подготовить ее с помощью AWS CloudFormation. Вы получаете все преимущества CloudFormation, включая повторяемое развертывание, простой откат и обнаружение дрейфа.
  • Используйте знакомые языки программирования, инструменты и рабочие процессы - AWS CDK позволяет моделировать инфраструктуру приложений с помощью TypeScript, Python, Java и .NET. С помощью CDK разработчики могут использовать существующие IDE, инструменты тестирования и шаблоны рабочих процессов. Используя такие инструменты, как автозаполнение и встроенная документация, AWS CDK позволяет вам тратить меньше времени на переключение между сервисной документацией и кодом.
  • Совместное развертывание инфраструктуры и кода среды выполнения - AWS CDK позволяет ссылаться на ресурсы кода среды выполнения в одном проекте с использованием одного и того же языка программирования. Например, вы можете включить код среды выполнения AWS Lambda или образ контейнера Docker в проект CDK, и при развертывании приложения инфраструктура CDK автоматически загружает и настраивает службу AWS с вашими активами среды выполнения. Когда развертывание CDK будет завершено, у вас будет полнофункциональное приложение.
  • Удобный для разработчиков интерфейс командной строки (CLI). Интерфейс командной строки AWS CDK позволяет взаимодействовать с приложениями CDK и обеспечивает такие функции, как синтез шаблона CFN, отображение различий между работающим стеком и предлагаемыми изменениями, подтверждение предварительных изменений, связанных с безопасностью. для развертывания и развертывания нескольких стеков в нескольких средах.

И другие преимущества

  • Используйте логику (операторы if, циклы for и т. Д.) При определении инфраструктуры.
  • Используйте объектно-ориентированные методы для создания модели вашей системы
  • Определите высокоуровневые абстракции, поделитесь ими и опубликуйте их для своей команды, компании или сообщества.
  • Организуйте свой проект в логические модули
  • Совместное использование и повторное использование вашей инфраструктуры в качестве библиотеки
  • Тестирование кода вашей инфраструктуры с использованием стандартных протоколов
  • Используйте существующий рабочий процесс проверки кода
  • Автозавершение кода в вашей среде IDE

Структура кода CDK

Приложения

  • Исполняемая программа
  • Используется для рендеринга и развертывания шаблонов cfn

Стеки

  • Развертываемый блок
  • Знает о регионе и аккаунте

Конструкции

  • Представления ресурсов AWS
  • Может образовывать иерархическую древовидную структуру

  • Приложение - это файлы, содержащие все необходимое для развертывания вашего приложения в облачной среде.
  • Стек. Единица развертывания в AWS CDK называется стеком. Все ресурсы AWS, определенные в рамках стека, прямо или косвенно, предоставляются как единое целое. Поскольку стеки AWS CDK реализуются через стеки AWS CloudFormation, они имеют те же ограничения, что и в AWS CloudFormation.
  • Конструкции - это основные строительные блоки приложений AWS CDK. Конструкция представляет собой «облачный компонент» и инкапсулирует все, что необходимо AWS CloudFormation для создания компонента.

Конструкция может представлять отдельный ресурс, например корзину Amazon Simple Storage Service (Amazon S3), или может представлять компонент более высокого уровня, состоящий из нескольких ресурсов AWS. Примеры таких компонентов включают рабочую очередь со связанной с ней вычислительной мощностью, задание cron с мониторингом ресурсов и панелью мониторинга или даже целое приложение, охватывающее несколько учетных записей AWS и регионов.

Подробнее о конструкциях

Конструкция уровня 1

Ресурсы CFN периодически создаются на основе спецификации ресурсов AWS CloudFormation. Они называются CfnXyz, где Xyz - имя ресурса. Например, CfnBucket представляет ресурс AWS :: S3 :: Bucket AWS CloudFormation. При использовании ресурсов Cfn необходимо явно настроить все свойства ресурсов, что требует полного понимания деталей базовой модели ресурсов AWS CloudFormation.

Конструкция 2-го уровня

Следующий уровень конструкций, L2, также представляет ресурсы AWS, но с API более высокого уровня, основанным на намерениях. Они предоставляют аналогичные функции, но предоставляют значения по умолчанию, шаблон и логику связки, которую вы бы сами написали с помощью конструкции CFN Resource. Конструкции AWS предлагают удобные значения по умолчанию и уменьшают необходимость знать все подробности о ресурсах AWS, которые они представляют, а также предоставляют удобные методы, упрощающие работу с ресурсом. Например, класс s3.Bucket представляет корзину Amazon S3 с дополнительными свойствами и методами, такими как bucket.addLifeCycleRule (), который добавляет в корзину правило жизненного цикла.

Построение паттернов

Наконец, библиотека AWS Construct включает конструкции более высокого уровня, которые мы называем шаблонами. Эти конструкции разработаны, чтобы помочь вам выполнять общие задачи в AWS, часто с использованием нескольких видов ресурсов. Например, конструкция aws-ecs-patterns.ApplicationLoadBalancedFargateService представляет архитектуру, которая включает контейнерный кластер AWS Fargate, использующий балансировщик нагрузки приложений (ALB). Конструкция aws-apigateway.LambdaRestApi представляет API-интерфейс Amazon API Gateway, поддерживаемый функцией AWS Lambda.

Жизненный цикл CDK

  1. CDK (с помощью AWS CLI) компилирует свое «приложение» (приложение - это исполняемая программа, содержащая стеки и конструкции.
  2. CDK синтезирует код для преобразования его в шаблон CloudFormation. Когда вы run cdk развертываете код, который мы поместили в lib/<code_name>.ts, он анализируется платформой CDK, которая затем генерирует шаблон CloudFormation, расположенный в папке cdk.out, и, наконец, развертывает его в CloudFormation.
  3. Шаблон CloudFormation развертывается в учетной записи AWS и запускается для создания всех компонентов AWS.

Рабочий процесс AWS

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