Каким бы широким ни был спектр отношений к облачным моделям — от горячих уверений в их достоинствах до полного отрицания новизны или пользы, — можно уверенно сказать, что ИТ-отрасль переживает этап глобальной трансформации архитектурных подходов к построению ИТ-инфраструктуры. Речь идет о переходе от сложившейся к началу нынешнего века схемы локального, онпремис, размещения серверных мощностей (упрощенно говоря — установки физических серверов под конкретные задачи и рядом с бизнес-потребителем) к модели отчуждения (консолидация, удаленное размещение и пр.) вычислительных ресурсов с последующим решением задач оптимизации их использования.
Можно назвать целый ряд причин, которые послужили толчком и фактором дальнейшего развития ИТ именно в этом (облачном) направлении. Но если попробовать выделить одно, самое главное, то нужно уверенно сказать: Интернет. Казалось бы, такой ответ не требует особых доказательств, ведь именно Сеть позволила в полном объеме реализовать на практике давнюю идею географического разделения пользователей и вычислений. Но на самом деле роль Интернета в реализации облачных масштабируемых инфраструктур заключается несколько в ином.
Однако тут нужно сделать важное замечание. В настоящее время на рынке довольно распространенным является представление об облачных сервисах как о любых информационных или вычислительных услугах, предоставляемых через Интернет. Такое мнение конечно же неверно, оно внедряется в общественные умы поставщиками, которые очень хотят использовать модное слово для продвижения своей продукции, зачастую по сути не дотягивающей до уровня “облачной”. Например, дело доходит до того, что в последнее время к облачным услугам причисляют даже аренду площадей для размещения вычислительного оборудования. В конце концов, для услуг, предоставляемых через Интернет, не нужно придумывать новых названий, они уже давным-давно имеются — интернет-сервисы.
Три составные части, но два истока…
На самом деле сетевой доступ является, конечно же, обязательным элементом облачных сервисов, но далеко не единственным и, можно даже сказать, не самым главным. Тут нужно вспомнить, что полное название понятия звучит как “облачные вычисления”, и это очень точно указывает на ключевой аспект облаков — некоторый новый подход к организации вычислений, к построению вычислительной инфраструктуры (как прикладной, так и платформенной). Именно это очень хорошо просматривается в общепризнанном на рынке определении, которое даёт Национальный институт стандартов и технологий США (NIST).
Как известно, среди моделей облачных служб выделяют три основных типа: SaaS, PaaS, IaaS. Но если посмотреть на историю формирования самого понятия Cloud, то можно увидеть, что у него было два основных истока — SaaS и IaaS, которые позднее слились в едином термине “облачные вычисления” и к которым примерно в этот момент “слияния” прибавился и третий компонент, PaaS (с некой долей условности PaaS можно считать высокоуровневым вариантом IaaS, на практике сегодня мы часто рассматриваем эти два вида услуг вместе).
Все началось с SaaS
Из всех этих новых “облачных” слов первым на рынке появилось SaaS. Вообще-то Википедия говорит о том, что концепция “софт как сервис” в современном виде была сформулирована еще в 1999 г. Кстати, именно тогда на рынок вышла новая компания salesforce.com со своим CRM-сервисом, который долгое время был почти синонимом SaaS и до сих пор является лидером SaaS-рынка. А сокращенное название (акроним) SaaS появилось два года спустя, и именно оно получило признание, оттеснив другие аналогичные термины, во многом благодаря моде на обратно читающиеся аббревиатуры в стиле camelback (“спина верблюда” — сочетание прописных и строчных букв).
Но все же современная история SaaS и широкое применение самого этого термина начались лишь в середине 2000-х. Наверное, за точку отсчета тут можно взять всемирную партнерскую конференцию (WPC) Microsoft, состоявшуюся в июле 2006 г. Выступая там, CEO корпорации Стив Балмер объявил, что следующее десятилетие бизнеса компании будет связано с трансформацией целого ряда ее продуктов и сервисов в рамках направления по предоставлению онлайновых услуг Live, и призвал партнеров не отставать от Microsoft в освоении бизнес-модели SaaS.
Вообще ежегодные WPC с тех пор служат очень интересными реперными точками, по которым можно отслеживать общее развитие темы SaaS и облаков. Так, уже на следующей WPC '2007 Стив Балмер представил более четкую схему реализации планов Microsoft в виде стратегии “софт-плюс-сервис”, подразумевающей сочетание традиционной и SaaS-моделей поставки ПО. Этот новый термин продержался всего два-три года, но по сути Microsoft (и не только она!) использует, причем весьма успешно, в своей работе именно такой подход.
Тогда же, на WPC '2007, Microsoft продемонстрировала сохраняющую и сегодня актуальность технологическую схему модели SaaS (рис. 1), выделив ее ключевые атрибуты (конфигурируемость, многоарендность и масштабируемость) и определив четыре уровня зрелости SaaS:
- Ad-Hoc/Custom (специальный). Каждый пользователь имеет собственную настроенную под него версию приложения, используемого в режиме хостинга. Перевод традиционного приложения (в том числе клиент-серверного) в модель SaaS на этом уровне дает снижение операционных затрат за счет консолидации аппаратных средств (серверов) и администрирования;
- Configurable (конфигурируемый). Заказчик имеет возможность настраивать нужное ему ПО через метаданные; таким образом, несколько пользователей работают с собственными экземплярами ПО, но с одним и тем же программным кодом. Это снижает затраты поставщика при удовлетворении потребностей разных клиентов;
- Configurable, Multi-Tenant-Efficient (конфигурируемый, многоарендный). В отличие от второго уровня тут всех пользователей обслуживает один экземпляр программы. При этом существенно снижаются все эксплуатационные затраты (в том числе на аппаратные средства), но имеются ограничения по масштабируемости;
- Scalable, Configurable, Multi-Tenant-Efficient (масштабируемый, конфигурируемый, многоарендный). В дополнение к третьему уровню добавляется масштабируемость за счет многоуровневой архитектуры ПО и балансировки нагрузок с использованием большого набора серверов. Мощность системы легко изменяется в результате подключения/отключения серверов, без внесения каких-либо изменений в ПО.
Отметим, что с того момента, как на рынке появилось понятие SaaS, бытовало (и бытует сегодня) мнение, что SaaS — это известная еще с конца 1990-х модель ASP (Application Service Providing), или хостинг приложений, но с новым названием, принятым по соображениям маркетинга. Но с этим никак нельзя согласиться, хотя конечно же ASP является предвестником SaaS и может рассматриваться как простой его вариант (первые два уровня зрелости).
Прежде всего отметим, что в случае ASP (в начале 2000-х) владельцем приложения был, как правило, сам заказчик, а не провайдер, и тогда данная модель услуг скорее относится к типу IaaS. Но что еще важнее, эффективная реализация SaaS подразумевает не просто перемещение клиент-серверного или Web-приложения с площадки заказчика в ЦОД провайдера, а использование качественно иного подхода к проектированию данных и архитектуре ПО, чем в традиционных приложениях. Речь, в частности, идет о поддержке режима multi-tenant (множественная аренда), когда один экземпляр ПО используется для параллельного обслуживания нескольких заказчиков. Принципиально важно и то, что SaaS-провайдер берет на себя полную ответственность в вопросах масштабируемости предоставляемого сервиса, имея в виду в том числе задачи развертывания, управления и поддержки ПО на протяжении всего его жизненного цикла.
Практическая реализация SaaS в технологическом плане напрямую связана с использованием технологий виртуализации, эффективных методов балансировки нагрузок, с созданием отказоустойчивых кластеров и другими современными ИТ. То есть с использованием облачной ИТ-инфраструктуры, хотя в тот момент (2007 г.) термина “облако” на рынке фактически еще не было.
Появление облачной инфраструктуры
Концепция облачных вычислений, разумеется, тоже не нова, ее истоки можно найти почти на заре формирования современного ИТ-рынка, когда в 1960-е сначала высказывались идеи “публичных вычислений” (общего использования вычислительных ресурсов), которые потом стали претворяться в жизнь в виде грид-сетей и вычислительных центров с терминальным доступом. Но все же нужно отдавать отчет, что появление термина Cloud Computing — это не просто новое слово для старых вещей, оно отражает качественно новый этап в создании и развитии ИТ-инфраструктуры.
О дате появления названия Cloud Computing Википедия умалчивает, но по мои наблюдениям (и анализу публикаций) оно появилось позднее, чем SaaS: в мире — в 2007 г., а в России — только в 2008-м. Соответственно активизация этой темы должна была начаться у нас в стране в 2009-м, но кризис сместил “старт” почти на год (не до инноваций было).
Выше уже говорилось, что сегодня в бытовом сознании “облако” чаще всего ассоцируется с доступом к ИТ-ресурсам через Интернет. Во многом это объясняется и тем, что еще раньше на разного рода структурных схемах всемирная коммуникационная среда рисовалась в виде облака. Однако такая версия появления термина в данном случае представляется не очень правильной.
Более достоверным видится такой вариант: слово появилось “само собой” и от названия сервиса Amazon Elastic Compute Cloud (Amazon EC2), который, кажется, стал первым примером реализации глобального сервиса корпоративного уровня на современных идеях Cloud Computing. После нескольких лет работы в тестовом режиме он был запущен компанией Amazon в 2007 г., и как раз тогда слово Cloud стало распространяться на рынке, замещая ранее используемый термин Utility Computing.
Таким образом, нужно понимать, что в контексте “облачных вычислений” слово “облако” (и изображение на диаграммах) означает уже не коммуникационную среду (Интернет), а вычислительную. При этом аллегория изображения очень хорошо отражает важные новшества облачных вычислений по сравнению, скажем, с удаленным использованием мэйнфреймов прошлых лет: в общем случае облачная ИТ-инфраструктура полностью скрыта от пользователя (он не знает, где она размещается географически, какое оборудование задействовано и пр.), является эластично-масштабируемой. Правда, такой образ не показывает некоторых важных элементов облака — самообслуживание и измеряемость…
Итак, мы видим, что в своем начальном варианте Cloud еще четыре года назад означало лишь вариант аренды ИТ-инфраструктуры, того, что немного позднее стало IaaS. Более того, и сегодня на практике слово “облако” (например, “построить частное облако”) означает именно инфраструктуру, а в аналитических обзорах часто разделяются понятия SaaS и Cloud (объединенное понятие Cloud, включающее SaaS, PaaS и IaaS появилось, кажется, лишь в конце 2008 г.).
Конечно же, именно Интернет стал фундаментальной причиной появления модели облачных вычислений как таковых. Возможность сетевого доступа позволила начать процесс консолидации серверных вычислительных ресурсов, в том числе их географического отделения от конечных ИТ-потребителей, а также реализацию невиданных ранее ИТ-проектов, где число пользователей стало исчисляться миллионами человек.
Но все же если говорить о технологической стороне облаков, то их основой является не сам доступ к ресурсам, а качественно иная организация ИТ-инфраструктуры на базе технологий виртуализации, использования сервисно-ориентированной архитектуры, а также новых архитектурных методов создания прикладного ПО, изначально рассчитанного на обслуживание большого и динамически меняющегося числа пользователей.
Говоря о появлении облачный вычислений, наверное, нужно выделить два их “истока” — Web-хостинг и глобальные интернет-проекты. Отметим также, что IaaS на рынке изначально появилась в виде публичных сервисов, для заказчиков — в варианте аутсорсинга. А уж потом эта модель стала распространяться и на создание внутренней ИТ-инфраструктуры заказчиков. Именно такая последовательность развития облачных идей привела к такому парадоксу: в глазах широкого ИТ-сообщества облака ассоциируются в основном с применением аутсорсинга (публичные сервисы), но при этом с точки зрения объемов продаж соответствующих средств подавляющая доля данного рынка в последние пару лет связывается с реализацией частных, внутренних облаков.
Связь модели IaaS с хостинг-провайдингом видится вполне очевидной. Отметим, что именно тут началось широкое применение средств виртуализации с целью повышения эффективности использования вычислительной инфраструктуры. Однако нужно отметить, что фактически до середины прошлого десятилетия поддержка Web-сайтов для подавляющего числа заказчиков относилась к категории “не очень критически важных” функций предприятий (что, в частности, определяло готовность клиентов использовать модель аутсорсинга). В результате именно на Web-хостинге облачные технологии (в первую очередь виртуализация) получили отраслевую апробацию, что позволило переносить в виртуальные среды и критически важные приложения (да и сами Web-сайты из вспомогательных средств бизнеса превратились в основные).
Кроме того, Интернет, объединивший в единое информационное пространство сотни миллионов пользователей, сделал возможной реализацию качественно новых вычислительных проектов — интернет-порталов, ИТ-сервисов, работающих в реальном времени с практически неограниченным количеством независимых пользователей. Именно в рамках реализации таких глобальных интернет-проектов (Amazon, MSN, Google и пр.) стали отрабатываться идеи создания мощных, динамически масштабируемых вычислительных инфраструктур. Причем если говорить на современном облачном языке, эти системы представляли собой типичные частные IaaS-облака (в точки зрения компании-владельца), на базе которых функционировали сервисы (SaaS) для внешних пользователей. А далее логика процесса проникновения облачных инфраструктур на рынок выглядела следующим образом: поставщики прикладных интернет-сервисов стали предлагать свои инфраструктурные возможности для корпоративных клиентов в виде сервисов публичных, затем опыт работы публичных облаков стал распространяться на внутреннюю инфраструктуру организаций — частные облака, но уже не отдельных интернет-проектов, а множества корпоративных систем.
Если говорить о качественных различиях хостинга, как он понимался в начале века, и облачных ИТ-инфраструктур в их современной трактовке, то ключевым моментом, наверное, нужно считать появление программного слоя, который в трактовке NIST называется уровнем абстракции (рис. 2), поверх слоя аппаратных вычислительных и коммуникационных ресурсов. Именно этот уровень (платформа виртуализации, инструменты управления системой, средства биллинга и пр.) реализует основные новые возможности облачной инфраструктуры — эластичную динамическую масштабируемость, управляемую в том числе самими потребителями в режиме самообслуживания.