Ещё раз о cloud computing
АрхивСтатьиНебольшая заметка об основных особенностях облачных вычислений и ключевых направлениях развития: IaaS, PaaS, SaaS и некоторых других. Что это такое, зачем это нужно, в чём заключаются различия между ними и почему это стало популярным сейчас?
Что такое облачные вычисления? Боюсь, точного ответа сейчас не может дать никто, хотя этому термину уже более 10 лет. В 1997 году профессор Ramnath K. Chellappa дал ему такое определение: "Облачные вычисления – это парадигма, при которой границы вычислений будут определяться не техническими ограничениями, а экономическими". Я бы сказал, что облачные вычисления – это вычисления, которые производятся в готовой инфраструктуре с удалённым доступом. Пожалуй, объединение этих двух определений даёт наиболее общее понятие об облачных вычислениях. Теперь немного углубимся и рассмотрим отличительные черты cloud computing.
Первый ключевой момент – в “облаках” все имеющиеся ресурсы используются в максимальном объёме (в идеале, конечно). Почему так? “Облака”, как правило, состоят из огромного количества машин (сотни и тысячи, а то и больше). Помимо расходов на их покупку есть ещё и расходы на их обслуживание. Очень невыгодно иметь парк серверов, который простаивает и ничего не делает, а значит и не приносит прибыли. Чем больше полезной нагрузки возлагается на каждый элемент “облака”, тем выше отдача от него. Как этого добиться? Самый простой и очевидный путь – использование систем виртуализации различных уровней для того, чтобы на одном узле можно было без проблем запускать разнородные задачи, тем самым загружая этот узел по максимуму. Неудивительно, что в последние годы так резко выросла индустрия производителей виртуальных машин, гипервизоров и так далее. Второй метод борьбы с высокими затратами на обслуживание – чисто технологический. Обратите внимания на рост количества моделей энергоэкономичных CPU с высоким показателем "производительность на Ватт". Экологический аспект здесь отнюдь не на первом месте. Когда вы владеете условным кластером из 10000 ядер, то даже 5-процентное снижение энергопотребления каждого из них существенно снизит месячный счёт за электричество. Ещё одной особенностью современных CPU является большое количество ядер. Это приводит к следующей особенности облачных вычислений - высокой степени параллелизма. Современные настольные CPU имеют до 4-х физических ядер или до 8-ми виртуальных, то есть вы можете запускать вычисления в 8 потоков (если приложение вообще способно работать с многопоточностью). В “облаке”, теоретически, можно выполнять бесконечное число потоков. На практике оно, конечно, ограничено, но очень велико (до десятков тысяч). Отсюда ещё одна особенность облаков – размытость, нечёткая граница. Для потребителя cloud computing нет таких понятий, как объём оперативной памяти, количество свободного места на жёстком диске, частота процессора и так далее. Аналогичным образом не надо задумываться над доступным объёмом дискового пространства – оно точно также теоретически бесконечно.
Отсюда проистекают ещё три особенности cloud computing – распределённость (в одном месте такие мощности физически не разместить), удалённость (вы получаете доступ исключительно по Сети откуда угодно) и масштабируемость (сколько вы захотели ресурсов, столько и получите). Заодно мы получаем отказоустойчивость и надёжность хранения данных. Последним и очень важным моментом облачных вычислений является наличие стандартизированного интерфейса для работы в “облаке”. Это, по сути, наивысший доступный уровень абстракции. Вас опять-таки не интересуют всякие гигабайты, гигагерцы и мегабиты в секунду. Вам вообще должно быть абсолютно безразлично, как это всё внутри устроено. При этом любые изменения во внутренней работе “облака” вас также не касаются: обновление серверов и ПО, изменение параметров сети, даже физическое перемещение из одного дата-центра в другой вы не заметите.
С экономической точки зрения облачные вычисления отличаются ещё и оплатой услуг. При использовании мощностей “облака” вы не платите регулярные фиксированные отчисления (как абонплату за коммунальные услуги), не покупаете какой-то продукт/услугу (купили Photoshop и пользуете до конца жизни) и не приобретаете лицензии на n копий ПО. Вы оплачиваете только потребление ресурсов. Сколько ваше приложение “скушало” процессорных циклов, гигабайт RAM или HDD, а также передало/приняло данных по сети, столько вы и заплатите. Это одинаково выгодно потребителю и провайдеру облачных вычислений. Первый не переплачивает за неиспользуемые ресурсы (как при аренде хостинга, например), второй имеет возможность эти самые неиспользуемые ресурсы продать кому-нибудь другому, таким образом, загружая свои мощности.
Тремя основными направлениями развития cloud computing являются IaaS, PaaS и SaaS. Что же скрывается за этими “страшными” аббревиатурами и прочими *aaS?
- IaaS (Infrastructure as a Service) – инфраструктура как сервис. Вы арендуете сервера/кластеры и оплачиваете использованные ресурсы. Здесь наиболее широки возможности для творчества – сами выбираете ОС, необходимые сервисы и пишете конечное приложение. Естественно, это подходит не всем, а только “маститым” разработчикам. Это самый дорогой вариант, зато имеется почти полная свобода действий. Типичные представители: Amazon EC2, GoGrid, ElasticHosts и др.
- PaaS (Platform as a Service) – платформа как сервис. Логическое продолжение IaaS, только за вас уже поставили ОС, поставили определённый набор ПО и всё настроили. Теперь не надо копаться глубоко в недрах всей системы – вам предоставляется некий набор API для работы. Этот вариант гораздо дешевле предыдущего, но вам всё равно надо самому писать приложение. Оплачиваются только израсходованные ресурсы. Подходит подавляющему числу разработчиков. Типичные примеры: Google App Engine, Windows Azure, AptanaCloud.
- SaaS (software as a Service) – приложение как сервис. Готовое приложение для конечных пользователей. Вариантов оплаты море – за ресурсы, просмотр рекламы, абонплата и так далее. Типичные представители: современные почтовые службы (Gmail, Yandex, Rambler), файлообменники, многие CRM/ERP-системы. Отличительной чертой является доступ к приложению посредством веб-браузера, но не всегда.
Попробую привести некоторую аналогию с автомобильной темой (хотя аналогии опасны). Допустим, вы решили заработать на жизнь, став водителем такси. В случае обычного десктопного ПО вы просто покупаете готовый автомобиль и эксплуатируете его как хотите. А заодно сами чините его, проходите ТО и тратитесь на бензин. В случае IaaS вы “арендуете” корпус авто с рамой и колёсами. Потом сами выбираете двигатель, отделку интерьера, тип КПП и ставите это. Можно сконструировать грузовичок, а можно и изящный кабриолет. Оплачиваете только износ запчастей и бензин. Сами делаете мелкий ремонт. Зато арендодатель этого агрегата периодически делает ТО и капитальный ремонт. В случае PaaS вам предлагается почти готовый автомобиль, но вы можете отделать его по своему вкусу и кое-что поменять внутри. Расходы на топливо – из вашего кармана. Периодически вам ставят двигатель помощнее, меняют подвеску и делают сиденья более удобными. SaaS – приходите в таксомоторный парк и устраиваетесь водителем. Вам выдают типичный автомобиль, в котором вы можете повесить ароматизатор, поставить розового плюшевого медвежонка на приборную панель и постелить меховые коврики (и то не факт, что разрешат). У вас забирают определённый процент дохода или как-то ещё взимают плату. Зато каждое утро ваше авто чисто вымыто, заправлено, смазано и починено, даже если вчера ваш бампер узнал точное количество фонарных столбов на главной улице города.
Впрочем, есть более “экзотические” варианты *aaS. Например, DaaS (Desktop as a Service) предлагает каждому пользователю стандартизированное виртуальное рабочее место, с возможностью настройки и установки других программ. Доступ осуществляется по сети посредством тонкого клиента, которым может быть что угодно от обычного ПК до смартфона. Google Chrome OS в определённом смысле является реализацией DaaS. Ещё одной интересной вариацией является CaaS (Communications as a Service) – сочетания программно-аппаратных средств для организации всех видов общения (голос, почта, IM …) между сотрудниками одного предприятия за счёт сторонних решений. Альтернативным вариант SaaS продвигает корпорация Microsoft. Называется он S+S (Software+Services) и сочетает в себе сильные стороны типичного SaaS и обычного десктопного приложения. По сути, это обычное ПО, но с ориентацией на удалённые сервисы.
В целом, облачные вычисления – это очень обширная тема. Многое в них является продуктом маркетинга, а не действительно каких-то новых парадигм. Очень многие путают cloud computing с обычными расчётами на GRID-системах, а то и просто с кластерами удалённых серверов. Да, они имеют некоторые общие черты, но при этом очень сильно отличаются. Разделение на IaaS, PaaS, SaaS и прочие *aaS носит, на самом деле, довольно условный характер. В этой заметке названы основные отличительные черты каждой категории, общие особенности облачных вычислений и их плюсы. Есть у "облаков" и отрицательные моменты, речь о которых пойдёт в следующий раз.