Хотя Microsoft своевременно отреагировала на отключение своей службы вычислений Azure на прошлой неделе, ей пришлось признать ошибку в программном обеспечении, которая на самом деле не должна была произойти.
В своем посте в блоге Windows Azure Microsoft признала, что причина, по которой ее облачная платформа Azure пострадала от серии сбоев в среду, заключалась в программном обеспечении, которое неправильно справилось с високосным годом.
Билл Лэйнг, вице-президент Microsoft по серверным и облачным технологиям, сказал, что, хотя расследование все еще продолжается, наиболее вероятная причина выглядит так, как будто это был дополнительный день февраля:
«Операторам Windows Azure стало известно о проблеме, влияющей на службу вычислений в ряде регионов. Проблема была быстро устранена, и было установлено, что она вызвана ошибкой программного обеспечения. В то время как окончательный анализ первопричин продолжается, эта проблема, по-видимому, связана с неправильным расчетом времени для високосного года. Как только мы обнаружили проблему, мы немедленно предприняли шаги по защите уже запущенных служб обслуживания клиентов и начали создавать исправления для этой проблемы.»
Конечно, очень неловко, что компания такого размера и ресурсов, как Microsoft, по-видимому, до сих пор не придумала, как кодировать свое программное обеспечение для работы в високосный год, и эпизоды, подобные этому, не делают ничего, чтобы сделать широкую общественность более доверчивой к НЕМУ в целом. С другой стороны, большинству из нас удалось запутаться в арифметике дат (и с учетом високосных лет) при кодировании; просто в целом нам пришлось признать ошибку только нескольким людям, а не половине мира.
Немного поздно для новогоднего решения, но, в духе неправильных дат, давайте все постараемся не забыть проверить случаи выбросов, а также медиану. Даже если високосный год наступает только раз в четыре года и влияет только на один день в одном месяце, это все равно важный тестовый случай.