Когда стоит рассматривать частное облако?
Идея развёртывания частного облака — размещённого у провайдера или на собственной площадке — для нужд отдельной компании стремительно становится обычной практикой. Всё больше предприятий узнают о облачных вычислениях и понимают, что запуск собственной облачной платформы вполне осуществим и потенциально выгоден для бизнеса. Однако из-за общей нехватки знаний о облаке всё чаще случается, что облачные решения рекомендуются там, где они совершенно не подходят под нужды бизнеса, будучи ошибочно приняты за традиционные системы управления виртуализацией.
Облако — это особый тип платформы виртуализации, занимающий уникальную нишу. Облачные вычисления берут традиционную виртуализацию и надстраивают над ней автоматическое масштабирование и провизионирование, обеспечивающее быстрое горизонтальное масштабирование приложений. Это не типичная потребность бизнеса. Облако также хорошо подходит — и нередко ассоциируется — с самообслуживанием при выделении ресурсов, однако само по себе это не делает решение облачным и не оправдывает переход на облачную платформу, хотя и может стать дополнительным стимулом. Что делает облако интересным — это возможность предоставлять конечным пользователям порталы самообслуживания и возможность приложениям самостоятельно провизионировать себя. Именно это принципиально отличает облачную платформу от традиционной виртуализации.
Облако не подразумевает таких функций, как упрощённое управление всем доменом из единой консоли, масштабная консолидация, лёгкая миграция между аппаратными системами, быстрое развёртывание новых систем, виртуализация, высокая доступность, сверхобязательство ресурсов и т. д. Все эти функции доступны иными способами — прежде всего через стандартные платформы виртуализации (VMware vSphere, Microsoft HyperV, Xen и др.) или поверх них. Дело не в том, что эти функции нельзя реализовать в частном облаке, — просто они относятся не к облачному слою, а к базовой платформе виртуализации. Облачный слой находится выше и просто транслирует преимущества нижележащих уровней.
Зачастую к облаку обращаются из-за ошибочного представления о том, что многие функции, традиционно ассоциируемые с частными облаками, недоступны в каком-либо более простом виде. Это редко соответствует действительности. Обычные платформы виртуализации — чаще всего VMware vSphere и Microsoft HyperV — предлагают все эти возможности. Они позволяют создавать надёжные кластеры физических серверов, управляемые из единого интерфейса, с исключительно высокой надёжностью и быстрым провизионированием новых систем, требующим минимальных специальных знаний от IT-отдела и сохраняющим традиционные бизнес-процессы. В большинстве случаев, когда я общаюсь с компаниями, считающими, что им интересно владеть собственным облаком, нужные им функции на самом деле вовсе не являются облачными.
Термин «облако» в последнее время стал настолько популярен, что люди начали полагать: важные для всех функции должны быть связаны именно с ним, чтобы объяснить внезапный рост его значимости. Но это не так. Облако остаётся — и будет оставаться — преимущественно нишевым решением, подходящим для владения лишь очень небольшому числу компаний. Использование публичных облаков или размещённых сервисов, предоставляемых с облачных платформ, станет — и уже фактически стало — почти повсеместным. Но владение частным облаком для нужд одной компании ещё очень далеко от того, чтобы быть бизнес-необходимостью для большинства предприятий или бизнес-единиц, и, подозреваю, во многих случаях так и не станет таковой.
Частные облака по-настоящему эффективны в двух ключевых областях. Первая — бизнес, которому регулярно нужно разворачивать большое количество временных или ad hoc систем. Это часто встречается в крупных командах разработки и группах тестирования приложений, особенно если они ориентируются на несколько операционных систем. Возможность быстро провизионировать временные тестовые или лабораторные системы может быть очень выгодной, а возможность облачных вычислений легко предоставлять инструменты провизионирования бизнес-пользователям, позволяя им самостоятельно создавать, управлять и уничтожать собственные экземпляры систем — с предполагаемыми встроенными механизмами внутреннего биллинга — может существенно повысить корпоративную эффективность, поскольку взаимодействие между IT-отделом и конечными пользователями в рамках этих транзакций становится практически беспрепятственным. Ответственность за поддержку облака в целом легко отделить от ответственности за поддержку отдельных систем. Нечасто используемый подобным образом для производственных нагрузок, он обеспечивает самообслуживание, которого многие бизнес-единицы остро ищут сегодня. На небольшом масштабе это нецелесообразно из-за накладных расходов на создание и поддержку самой облачной платформы, но в крупном масштабе может быть исключительно продуктивно. Помимо технических преимуществ, этот аспект облачных вычислений может служить моделью для восприятия IT как внутреннего сервис-провайдера, а подразделений — как клиентов. Мы давно обсуждаем IT и другие бизнес-единицы в этих терминах, но редко действительно думаем о них именно так.
Вторая область, где облачные вычисления по-настоящему раскрывают свой потенциал и для которой изначально была разработана эта концепция, — это автоматическое провизионирование для горизонтально масштабируемых приложений. То есть для таких прикладных нагрузок, которые способны наращивать мощность обработки за счёт порождения новых экземпляров самих себя. В небольшом масштабе многие веб-приложения, в силу своей stateless-природы, делают это внутри одной системы, порождая новые рабочие потоки для обработки дополнительных подключений. Веб-сервер Apache может стартовать с восемью слушателями, готовыми обслуживать запросы, но по мере их исчерпания автоматически запускает новые потоки для обработки входящих соединений, масштабируясь в пределах одного сервера. Развивая эту концепцию применительно к облачным вычислениям: то же самое приложение, обнаружив приближение исчерпания потоков на уровне всей системы (или на основе других метрик — нехватки свободной памяти или снижения производительности), использует API облачной платформы, чтобы сигнализировать системе управления облаком о необходимости провизионировать новую копию вызывающей системы — по сути клонируя себя на лету. В течение нескольких секунд новый виртуальный сервер, идентичный первому, будет запущен и присоединится к родительскому в обслуживании входящих запросов. Этот дочерний или клонированный сервер точно так же будет порождать новые потоки по мере необходимости, а при признаках исчерпания также обратится к облачной платформе для создания ещё одной системы. Таким образом приложение может наращивать себя практически безгранично (в пределах аппаратных возможностей всей облачной платформы) автоматически, по мере необходимости, в реальном времени. Затем, по мере того как отдельные системы простаивают и нагрузки спадают, они одна за другой могут сигнализировать системе управления облаком о том, что более не нужны, и система будет выключена и уничтожена — поскольку это был лишь stateless-клон, — освобождая мощности для других приложений и нагрузок, которым может понадобиться свободная ёмкость.
Как видим, облачные вычисления обладают огромной мощью, особенно с учётом того, что большинство современных публичных и корпоративных приложений написаны в stateless-стиле для использования преимуществ веб-протоколов и пользовательских интерфейсов. Веб-приложения особенно хорошо умеют использовать модель масштабируемости облачных вычислений, и большинство крупных веб-приложений сегодня задействуют это эластичное расширение и сжатие ёмкости. Многие новые модели NoSQL начинают появляться, свидетельствуя о том, что базы данных, помимо узлов обработки front-end приложений, вскоре также могут получить выгоду от аналогичных моделей в крупном масштабе. Это безусловно применимо как для внутренних, так и для публично доступных приложений, однако внутренние приложения редко нуждаются в масштабировании за пределы одной системы, и потому частные облака, используемые подобным образом, встречаются крайне редко.
Риски облачных вычислений связаны с дополнительной сложностью сверх обычной виртуализации. Существует возможность необходимости сложного хранилища для поддержки платформы и большего количества слоёв для изучения и обслуживания. Возможность облачных вычислений быстро создавать и уничтожать системы может соблазнить пользователей пытаться использовать облачные ресурсы как постоянные системы — что технически возможно — и это может привести к потере данных, когда пользователи сталкиваются с поведением, разительно отличающимся от привычного и ожидаемого. Возможно, самая большая проблема облака носит человеческий характер — это повышенная вероятность бесконтрольного разрастания систем, когда конечные пользователи бесконтрольно разворачивают всё новые и новые системы, которые, будучи созданы пользователями, а не IT-отделом, вероятнее всего, не контролируются и не мониторятся надлежащим образом, оставаясь в неуправляемом и нередко забытом состоянии. Это может превратиться в кошмар с точки зрения обслуживания и безопасности: системы остаются без патчей и ухода, увеличивая риски и расходуя ресурсы. И самое тревожное — возможность того, что системы будут созданы, забыты и потенциально будут существовать без надлежащего лицензирования. Отслеживание и отчётность по автоматически провизионированным системам несёт процессный риск, обусловленный кардинальным изменением способа создания систем. IT-отделы привыкли к строгим лицензионным процессам, необходимым для соблюдения compliance, но облачные вычисления открывают возможность передачи этих процессов бизнес-единицам, которые совершенно не готовы с ними справляться. Существуют решения для лицензионных потребностей облачных вычислений, однако это дополнительная сложность и управление, которые необходимо учесть. Очевидно, что существование систем без непосредственного контроля IT-отдела несёт риски потенциально непредвиденного характера.
Владение частным облаком открывает множество захватывающих возможностей, однако очевидно, что эти преимущества и возможности подходят не всем. Они рассчитаны на более крупные предприятия, на компании с хорошим контролем процессов, на организации, использующие специально адаптированные приложения, способные воспользоваться эластичностью ресурсов на уровне системы, а также на тех, кому нужно масштабное создание и уничтожение систем ad hoc, предоставляемое как сервис для самостоятельного провизионирования конечными пользователями. Большинство крупных предприятий найдут ограниченное применение облачным вычислениям внутри компании. Небольшие организации редко найдут в облачных вычислениях преимущества в ближайшем будущем — если вообще найдут.