На ранних стадиях эволюции организация может не соответствовать определенным требованиям безопасности. Но по мере роста и появления линий продуктов ситуация может измениться. Благодаря наличию выделенного локального хранилища артефактов обеспечивается более плавный переход на пути к достижению соответствия вышеупомянутым требованиям.
В идеале ваша локальная среда разработки должна иметь тот же доступ к внутреннему хранилищу артефактов, что и другие механизмы построения и развертывания, действующие в вашей среде. Поскольку одни и те же пакеты и зависимости используются в производственной среде и в локальной среде разработки, минимизируется вероятность появления синдрома «это работает на моем ноутбуке». Если же доступ ограничен или заблокирован, могут появиться новые способы выполнения тех или иных действий, которые обходят безопасность и другие политики.
РАННИЕ ПОЛИТИКИ
Раннее развертывание процессов управления содействует развитию сотрудничества в контексте среды и ограничений. Например, определите, кто и какие артефакты может выдвигать. Также установите, каким образом проверяются, лицензируются и обеспечиваются артефакты. Все это позволит избежать появления проблем, вызванных использованием устаревших артефактов.
Если в вашей среде отсутствует доступ к Интернету, вам придется сформировать свою собственную вселенную. Эта вселенная включает общие хранилища программ, серверы специфичных языковых пакетов, управление зависимостями и другие компоненты. Также должно воспроизводиться множество доступных общих служб. Создание подобной вселенной обеспечивает ряд преимуществ, в том числе защиту организации от незадокументированных разрушающих изменений свыше и от внешних сбоев, вызывающих внутренние проблемы. Если же при формировании зависимостей полагаться на Интернет, в конечном счете кто-то будет определять доступность и совместимость ваших сборок. Подобных ситуаций стараются не допускать многие организации.
В следующем списке приведена дополнительная терминология, относящаяся к управлению артефактами.
Управление зависимостями
Зависимости определяются характером и степенью взаимозависимости одного программного проекта от другого. Для выявления подобных зависимостей используются разные механизмы. На уровне артефактов для программного обеспечения может оказаться полезным сохранение зависимых артефактов.
Закрепление
Закрепление – это метод блокировки явной версии артефакта для окружающей среды. При управлении зависимостями может оказаться полезным определение явной версии зависимого артефакта программы, работающей с вашим проектом.
Продвижение
Продвижение – это метод выбора конкретной версии программного обеспечения для перемещения в сторону доставки, как правило, ключ к успешному прохождению тестов.
АвтоматизацияБлагодаря использованию средств автоматизации уменьшаются затраты рабочей силы, энергии и материалов, используемых в целях обеспечения качества, точности и корректности результатов.
Установка сервера
Под установкой сервера понимается автоматизация конфигурирования и настройки отдельных серверов. Производители оборудования, такие как HP и Dell, предоставляют инструмент, который можно использовать при работе с оборудованием этих брендов.
Некоторые дистрибутивы Linux также поддерживают инструменты, предназначенные для соответствующей операционной системы. Например, для установки сервера в среде Red Hat Enterprise Linux или CentOS могут использоваться Cobbler и Kickstart. Персонал из эксплуатационного отдела может создавать файлы Kickstart, которые определяют разбиение жесткого диска, конфигурирование сети, устанавливаемые пакеты ПО и т. п.
УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ОБОРУДОВАНИЯ
Каждая компания в той или иной форме должна иметь дело с управлением оборудованием или жизненным циклом. Благодаря появлению облачных и инфраструктурных либо платформенных служб эта задача немного упрощается. Жизненный цикл оборудования начинается с планирования и приобретения (либо аренды), продолжается установкой, обслуживанием и ремонтом, а завершается продажей, возвратом или утилизацией.
Автоматизация инфраструктуры
По существу, автоматизация инфраструктуры – это перевод элементов инфраструктуры на язык кода. Этот код подобен остальному программному обеспечению, дополнительно появляется возможность по восстановлению бизнеса с помощью резервных копий данных, хранилища кода и компьютерных ресурсов.
При описании управления инфраструктурой используется следующая дополнительная терминология.
Конфигурационный сдвиг
Этот термин описывает феномен, заключающийся в постепенном отклонении конфигурации серверов от начальной.
Среднее время работы между сбоями (mean time between failures; MTBF)
Среднее время работы между сбоями.
Среднее время восстановления (mean time to repair; MTTR)
Период времени, необходимый для восстановления работоспособности системы.
Доступность
Широко используемая единица измерения, показывающая, как часто система или услуга оказывается доступной по сравнению с общим временем ее потенциальной полезности. Доступность = MTBF / (MTBF + MTTR).
Управление мощностями
Процесс, используемый для обеспечения соответствия между потенциалом инфраструктуры (а также другими ресурсами) и текущими, а также будущими потребностями бизнеса эффективным образом.
Сервер-«снежинка[42]»
Текущая желаемая конфигурация этого сервера достигается в результате выполнения множества ручных изменений. В процессе выполнения изменений часто используются инструменты командной строки, файлы конфигурации, примененные вручную заплаты и даже конфигурации и инсталляции графического интерфейса пользователя.
Автоматизация инфраструктуры зачастую трактуется как управление конфигурацией специалистом из отдела техобслуживания. И это действительно так, поскольку многие аспекты управления конфигурацией могут быть автоматизированы. В частности, это касается идентификации программных пакетов, установленных на сервере, определения версий этих пакетов, которые должны быть использованы, проверки наличия или отсутствия различных системных файлов, определения служб, которые должны выполняться.
«Трактовка кода инфраструктуры как всего остального программного обеспечения» означает, что код был разработан с помощью обычной локальной среды разработки и версионирован с применением системы контроля версий. Также использовалось версионирование в виде артефактов в хранилище артефактов, тестирование и верификация перед вводом в эксплуатацию.
Автоматизация инфраструктуры по минимуму должна обеспечивать следующее.
Управление конфигурационным сдвигом
Конфигурационный сдвиг может возникать из-за изменений, внесенных вручную, обновления программного обеспечения, ошибок или законов энтропии. В этом случае нужен способ, позволяющий избежать подобных негативных проявлений. Зачастую выделяется отдельный узел, для которого выполняется регулярная проверка фактической конфигурации, которая сравнивается с реальной конфигурацией. В случае обнаружения каких-либо несоответствий выполняется самокорректировка.
Исключение серверов-«снежинок»
При автоматизации инфраструктуры можно обойтись без создания серверов-«снежинок». Для этого требуется четкое и детерминированное определение изменений. Чтобы исключить серверы-«снежинки», можно включить управление для одной части системы до тех пор, пока тот же «рецепт» управления конфигурацией не будет применен для воссоздания сервера «с нуля» с применением желаемой конфигурации.
Версионированные артефакты инфраструктурного кода
Хорошее решение автоматизации инфраструктуры предусматривает использование контроля версий и хранилища артефактов. В результате код, который определяет конфигурацию сервера, может версионироваться со всеми преимуществами, предоставляемыми версионированием. Например, обеспечивается возможность простого отката изменений обратно, к хорошо известной версии, либо использование перехватчиков, которые выполняют тестирование кода, задающего инфраструктуру, после выполнения транзакций. Также все члены команды могут в комфортных условиях вносить свой вклад в улучшение кода инфраструктуры.
Минимизация сложности
Решения автоматизации инфраструктуры позволяют отдельным сотрудникам (независимо от выполняемой ими роли) управлять гетерогенной средой с минимальными затратами. Необходимое условие – указание версий конфигурации для типа или версии платформы.
Даже в стартапе с минимальным количеством систем не следует накапливать технические «долги». Благодаря инвестициям в сотрудников, которые понимают разницу между сценариями оболочки и автоматизацией инфраструктуры сервера-«снежинки», вы получите быструю отдачу.
Если доступные средства автоматизации инфраструктуры не удовлетворяют