Автор: Виктор Шепелев
В постновогоднем "обзоре трендов"["Обалдеть, завтра дайте три!" ("КТ" #717).] мы упомянули, что многие титаны рынка и отцы Веб 2.0 сегодня делают ставку на некий загадочный "cloud computing" ("[за]облачные вычисления"?).
В общем, это может напоминать возвращение старых времен, с их мэйнфреймами и терминалами, - возвращение, которое кажется не слишком осмысленным сегодня, во времена победившего Мура, времена, когда "память больше не ресурс"[Стандартный аргумент программистской дискуссии о "прожорливости" языков и библиотек; подразумевает, что при нынешних ценах на оперативную память экономить ее бессмысленно 3 Например, стоимость использования S3 - 15 центов в месяц за гигабайт хранимых данных, 10 центов за гигабайт трафика. При этом оплата идет за фактически используемые ресурсы - нет необходимости "покупать место с запасом и платить за пустое место 4 37signals устроены несколько иначе; впрочем, им не приходится предоставлять огромные дисковые или вычислительные мощности, их "мощность" скорее в удобстве интерфейса приложений.], да и процессорное время для бытовых задач тоже уже "не очень-то ресурс". Так что же - Google, Amazon, IBM… - коллективное помутнение рассудка, впадение в старческий маразм или детство? Сомнительно.
Тогда в чем соль? Терпение, милый читатель. Изучать мир и делиться с тобой знаниями - наш священный долг и обязанность. Не переключай канал.
Хотите - буду безукоризненно нежный, не мужчина, а - облако в штанах!
Владимир Маяковский
Итак, зачем понадобился новый термин? От нехватки старых? Чем плохи "распределенные вычисления (если речь идет об использовании вычислительных мощностей, объединенных в сеть) или "тонкий клиент" (если речь идет о перенесении всех вычислений на сервер), а то и просто "клиент-сервер"?
Дело в том, что "облачные вычисления" подразумевают: во-первых, максимальную простоту и удобство доступа к ресурсу; во-вторых, почти бесконечное в обе стороны масштабирование. ("В обе стороны" здесь означает, что нет ограничений ни по максимальному, ни по минимальному использованию.)Несколько конкретных примеров.
"Облачными вычислениями" Google называет все свои онлайн-приложения - GMail, Docs, Calendar, Google Base и т. п. Простой доступ: удобный, понятный "простому пользователю" интерфейс, похожий на "обычное десктопное приложение", а местами даже удобнее и функциональнее. Почти бесконечное масштабирование: 1 Гбайт для почты (на момент открытия "Гмыла", сегодня - 6 Гбайт для простых смерных или 25 Гбайт/$50 на каждый адрес в Google Apps Premier Edition) - это все-таки очень много (если не хранить фильмы в почтовом ящике); при этом даже если ты получаешь одно письмо в год - удобство работы не уменьшится и претензий за "недоиспользование" ресурса никто не предъявит (вроде любимого некоторыми российскими почтовыми службами "Ваш ящик не использовался больше трех месяцев и будет удален"). Та же петрушка и со многими другими приложениями "для простых людей" - блогсервисами, фотохостингами, файлохранилищами "эпохи Web 2.0" - хош, вот тебе гигабайт места и десяток трафика; а не нравится - заплати 2 доллара в месяц и имей 20 гигабайт и безлимитный трафик.
Упомянутый Google Apps Premier Edition плавно переносит нас к следующей разновидности - облакоприложений для офиса и организации труда. Помимо гугловского пакета, на ум сразу же приходят сервисы студии 37signals - прославленных создателей Ruby on Rails. Их сервисы - средство управления проектами Basecamp, совместной работы над текстами Writeboard, онлайн-бизнес-чат Campfire и т. п. - типичные "облака". Работают "где-то там", на серверах 37signals, простые и удобные в использовании, полностью заменяют соответствующую разновидность "настоящих программ".
Третий пример - сервисы от Amazon: Elastic Computing Cloud (EC2) - виртуальные вычислительные мощности; Simple Storage Service (S3) - место для хранения данных; SimpleDB - база данных (в отличие от S3, в большей степени предназначена для хранения таблиц коротких данных и эффективного выполнения сложных запросов). Все это - предложения для создателей собственных веб-приложений, желающих переложить на широкие плечи Amazon часть своих забот.
Здесь наблюдаются те же ключевые факторы: простой доступ - дружелюбное API, удобное управление; и почти бесконечное масштабирование - платишь только за то, что используешь, причем цены близки к себестоимости ресурса (если есть еще сегодня такая эфемерная вещь, как "себестоимость гигабайта дискового пространства") и растут линейно с ростом запросов[Например, стоимость использования S3 - 15 центов в месяц за гигабайт хранимых данных, 10 центов за гигабайт трафика. При этом оплата идет за фактически используемые ресурсы - нет необходимости "покупать место с запасом и платить за пустое место". ].
Казалось бы, что общего между программамина-Вебе для обычного юзера (см. Google) и как-быхостингом для небогатого разработчика (см. Amazon)?
Очень просто: пользователь и тех и других сервисов - "обычный человек", не желающий или не могущий тратить деньги и время на серьезную IT-инфраструктуру (запомним эту дефиницию, она нам еще пригодится).
У одинокого пользователя куда больше общего с одиноким хозяином небольшого стартапа, чем у них обоих - с крупной фирмой, могущей позволить себе собственный дата-центр. Истинность этого утверждения подтверждают, помимо прочего, уже существующие решения, делающие амазоновские сервисы-для программистов полезными для простого пользователя;например, использование S3 для хранения бэкапов данных - при 15 центах в месяц это становится весьма осмысленным (природу этой осмысленности мы разберем ниже).
Когда я снова стану облаком,
Когда я снова стану зябликом,
Когда я снова стану маленьким
И снег опять запахнет яблоком.
Александр Галич
Теперь, читатель, надеюсь, тебе примерно понятно, чем сегодняшнее предложение "распределенных вычислений" так отличается от всего существовавшего ранее, что понадобился новый термин. Теперь неплохо бы определить - что же изменилось в мире за последние годы, что такая разновидность сервисов стала возможна, и возможна именно теперь.
Первый из факторов - это естественное количественное развитие технологий на стороне пользователя: широкополосный и безлимитный интернет-канал, доступный все большему числу людей, позволяет не задумываться о том, сколько байтов (кило-, мега-, а скоро даже и гига-) гоняется туда-сюда; 3 гигагерца процессора и гигабайт оперативной памяти (очень "средненький" сегодня компьютер) позволяют даже сложным приложениям-в-браузере на медленном и интерпретируемом JavaScript работать с терпимой скоростью; возрастающая мощь и стандартосовместимость браузеров расширяют возможности, которые можно использовать в веб-приложениях.
Другой фактор - появление крупных "интернетоцентричных" игроков индустрии. Из двух наших "эталонных примеров" - и Google, и Amazon делали свой бизнес только в Интернете, наращивая серверный парк, обрастая мощностями и технологиями, а также опытом и практикой поддержки этого здоровенного хозяйства. И те и другие вдруг обнаружили, что простаивающим серверам можно найти интересное применение, обернув свое облако лицом к человечеству. То, что они делают, для них просто выгодно (или, по крайней мере, не слишком затратно): если для мелкой компании "еще один сервер" - вопрос серьезный и затратный, то для наших грандов все равно - стоит ли в дата-центре 5000 серверов или 5001. Это классическое удешевление производства при больших тиражах - только здесь терабайты и гигагерцы сначала "производят", а затем "сдают" в аренду [ 37signals устроены несколько иначе; впрочем, им не приходится предоставлять огромные дисковые или вычислительные мощности, их "мощность" скорее в удобстве интерфейса приложений].
Третий фактор - стремительно наступающая эра "экономики внимания": трафик, сервера, разработка оказываются дешевле, чем внимание пользователя.
Как Google, так и многие авторы веб-сервисов помельче живут исключительно "с рекламы": ты приходишь к нам на сайт-сервис, не платишь за используемые ресурсы ни копейки, а за это "жертвуешь" свое внимание рекламодателю (который и превращает внимание в деньги для хозяина сервиса). Но дело не только в рекламе. Вот исследователи в компьютерном институте разработали и "выпустили на публику" эффективный алгоритм превращения растрового изображения в векторное - но в виде сайта-сервиса, а не скачиваемой программы. Логика подсказывает, что этот подход даст намного больше "внимания восхищенной публики" создателю-исследователю, чем маленькая программка, которая расползется по софтоархивам и винчестерам, и кто там уж упомнит ученого-умницу, столько сил вложившего в гениальный алгоритм [ Подбирая примеры для статьи, вспомнил об этом инструменте (несколько месяцев назад о нем громко говорили). Зайдя на сайт (vectormagic.com), обнаружил уже не "демонстрацию результатов научного исследования", а вполне коммерческий сервис, и довольно недешевый (2-3 доллара за картинку). Что, по-моему, демонстрирует эффективную конвертацию внимания (к бесплатному интересному сервису) в заработок (на уже раскрученном сервисе). ]. А ведь и Amazon (и аналогичные "облака для разработчиков") получает не только свои 30-центов-за-гигабайт, но и ключевую позицию в Веб2-индустрии приложений-сервисов. Неплохо для "просто книжного магазина", а?
Интересно, что во всех ключевых факторах проявления "облаков" далеко не последнюю роль сыграла "новая империя" Google. Именно Google первым стал давать "почти бесконечное" место под почту (помните обалдение от "гигабайта для вашей почты"? А через пару месяцев оказалось, что большинство крупных игроков вполне в состоянии выделить такие же и даже бо'льшие мощности - просто им это не приходило в голову); GMail же был одним из первых популярных примеров "богатого" пользовательского интерфейса в браузере; и кто, как не Гугл, демократизировал рынок рекламы (кстати, тоже в виде "облака" - вам предоставляются почти бесконечные рекламные ресурсы за довольно смешные деньги, все просто и доступно любому)[ Для пущей ясности: во всех перечисленных областях Гугл был скорее не первопроходцем, но крайне эффективным популяризатором и "законодателем мод". Вообще говоря, вопрос о том, насколько гугловский маркетинг (периода GMail) поспособствовал революции "нового веба", еще ждет своего внимательного исследователя. ].
А мне бы облаком
Из далека далеко.
А мне бы облаком,
Облаком.
Дмитрий Мулыгин
Ты все еще со мной, любезный читатель? Надеюсь, что так. Качаешь, небось, многомудрой головой:очень вы, пан автор, хорошо и красиво все нам расписали, да только не сказали - зачем? И вновь молю:терпение, друг мой читатель. Автор тебе не враг.
Многие обозреватели и IT-журналисты восторженного типа, рассказывая о cloud computing, договариваются до: "…все вообще будет происходить там, за облаками, а пользователю мощный компьютер будет и вовсе не нужен". Тут-то и возникают обоснованные сомнения:да ведь у меня этот самый "мощный компьютер" уже есть - и гигагерцы, и сотни гигабайт (а то и терабайты), зачем так драматизировать и где-то даже угрожать?
Ну, во-первых, к заоблачным вычислениям уже можно обратиться и с устройства послабее (читай:мобильного) - не только КПК, но даже и телефона современного, с Opera Mini или другим "приличным телефонным" браузером. А когда и вовсе не нужно будет задумываться о том, "где же я буду хранить" и "с какой скоростью я буду обрабатывать", - как знать, может быть, ко времени следующего апгрейда мы станем предпочитать устройства исходя из их компактности, мобильности, универсальности (или наоборот - узкоспециализированности) или удобства, в конце концов… И уже не задумываясь о том, сколько там этих самых гигагерц и терабайт. Чем не посрамление закона Мура в отдельно взятом кармане?
Но на самом деле важно даже не это. Важно следующее (внимание, читатель: вот главная фраза в этой статье; остальное, в принципе, можно было не читать): "облачные вычисления" - это не только аутсорсинг ресурсов, это аутсорсинг инфраструктуры и управления этой инфраструктурой.
Теперь подробнее.
Даже в самом простом случае - единичного, индивидуального пользователя и ориентированного на него приложения-сервиса - основное преимущество, которое дает использование "приложений из облака", - это то, что о месте на диске, памяти, времени, способе работы можно просто забыть. "Все оплачено и включено".
Что будет с моей почтой при переустановке операционной системы (или, не дай бог, смене платформы)? - Зайдешь на gmail.com, она там.
А не пора ли задуматься о бэкапе важной информации? - Если твои файлы хранятся в серьезном дата-центре, там уже задумались. И т. п.
При определенном подходе к своей рабочей среде за счет "облачков" можно избавиться от целого класса программ, нужных "изредка, но позарез" - вроде преобразователей форматов документов. Не надо ничего искать, устанавливать, настраивать, покупать (или ломать) - вот же она, онлайн-конвертилка вроде zamzar.com, конвертирующая что-угодно-куда-угодно, и остаются лишь затраты на входящий и исходящий трафик - ни лишних пробегов по софтархивам, ни посторонних записей в реестре, ни "отойди от компьютера, не видишь - конвертирую!". В каком-то смысле, облакообразность повышает экологию рынка утилит, выбрасывая из него бесчисленные софтопомойки и сотни тысяч шароварщиков, пишущих одно и то же по сороковому разу ("пользователей на всех хватит").
Если же перейти к бизнесу и его нуждам, то вполне можно представить офис без IT-инфраструктуры вообще - один тупой роутер, раздающий Интернет, а все обсуждения, документы, вычисления, хранение данных берут на себя "заоблачные" сервисы. Поначалу может показаться противоприродным обсуждать текущую задачу с соседом по столу посредством сервера в далекой стране[ Впрочем, активно используя мессенджеры и почту, мы и так зачастую этим занимаемся.], но как же соблазнительно избавиться от лишнего железа и задач по его обслуживанию, изобретения, установки и настройки "софта для совместной работы" и других частей инфраструктуры (не говоря уж о зазнайке-сисадмине, смайлик). В конце концов, такое "вынесенное в онлайн" решение просто дешевле и лучше масштабируется (от десятка до нескольких сотен сотрудников вполне можно "протянуть" на одном наборе приложений-планировщиков, органайзеров и коммуникаторов). Ну и о возможности организации распределенного офиса тоже не стоит забывать.
Наконец, переходя к "облакам для разработчиков", можно повторить все тот же набор аргументов: платить только за пространство и процессорное время дешевле, чем за собственные выделенные серверы и обслуживающих их специалистов; масштабирование сервиса при увеличении его популярности - дело нажатия пары кнопок в панели управления облаком - "хочу еще места/хочу еще пару гигагерц"; сохранность данных, доступность серверов, вопросы распараллеливания вычислений и данных по нескольким серверам - головная боль "хозяина облака", а не разработчика сервиса. Пример, уже ставший классическим: создатели фотохостинга SmugMug, использующего Amazon S3 для хранения пользовательских фотографий, утверждают, что, по самым скромным подсчетам, их экономия на хостинге составляет полмиллиона долларов в год[ По сравнению с содержанием собственных выделенных серверов. Проверить калькуляции можно здесь].
В идеале (пока, видимо, недостижимом), разработчик нового онлайн-приложения может вообще не пользоваться хостингом в классическом смысле - запускать вычисления в одном "облаке", хранить данные в другом, показывать морду сайта с третьего, а самому сидеть на Гавайях и пить мохито и пинья-коладу.
Искренне надеюсь, дорогой мой читатель, что твое понимание этих новых веяний углубилось в достаточной мере, чтобы на досуге порассуждать о нерассмотренных мною темах - вроде изменений рыночной ситуации в облачном мире (например - рынка труда работников IT-инфраструктуры; или рынка мобильных устройств; или рынка интернет-доступа; или рынка больших уродливых серверов; соль, сахар, перец по вкусу). Мир - меняется?
Это, читатель, у нас будет самый скучный раздел. Настолько скучный, что мне просто лень его писать, и лишь одна мысль заставляет меня - стоит этот раздел опустить, как статью тут же перекосит в сторону детского энтузиазма. Поэтому быстрым аллюром пройдемся по негативным последствиям перехода на заоблачные вычисления, тем более что бо' льшая их часть очевидна.
Итак, совсем коротко. Локальный (временный) недостаток "облаков" для пользователя/организации заключается в некотором несовершенстве современных браузеров как полноценной платформы для приложений. Временным же я этот недостаток считаю по той простой причине, что… ну, если все занимаются "этим" (приложениями-в-браузере), то уж наверное и производители браузеров подтянутся… Собственно, в последние пару лет именно этот процесс и можно наблюдать.
Глобальные недостатки - заложенные в самой природе "заоблачных приложений" - куда серьезнее и вряд ли могут быть устранены. Во-первых, мы всецело и безоглядно полагаемся на доступность, надежность и скорость интернет-подключения [Поправка касательно этого недостатка. Вообще-то, есть тенденции разработки решений для работоспособности веб-приложений при непостоянном подключении: например, Google Gears встраивается в браузер пользователя и приложение на сервере и позволяет работать с "отключенным приложением", как с обычным (скажем, "отправлять" письма - до поры они полежат в хранилище на диске, а при первом же подключении отправятся на самом деле).]. Во-вторых, отдавая "облаку" на откуп всю инфраструктуру, мы, вообще говоря, упускаем из рук управление надежностью. Как неоднократно говорилось выше, в большинстве случаев далекий профессиональный дата-центр надежнее доморощенной IT-инфраструктуры; но вот при попадании вашего случая в меньшинство… возможность маневра и быстрого решения проблемы крайне ограничена. Наконец, право доступа к информации теперь тоже полностью на совести далекого заморского сервера, а кто и как там станет перлюстрировать ваши конфиденциальные данные - это вы у Бёрда Киви поинтересуйтесь.
На сей минорной ноте и завершим наш краткий и неполный обзор. Но все же, прошу обратить внимание, что данный раздел - это постскриптум, а более оптимистические выводы следует искать в конце предыдущего.