Третья причина, почему 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
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии