Облачные сервисы Windows Azure и убийственная звездочка

в 9:43, , рубрики: azure, windows azure, Блог компании ABBYY, инфраструктура, ит-инфраструктура, надежность, Облачные вычисления, метки: , , ,

Облачные сервисы Windows Azure и убийственная звездочкаОдной из удобных плюшек облачных сервисов Windows Azure (PaaS, так называемые web и worker роли) является отсутствие необходимости устанавливать, настраивать и поддерживать операционную систему. Вместо этого разработчик может сосредоточиться на разработке начинки сервиса, которую затем в виде специального пакета он публикует в облако, после чего инфраструктура Windows Azure разворачивает его на виртуальных машинах с уже установленной, настроенной и оптимально пропатченной операционной системой, которую затем при необходимости сама же может обновить.

За все приходится платить. Если что-то звучит слишком хорошо, это неспроста. По умолчанию инфраструктура Windows Azure может в произвольный момент обновить операционную систему и далеко не факт, что после обновления ваш сервис сможет продолжить работу.

Рассмотрим подробно, как это происходит.

Для начала, вам стоит обратить внимание на вот этот RSS, в котором публикуются сообщения о предстоящих обновлениях операционных систем. Прикопайте, и продолжим.

Все описанное ниже есть в англоязычном MSDN в виде вот этой очень обстоятельно написанной статьи, которая постоянно обновляется. В русскоязычном MSDN аналогичная статья давно устарела, рассчитывать на нее не стоит.

Windows Azure позволяет задать два параметра, указывающих, на какой операционной системе должен работать сервис.

Первый параметр – «семейство» ОС, osFamily в файле настроек сервиса. Допустимые значения: 1 (Windows 2008), 2 (Windows 2008 R2), 3 (Windows 2012), в будущем наверняка появятся еще варианты. По умолчанию используется «семейство» 1.

Второй параметр – «версия» ОС, osVersion в файле настроек, это строка вида WA-GUEST-OS-2.15_201305-01, которая указывает на конкретный образ диска с ОС заданного «семейства» с установленным конкретным набором обновлений и другими изменениями. По умолчанию используется значение "*" (та самая звездочка из названия поста), при котором инфраструктура Windows Azure должна запускать сервис на самой новой «версии» ОС и по мере выхода новых «версий» ОС переводить сервис на эти новые «версии».

Переход на новую «версию» происходит так. Сначала постепенно обновляются все сервисы, у которых стоит osVersion="*" (или отсутствует эта настройка), это занимает примерно неделю, затем новая «версия» становится доступной для явного выбора.

Блаблабла, блаблабла, вот как это происходит на самом деле.

В какой-то момент Microsoft решает, что политики безопасности по умолчанию недостаточно безопасные и нужно затянуть гайки. В том самом RSS появляется сообщение о том, что в следующей «версии» будут затянуты гайки, и ссылка на подробности с комментарием «пожалуйста, посмотрите, и проверьте, что у вас ничего не сломается». Затем через две недели в 15 часов в пятницу по вашему местному времени ваш сервис с настройкой osVersion="*" обновляют и оказывается, что с новыми политиками безопасности у вас ничего не работает. Остаток пятницы вы проводите за срочной починкой сервиса и размышлениями о том, что вам повезло, что обновление не пришлось на выходные.

На всякий случай нужно повторить: сначала обновляются сервисы с osVersion="*" и только после этого новая «версия» становится доступной для явного выбора. Если сервис настроен на osVersion="*", его обновят (не «могут обновить», а именно «обновят») прежде, чем появится возможность даже попробовать новую «версию». По сути, с этой настройкой ваш сервис может быть обновлен и имеет неплохие шансы сломаться в любой момент, и эта настройка выставлена по умолчанию.

Если вы не хотите, чтобы ваш сервис КРАЙНЕ НЕОЖИДАННО сломался в ночь с субботы на воскресенье, стоит перестать полагаться на «звездочку».

Дмитрий Мещеряков,
департамент продуктов для разработчиков

Автор: DmitryMe

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js