Читаем Terraform: инфраструктура на уровне кода полностью

Здесь сравниваются не совсем равнозначные вещи, поскольку разные инструменты используют разные методы управления версиями, но некоторые тенденции бросаются в глаза. Terraform, безусловно, является самым молодым инструментом IaC в этом сравнении. Он все еще не достиг версии 1.0.0, поэтому не ожидайте гарантий стабильного или обратно совместимого API, и программные ошибки встречаются относительно часто (хотя большинство из них незначительные). Это самое слабое место Terraform: несмотря на достижение огромной популярности за короткое время и применение передовых технологий, это менее зрелый проект по сравнению с некоторыми другими средствами IaC.

Совместное использование нескольких инструментов

Я сравнивал разные инструменты IaC на протяжении всей этой главы, но в реальности при построении своей инфраструктуры вам, скорее всего, придется работать сразу с несколькими из них. У каждого представленного здесь инструмента есть свои сильные и слабые стороны, и вы должны выбрать подходящий для ваших задач вариант.

Далее описываются три распространенные комбинации, которые хорошо себя проявили в ряде компаний.

Инициализация ресурсов плюс управление конфигурацией

Пример: Terraform и Ansible. Terraform используется для развертывания всей внутренней инфраструктуры, включая топологию сети (то есть виртуальные частные облака (virtual private cloud, или VPC), подсети, таблицы маршрутизации), хранилища данных (MySQL, Redis), балансировщики нагрузки и серверы. Ansible берет на себя развертывание ваших приложений поверх этих серверов, как показано на рис. 1.9.

Рис. 1.9. Совместное использование Terraform и Ansible

Этот подход позволяет быстро приступить к работе, поскольку вам не нужна никакая дополнительная инфраструктура (Terraform и Ansible — сугубо клиентские приложения) и оба инструмента можно интегрировать множеством разных способов (например, Terraform назначает вашим серверам специальные теги, которые Ansible использует для поиска и конфигурации этих серверов). Основной недостаток состоит в том, что применение Ansible обычно подразумевает много процедурного кода и изменяемые серверы, поэтому расширение кодовой базы, инфраструктуры и вашей команды может осложнить обслуживание.

Инициализация ресурсов плюс шаблонизация серверов

Пример: Terraform и Packer. Packer используется для упаковки ваших приложений в виде образов ВМ. Затем Terraform развертывает: а) серверы с помощью этих образов; б) всю остальную инфраструктуру, включая топологию сети (то есть VPC, подсети, таблицы маршрутизации), хранилища данных (как MySQL, Redis) и балансировщики нагрузки. Это проиллюстрировано на рис. 1.10.

Рис. 1.10. Совместное применение Terraform и Packer

Этот подход тоже позволяет быстро приступить к работе, так как вам не нужна никакая дополнительная инфраструктура (Terraform и Packer являются сугубо клиентскими приложениями). Позже в этой книге вы сможете вдоволь попрактиковаться в развертывании образов ВМ с помощью Terraform. Кроме того, вы получаете неизменяемую инфраструктуру, что упростит ее обслуживание. Однако у этой комбинации есть два существенных недостатка. Во-первых, на сборку и развертывание образов ВМ может уходить много времени, что замедлит выпуск обновлений. Во-вторых, как вы увидите в последующих главах, Terraform поддерживает ограниченный набор стратегий развертывания (например, сам по себе этот инструмент не позволяет реализовать «сине-зеленые» обновления), поэтому вам придется либо написать много сложных скриптов, либо обратиться к средствам оркестрации, как это будет показано далее.

Инициализация ресурсов плюс шаблонизация серверов плюс оркестрация

Пример: Terraform, Packer, Docker и Kubernetes. Packer используется для создания образов ВМ с установленными Docker и Kubernetes. Затем Terraform развертывает: а) серверы с помощью этих образов; б) всю остальную инфраструктуру, включая топологию сети (VPC, подсети, таблицы маршрутизации), хранилища данных (MySQL, Redis) и балансировщики нагрузки. Когда серверы загрузятся, они сформируют кластер Kubernetes, которым вы будете запускать и администрировать свои приложения в виде контейнеров Docker (рис. 1.11).

Рис. 1.11. Совместное использование Terraform, Packer, Docker и Kubernetes

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Искусство управления IT-проектами
Искусство управления IT-проектами

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

Скотт Беркун

Деловая литература
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги