Тема облачных вычислений, “облаков”, в 2011 г. переживает весьма заметный кризис. С одной стороны, она явно вышла на пик популярности: само слово “облако” проникло практически во все, причем не только профессиональные, публикации и разговоры по ИТ-тематике. Создается впечатление, что весь ИТ-мир или уже стал “облачным”, или вот-вот станет им. С другой стороны, тема эта всем изрядно надоела и все чаще вызывает лишь раздражение и отторжение. Надоела из-за повторения одних и тех слов (причем как “за”, так и “против”), из-за навязывания картины “прекрасного завтра” и отсутствия видимого прогресса в движении к этому завтра. Если еще год назад слово “облачный” в названии мероприятия привлекало аудиторию, то сегодня оно все чаще, наоборот, отпугивает ее… Причем от “облаков” устали уже не только слушатели, но и спикеры, потому что повторять одни и те же приманки (“повышение эффективности”, “снижение затрат”, “сохранение инвестиций”) — тяжелая работа.

Ситуация на самом деле довольно типичная для ИТ-отрасли, как, впрочем, и для любых технологических направлений. Проблема заключается в том, что смысл реальных инновационных идей растворяется в разговорах о моде, когда желание маркетологов поскорее продвинуть новые технологии имеет результатом “запутывание слушателей”, когда серьезные обсуждения предлагаемых инноваций подменяются проповедями и заклинаниями.

Следствием этого является среди прочего и то, что тема из разряда реалий переходит в область мифологии. В частности, реальные трудности (и обсуждение возможностей их преодоления) просто уходят куда-то на далекий задний план, зато вперед выдвигаются мифические представления.

Итак, проблема номер один для ИТ-облаков — это отсутствие понятного структурированного представления на рынке, что же это такое, что же, собственно, в них нового. В отсутствие такого общего понимания дискуссии на эту тему становятся не только ненужными, но и вредными. В уходящем году тема “отсутствия понимания” все чаще поднимается на разного рода ИТ-мероприятиях, и в качестве иллюстрации приводится известная индийская притча о споре слепцов, которые пытались ответить на вопрос “что это такое?”, ощупывая разные (каждый свою) части тела слона.

Но мы-то — не слепые люди. Мы просто ходим в повязках на глазах, их можно снять и начать говорить, не только щупая, но и глядя. И не только говорить, но и делать так, чтобы новые идеи и технологии действительно помогали в деле применения ИТ для повышения эффективности бизнеса и качества жизни.

Начать нужно с определения

Определение необходимо для того, чтобы мы могли понять — в чем же инновационность предложения, чем оно отличается от уже имеющихся на рынке. В этом надо разобраться, потому что довольно значительная часть ИТ-сообщества и сегодня уверена, что “облака” — это просто новое название давно знакомых вещей. И не менее значительная часть имеет не очень верное (или даже вовсе неверное) представление о том, в чем суть идей облачных вычислений.

В частности, очень многие люди отождествляют облака с аутсорсингом или с любыми онлайновыми сервисами. Такие представления неверны: совсем не любые онлайновые сервисы являются облачными, и использование облачных моделей отнюдь не всегда связано с передачей функций организации внешним подрядчикам.

Для начала отметим неопределенность термина “облако”, который часто применяется как синоним понятия “облачные вычисления” (cloud computing) или как обозначение любой ИТ, доступ к которой выполняется через Интернет. Это неверно, поскольку “облако” означает “облачная инфраструктура”, т. е. ИТ-инфраструктура, обладающая некоторыми определенными свойствами. Об этом будет подробнее сказано ниже, но сразу отметим, что ключевым моментом тут является не способ доступа к ИТ-ресурсам (хотя это тоже важно), а организация ИТ-инфраструктуры (вычислительного процесса). И еще важно отметить, что “облачные вычисления” — это не решение и не проект, а концепция (модель) построения и использования ИТ-ресурсов. Конкретные решения и проекты могут лишь удовлетворять в той или иной мере этой модели, но сами по себе “облачными вычислениями” быть не могут.

Наверное, самое парадоксальное в терминологии облаков заключается в том, что достаточно четкое их определение появилось в самом начале “облачной эры” более трех лет назад и с тех пор детализировалось, но по сути осталось неизменным. Вот какое определение было зафиксировано в Википедии в начале 2009 г..

Cloud Computing — это стиль разработки и использования компьютерных технологий (вычислений), при котором динамично масштабируемые ресурсы предоставляются через Интернет как сервис.

К тому времени уже были выделены и три основные категории облаков: инфраструктура как сервис (IaaS), платформа как сервис (PaaS), софт как сервис (SaaS). Но — и это важно — в начале 2009 г. облачные вычисления почти исключительно ассоциировались с сервисами внешних поставщиков, то есть с аутсорсингом. Возможности использования облачных моделей во внутренних ИТ-инфраструктурах компаний стали обсуждаться, а потом и продвигаться на рынке лишь во второй половине 2009-го. И в то время как ИТ-сообщество продолжало (и во многом продолжает сегодня) связывать понятие облачных вычислений почти исключительно с внешними услугами, на самом деле акценты в практической реализации облачной инфраструктуры (IaaS) быстро сместились в сторону частных (внутренних) схем.

Свежее определение NIST

Наверное, сегодня в качестве основного нужно принять последний на сегодня (16-й за минувшие два года) вариант формулировки, опубликованный этой осенью Национальным институтом стандартов и технологий CША (NIST) в виде рекомендаций. Прежде всего нужно обратить внимание на пояснения, приведенные в преамбуле этого документа

Там, в частности, сказано, что данные руководящие материалы NIST предназначены для федеральных ведомств США, хотя могут использоваться и неправительственными организациями на добровольной основе. В параграфе “Цели и рамки применения” говорится, что облачные вычисления — это развивающаяся парадигма. В определении NIST рассматриваются ее основные аспекты, предназначенные для того, чтобы проводить широкое сравнение облачных сервисов и стратегий их развертывания, а также чтобы подвести черту под дискуссиями “что такое облачные вычисления” и перейти к обсуждению вопросов, как их лучше применять. Приведенные в документе определения представлены в достаточно простой таксономии, которая на будущее не исключает изменений в описании отдельных элементов этой парадигмы.

Вполне качественный перевод самого определения NIST сделан, в частности, Владимиром Ескиным на его сайте; эту формулировку (с некоторыми уточнениями) мы и приведем здесь:

Облачные вычисления — это модель обеспечения повсеместного и удобного сетевого доступа по требованию к вычислительными ресурсным пулам (например, сетям, серверам, системам хранения, приложениям, сервисам), которые могут быть быстро предоставлены или выпущены с минимальными усилиями по управлению и взаимодействию с поставщиком услуг.

Далее говорится (и раскрывается детально — см. врезку “Свойства и модели облачных вычислений”) о том, что облачная модель обладает пятью основными свойствами (самообслуживание по требованию, широкий сетевой доступ, объединение ресурсов в пулы, мгновенная эластичность, измеряемые сервисы). Она состоит из трех моделей служб (SaaS, PaaS, IaaS) и четырех моделей развертывания (частное, публичное, коммунальное и гибридное).

Небольшой анализ определения

Насколько же это определение отличается от приведенного выше, трехгодичной давности? Нам кажется — детализацией формулировки свойств, но не более того. Ведь слова “динамично масштабируемые” включают понятия “самообслуживание”, “пулы ресурсов” и “эластичность”, а “сервис через Интернет” — “измеряемый сервис и сетевой доступ” (обратите внимание: не просто сервис, а измеряемый).

Давайте теперь посмотрим, в чем заключается инновационность облачных вычислений, или, точнее, сервисов по предоставлению ИТ-ресурсов, отвечающих требованиям модели облачных вычислений (облачных сервисов). Из определения NIST видно, что требованием к облачному сервису является то, что он должен функционировать в облачной инфраструктуре, которая описывается таким образом:

Под облачной инфраструктурой понимается набор аппаратного и программного обеспечения, имеющего пять основных свойств облачных вычислений. Облачная инфраструктура рассматривается как содержащая и физический уровень, и уровень абстракции. Физический уровень состоит из аппаратных ресурсов, которые необходимы для поддержки облака предоставляемых услуг, и, как правило, включает серверы, системы хранения и сетевые компоненты. Уровень абстракции состоит из программного обеспечения, развернутого на физическом уровне, и содержит все основные свойства облаков. Концептуально уровень абстракции стоит выше физического уровня.

На эту формулировку нужно обратить особое внимание: в нем появляется новое понятие — “уровень абстракции”. В рекомендациях NIST данное понятие нигде не раскрывается, а между тем оно является ключевым, это именно тот элемент, который традиционную аппаратную инфраструктуру делает облачной. Фактически уровень абстракции — это базовая облачная программная платформа, реализованная сегодня, как правило, в виде динамической виртуализационной операционной среды (облачная ОС), в которой функционируют виртуальные машины или прикладная облачная платформа. Несколько упрощая, можно сказать, что это — слой гипервизоров (vSphere, Hyper-V, Xen и др.), средств управления виртуально-физической ИТ-инфраструктурой и систем биллинга.

Отметим также, что термин “облако” используется тут в качестве синонима “облачная инфраструктура” (аппаратно-виртуализационная вычислительная среда). Сами описания свойств и моделей облачных вычислений в целом достаточно понятны. Но все же хотелось бы остановить внимание на определении частного облака — оно связано не с его местонахождением и даже не с тем, кто им управляет или юридически владеет (пользователь или провайдер), а с тем, что данная инфраструктура предназначена для обслуживания только одной организации. То есть частное облако — это заказной индивидуальный проект в отличие от облака публичного, которое по аналогии можно сравнить с коробочным продуктом.

Ну вот, казалось бы, на этом разговор о терминологии можно закончить, взяв на вооружение определение NIST. Но если посмотреть на этот вопрос внимательнее, то станет видно, что ставить точку тут еще рано. Например, само понятие услуги (сервиса) подразумевает пару “потребитель -- поставщик”. В определении SaaS о провайдере (ему принадлежат приложения) говорится в явном виде, а для PaaS и IaaS роль провайдера прописана не так четко. Или вот еще: кто же является поставщиком услуги в частном облаке в том случае, если им и владеет, и управляет сама организация?

Но еще больше появляется вопросов, если начать примерять идеальную модель облачных вычислений к реальной практике создания и использования ИТ. Так что разговор этот должен быть продолжен.

Свойства и модели облачных вычислений

(перевод рекомендаций NIST)

Основные свойства

Самообслуживание по требованию (On-demand self-service).  У потребителя есть возможность получить доступ к предоставляемым вычислительным ресурсам в одностороннем порядке по мере потребности, автоматически, без необходимости взаимодействия с сотрудниками каждого поставщика услуг.

Широкий сетевой доступ (Broad network access).  Предоставляемые вычислительные ресурсы доступны по сети через стандартные механизмы для различных платформ, тонких и толстых клиентов (мобильных телефонов, планшетов, ноутбуков, рабочих станций и т. п.).

Объединение ресурсов в пулы (Resorce pooling). Вычислительные ресурсы провайдера объединяются в пулы для обслуживания многих потребителей по многоарендной (multi-tenant) модели. Пулы включают в себя различные физические и виртуальные ресурсы, которые могут быть динамически назначены и переназначены в соответствии с потребительскими запросами. Нет необходимости в том, чтобы потребитель знал точное местоположение ресурсов, однако можно указать их местонахождение на более высоком уровне абстракции (например, страна, регион или центр обработки данных). Примерами такого рода ресурсов могут быть системы хранения, вычислительные мощности, память, пропускная способность сети.

Мгновенная эластичность (Rapid elasticity). Ресурсы могут быть эластично выделены и освобождены, в некоторых случаях автоматически, для быстрого масштабирования соразмерно со спросом. Для потребителя возможности предоставления ресурсов видятся как неограниченные, то есть они могут быть присвоены в любом количестве и в любое время.

Измеряемый сервис (Measured service). Облачные системы автоматически управляют и оптимизируют ресурсы с помощью средств измерения, реализованных на уровне абстрации применительно для разного рода сервисов ((например, управление внешней памятью, обработкой, полосой пропускания или активными пользовательскими сессиями). Использованные ресурсы можно отслеживать и контролировать, что обеспечивает прозрачность как для поставщика, так и для потребителя, использующего сервис.

Модели облачных служб

Программное обеспечение как услуга (SaaS). Возможность предоставления потребителю в использование приложений провайдера, работающих в облачной инфраструктуре. Приложения доступны из различных клиентских устройств или через интерфейсы тонких клиентов, такие как веб-браузер (например, веб-почта) или интерфейсы программ. Потребитель при этом не управляет базовой инфраструктурой облака, в том числе сетями, серверами, операционными системами, системами хранения и даже индивидуальными настройками приложений за исключением некоторых пользовательских настроек конфигурации приложения.

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

Инфраструктура как услуга (IaaS). Возможность предоставления потребителю систем обработки, хранения, сетей и других фундаментальных вычислительных ресурсов для развертывания и запуска произвольного программного обеспечения, которое может включать в себя операционные системы и приложения. Потребитель при этом не управляет базовой инфраструктурой облака, но имеет контроль над операционными системами, системами хранения, развернутыми приложениями и, возможно, ограниченный контроль выбора сетевых компонентов (например, хост с сетевыми экранами).

Модели развертывания

Частное облако (Private cloud). Облачная инфраструктура, подготовленная для эксклюзивного использования единой организацией, включающей несколько потребителей (например, бизнес-единиц). Такое облако может находиться в собственности, управлении и обслуживании у самой организации, у третьей стороны и располагаться как на территории предприятия, так и за его пределами.

Облако сообщества и коммунальное облако (Community cloud). Облачная инфраструктура, подготовленная для эксклюзивного использования конкретным сообществом потребителей от организаций, имеющих общие проблемы (например, миссии, требования безопасности, политики). Облако может находиться в собственности, управлении и обслуживании у одной или более организаций в сообществе, у третьей сторонеи располагаться как на территории организаций, так и за их пределами.

Публичное (или общее) облако (Public cloud). Облачная инфраструктура, подготовленная для открытого использования широкой публикой. Оно может находиться в собственности, управлении и обслуживании у деловых, научных и правительственных организацийв любых их комбинациях. Облако существует на территории облачного провайдера.

Гибридное облако (Hybrid cloud). Облачная инфраструктура представляет собой композицию из двух или более различных инфраструктур облаков (частные, общественные или государственные), имеющих уникальные объекты, но связанных между собой стандартизиоованными или собственными технологиями, которые позволяют переносить данные или приложения между компонентами (например, для балансировки нагрузки между облаками).