Облачные технологии сместили границу между аппаратным и программным обеспечением, так что многие технические операции, ранее являвшиеся эксклюзивными гражданами мира аппаратного обеспечения, также являются субъектами программного обеспечения. Совместно используемые вычислительные среды могут быть такими же старыми, как и сами компьютеры 1, но облачные технологии могут популяризировать их, предлагая удобные и знакомые метафоры для взаимодействия с ними: пользователи облака резервируют экземпляр, полный компьютер или имитатор, в то время как в старых общих вычислительных средах есть все возможные наборы. с громоздкими ограничениями и «ваша программа должна быть загружена на этот FTP-сервер, она будет работать в среде X (обычно с 10-летней версией любого программного обеспечения, которое вы хотите использовать), в течение не более 60 минут» может показаться знакомым для бывших или реальных пользователей вычислительных центров.
Практическим следствием этого сдвига является то, что процедуры развертывания теперь могут быть представлены программными артефактами. (Процедуры развертывания - это инструкции, в которых рассказывается, как настроить инфраструктуру с базами данных, веб-серверами или чем-либо, принадлежащим этой инфраструктуре, а также с сетью, в которой они работают.) Благодаря этим новым объективам ручное обслуживание серверов выглядит примерно ручное исправление производственного кода - что только в очень редких случаях желательно. Ручное обслуживание может привести к несоответствиям между системами, фактически работающими в производстве, и кодом, описывающим эти системы, что, в свою очередь, означает невоспроизводимое поведение и невозможный анализ ошибок, двойное исправление ошибок и другие бедствия.
Модель неизменна сервер просто перестановка для облачных операций над мантра, в соответствии с которым мы должны избегать ручного обслуживания запущенных программ. Вместо настройки серверов вручную шаблон неизменяемого сервера рекомендует автоматизировать эту конфигурацию.
Реализация ароматов
Хотя общая идея шаблона неизменяемого сервера достаточно ясна, в реализации много нюансов. Например, некоторые подходы предлагают вообще не обновлять серверы, а вместо этого систематически заменять серверы. Это связано с тем, что обновление приводит к ситуации, когда развертывание состоит из серверов, которые были запущены несколько раз и прошли через несколько отдельных процессов обновления, что подразумевает неоднородный набор серверов и может привести к незначительным различиям в том, как серверы выполняют свои задания. Вторым популярным вариантом является дисциплина, касающаяся удаленного доступа к серверам. Некоторым нравится отключать полностью удаленный административный доступ к серверам, чтобы гарантировать, что ручное обслуживание никогда не происходит.
Историческая справка
Насколько мне известно, термин «неизменный сервер» популяризировался Кифом Моррисом, но сама идея намного старше. В 1999 году тюрьмы FreeBSD уже популяризировали идею полной автоматизации конфигурации одноразовых вычислительных сред. Именно так я начал внедрять шаблон «неизменный сервер» за много лет до того, как услышал это название для описания этой техники.
Неизменность, под видом физической неизменности на основе CD-ROM, также была популярной мерой для производства надежных вычислительных систем. Это не следует путать с неизменным шаблоном сервера.
1 Если мы не считаем автоматические столы станков или роликовые органы компьютерами.