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

Третья причина, почему DevOps занимает столько времени (имманентная сложность этой проблемы), состоит в том, что для подготовки инфраструктуры к промышленному использованию необходимо решить довольно длинный список задач. Проблема в том, что множество разработчиков не догадываются о большей части пунктов в этом списке, поэтому при оценке сроков выполнения проекта они забывают об огромном количестве критически важных деталей, которые отнимают много времени. Этому списку посвящен следующий раздел.

Требования к инфраструктуре промышленного уровня

Попробуйте такой забавный эксперимент: пройдитесь по своей компании и поспрашивайте, каковы требования для перехода в промышленную среду. Чаще всего первые пять человек дадут пять разных ответов. Один из них упомянет необходимость в измерении показателей и оповещениях; другой расскажет о планировании емкости и высокой доступности; кто-то начнет разглагольствовать об автоматических тестах и разборе кода; а кто-то затронет тему шифрования, аутентификации и укрепления серверов. Если вам повезет, один из респондентов может вспомнить о резервном копировании данных и агрегации журнальных записей. У большинства компаний нет четкого списка требований к выпуску промышленной системы. Значит, каждый элемент инфраструктуры развертывается немного по-своему и ему может недоставать каких-то критически важных функций.

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

Таблица 6.2. Список задач для подготовки инфраструктуры промышленного уровня

Задача

Описание

Примеры инструментов

Установка

Установите исполняемые файлы ПО и все зависимости

Bash, Chef, Ansible, Puppet

Конфигурация

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

Bash, Chef, Ansible, Puppet

Инициализация

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

Terraform, CloudFormation

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

Разверните сервис поверх инфраструктуры. Выкатывайте обновления с нулевым временем простоя, включая «сине-зеленые», скользящие и канареечные развертывания

Terraform, CloudFormation, Kubernetes, ECS

Высокая доступность

Система должна выдерживать перебои в работе отдельных процессов, серверов, сервисов, вычислительных центров и регионов

Несколько вычислительных центров и регионов, репликация, автомасштабирование, распределение нагрузки

Масштабируемость

Масштабируйте систему в зависимости от нагрузки. Это касается как горизонтального (больше серверов), так и вертикального масштабирования (более крупные серверы)

Автомасштабирование, репликация, сегментирование, кэширование, стратегия «разделяй и властвуй»

Производительность

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

Dynatrace, valgrind, VisualVM, ab, Jmeter

Сеть

Сконфигурируйте статические и динамические IP-адреса, порты, обнаружение сервисов, брандмауэры, DNS, а также доступ по SSH и VPN

Облака VPC, брандмауэры, маршрутизаторы, регистраторы DNS, OpenVPN

Безопасность

Шифрование при передаче (TLS) и на диске, аутентификация, авторизация, управление конфиденциальными данными, укрепление серверов

ACM, Let’s Encrypt, KMS, Cognito, Vault, CIS

Показатели

Показатели доступности, бизнес-показатели, показатели приложения, показатели серверов, события, наблюдаемость, трассировка и оповещения

CloudWatch, DataDog, New Relic, Honeycomb

Журнальные записи

Организуйте чередование журнальных файлов на диске. Агрегируйте журнальные данные в центральном месте

CloudWatch Logs, ELK, Sumo Logic, Papertrail

Резервное копирование и восстановление

Проводите плановое резервное копирование БД, кэшей и других данных. Реплицируйте данные для разделения регионов или учетных записей

RDS, ElastiCache, репликация

Оптимизация расходов

Выбирайте подходящие типы серверов, используйте прерываемые и резервируемые серверы, применяйте автомасштабирование и избавляйтесь от ненужных ресурсов

Автомасштабирование, прерываемые и резервируемые серверы

Документация

Документируйте свой код, архитектуру и практикуемые методики. Создавайте плейбуки на случай разных происшествий

README, вики, Slack

Тесты

Пишите для своего инфраструктурного кода автоматические тесты. Выполняйте их после каждой фиксации кода и по ночам

Terratest, inspec, serverspec, kitchen-terraform

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

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

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

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

Скотт Беркун

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

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

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

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

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