четверг, 28 июля 2011 г.

Облака: выдумки маркетологов или реальность?


Представляю вашему вниманию текст моего выступления на Ulcamp 2011.

Сейчас "облака" - это один из мировых трендов. Только ленивый сейчас не говорит об "облаках". И если какой-то маркетолог не говорит про "облака", то это наверное мертвый маркетолог :) Мы же, хотим рассказать про "облака" с точки зрения сервиса, который реально их использует, которым пользуются больше 70 тысяч пользователей. Мы хотим показать вам "грязную", "неприкрытую" подноготную облаков.

Что могут рассказать вам об "облаках" маркетологи?
Вот это. Что вам больше не надо париться об обслуживании, масштабировании, безопасности, доступности и бла-бла-бла... всего вашего хозяйства. Звучит красиво :)

И, да. Все это есть в "облаках". До появления облаков нужно было покупать лицензию на каждую машину. Теперь есть "облачные" решения: Google Docs, Gmail, Autocad WS. Появилось много решений, не имевших аналогов ранее: Dropbox, Yammer, Juniper Junosphere.
"Облака" делают более доступными программные продукты, которыми раньше мы не могли пользоваться из-за стоимости или технической сложности. Сравните сложность внедрения shopping cart-решения в существующий сайт до появления Ecwid и теперь. Яна Франк отлично описала свои "приключения".

Однако, "облака" - это прежде всего техническое решение, не маркетинговое. На самом деле, каждое "облачное" решение индивидуально. Начиная от механизмов виртуализации серверов (XEN, VMware, Jail) и заканчивая всем спектром SaaS решений.
Даже сами "облака" бывают разными:

- Infrastructure as a Service ( IaaS ) - это облако предоставляющее инфраструктуру. Вы нажимаете несколько кнопок, и у вас появляется полноценный сервер. Делаете запрос по API, и вас появляется еще десяток абсолютно таких же серверов. Красота!
Примеры: Amazon Web Services, Rackspace Cloud Services, GoGrid Cloud Hosting.

- Platform as a Service ( PaaS ) - это облако, которое дает вам платформу. Вы просто пишете программу в соответствии с предопределенными правилами, нажимаете кнопку “Deploy” и она живет дальше сама. Платформа обеспечивает ее работу за вас.

Примеры: Google App Engine, Echo StreamServer, Heroku, Azure Services Platform.

- Software as a Service ( SaaS ) - это законченный сервис. Если предыдущие решения используют разработчики, то эти работают с обычными пользователями.

Примеры: Ecwid, Google Docs, Gmail, Dropbox, Yammer, Autocad WS, Juniper Junosphere.

Когда вы говорите об "облаках", пожалуйста, уточняйте какой из “aaS” вы имеете ввиду :) Потому что SaaS Ecwid живет в IaaS Amazon EC2. Облако живет в облаке. Нам еще остается как-нибудь с Echo StreamServer’ом интегрироваться и полный набор облаков получится :)
Да, снаружи они тоже выглядят красиво, и даже блестяще. Но, вся "облачность" ограничивается их архитектурой. Об этом маркетологи, обычно умалчивают - зачем стеснять обывателей?

Например, Ecwid до недавнего времени хранил изображения продуктов на своих серверах. Представьте, у вас есть сервер, на котором хранятся картинки клиентов. Жесткие диски на сервере имеют конечный размер. Угадайте, насколько безразмерной является возможность заливать изображения продуктов? Да, все эти вопросы решаемы либо автоматизацией, либо изменениями в архитектуре. В данном случае не было архитектурных изменений, пока у нас не накопилось 5,5 миллионов картинок. Теперь картинки благополучно живут в безразмерном вместилище Amazon S3.

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

К слову о доступности. Что бы вам не обещали маркетологи, все "облака" работают на реальном железе. И, вы не поверите! Железо иногда "умирает"...

Возьмем пример: Amazon EC2. Известный IaaS сервис. Нажал кнопку - получил сервер. Однако, этот сервер работает на каком-то реальном, физическом железе. Что произойдет, если этот физический сервер умрет? Правильно, умрет и ваш хост. Да, инженеры Amazon мониторят железо, и да если железо умирает, то они скорее всего могут прозрачно переселить вас на другой хост. Если успеют. На моей памяти, сервера на Амазоне умирали навсегда несколько раз. Ваши действия в этом случае зависят от архитектуры: один сервис “не заметит” пропажи сервера, а у другого будет частичная недоступность, третий будет лежать целиком и полностью...

А что если умирает не хост-система, а сетевое оборудование? 21-го апреля 2011 года во время сервисных работ с сетевым оборудованием, основной поток трафика был ошибочно перенаправлен на вспомогательную сеть. Эта ошибка вызвала каскадное падение нескольких сервисов. В том числе сервиса, отвечающего за предоставление жестких дисков (Amazon EBS).  Множество серверов в этом регионе Амазона не было доступно в течение трех дней! Во время этого фейла лежала целая пачка известнейших сервисов. Вот замечательная коллекция сообщений о недоступности достаточно известных сервисов, затронутых тем несчастьем. Вот так "облака" опускаются на землю... Нам тогда повезло - нас не задело. Сервера падали вокруг, а мы счастливчики.

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

Далее. Есть такой сервис как Amazon S3, который позиционируется как мегаофигенное хранилище. Только они могут себе позволить упасть на 20 минут, именно столько были недоступны те самые картинки продуктов в Ecwid незадолго до этого выступления.

"Облака", вообще в последние годы стало модным словом. Все хотят быть "облачными". Даже последний VPS-провайдер не стесняется называть себя “облачным хостингом”. Хотя единственное, что он умеет делать - это давить ресурсы на хост-системе, чтобы засунуть побольше серверов на одно железо. А потом торжественно приоткрывать кран и называть это “облачным выделением ресурсов” :)

Такой спрос на “облачность” обесценил само понятие. Когда мне говорят про очередное “облачное” решение, я спрашиваю в чем заключается его "облачность". Давайте оставим право говорить об "облаках" маркетологам. А мы будем называть технологии своими именами.



Спасибо за внимание.