Friday, October 09, 2009

Что за хрень этот клауд компутинг (с) Ларри Эллисон

По просьбе Димы Тимахова излагаю свою версию "откуда есть пошел клауд компьютинг".

Она получилась слегка длинная, но надо прочесть. Вообще, можете ее рассматривать как необходимую теоретическую подготовку к чтению "Трое в серверной 2.0", так как там эти идеи активно используются :)

Ну, вздрогнули.

Для начала вернемся в прошлое. Не к динозаврам, а в 90-е годы, когда стал развиваться массовый хостинг. Выглядело это так - ставили ЭВМ в темную комнату, заводили там тысячу аккаунтов, на которых бодрые интернет-деятели устраивали бум доткомов. И по сей день большинство хостинга так и живет.
Затем, когда компьютеры стали дешевле, а интернет-проекты тяжелее, многие граждане (а не только олигархи) стали пользоваться выделенным сервером, и запускать на нем разные тяжелые (ну то есть криво-криво написанные) прилады для веба и не только.

В какой-то момент появилась мысль - а давайте не просто сайты будем клепать, а напишем бизнес-приложение типа склада, учета кадров или бухгалтеров (по-буржуйски это значит типа ERP, CRM и Accounting), да такое, чтобы работать с ним можно было из браузера!
И будем мы сдавать это приложение в аренду, помесячно, соответственно кладовщикам, менеджерам по продажам и бухгалтерам. И тогда не надо будет им деражть свой сервак, а только инет и все. Короче, лишим честных сисадминов работы и все их бабки загребем себе.

И идея это называлась, как вы догадались, Application Service Provider (ASP).

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

Была и технологическая история провала - не было возможности гибко масштабироваться под требования роста/уменьшения клиентской базы, так как каждый клиент требовал либо отдельную железяку, либо написания приложения таким образом, чтобы один сервер приложений мог изолированно хранить и обрабатывать данные разных юр.лиц, да не просто так, а ОТКАЗОУСТОЧИВО и с горячей заменой!
А это требует несомненного перенапряжения ума у программистов, особенно в случае отсутствия у них заточенных под это инструментов и правильных привычек (не мешать водку с пивом и др.). Да если честно, я сомневаюсь, что кто-то из читателей способен написать такую вещь на низком уровне, таких мега-кодеров мало и они страшно далеки от народа.

Очевидно, что проще всего было рассадить клиентов по разынм машинам, но покупать под каждого клиента сервер нерентабельно, а писать правильно - мега-программисты разорят своими бонусами :) Ну и вообще немодно стало, все инвесторы в то время ударились в спекуляции с недвижимостью.

В общем, практически слили эту идею, тем более что хостинговая индустия БУРНО росла за счет неимоверного роста кол-ва веб-сайтов, блогов и другой веб-шняги (ну вы все в курсе, о чем я), и им было начхать на всякое такое ASP, проще было рубить бабло с сайто-делателей.

Так бы и забыли об идее выноса чего-либо на хостинг, как вдруг появилась (а точнее, поперла в массы, она-то давно была) виртуализация. Термин "виртуализация" означает кучу разных вещей, но нас интересует та виртуализация, когда на железку ставится тонкая-претонкая операционная система под название гипервизор, которая занимается тем, что изолирует друг от друга реальные операционные системы, типа Windows и Linux.

Но зачем представителю культа этот музыкальный инструмент?
А вот зачем - виртуализация позволяет впихивать на одну железку несколько операционных систем, которые будут выполняться изолированно и одновременно и, таким образом, будут полностью утилизовать обрудование.
Да-да, все изначальные надежды вокруг виртуализации строились вокруг того факта, что обычный нормальный железный сервер в процессе своей жизни загружен процентов на 8%. Т.е. всякие Xeonы-Атлоны и т.д. тупо прохлаждаются, а могли бы работать! Абыдно, да?
А ну-ка посадим все их на один сервер и пусть пашут, как предки афроамериканцев.

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

Логично, но и тех чуваков, которые выдумали гипервизоры и контейнеры для виртуализации, тоже не лаптем делали.
Чтобы решить проблему "навертывания" железа, придумали они механизм high availability, когда используется не одна, а несколько железок, и все данные между ними в реальном времени передаются по сети. И то, что в памяти сидит, и то, что на жестком диске хранится, и то что в процессорном кеше - чуть ли не по тактам синхронизируется (могу наврать, но маленькими порциями).

Кто-то может подумать, что такая система ненадежна, однако такое развитие событий было предусмотрено гурами еще в незабвенной ОС Multics в черте-каком мохнатом году, так что бояться не надо, "все рожают и ничего".

Короче, не буду углубляться в эту тему.

В общем, можете поверить мне и другим виртуализаторам на слово - это работает. Помимо high availability, обеспечивается еще баланс нагрузки, когда гипервизор перемещает операционную систему, которая стала вдруг потреблять много CPU, на менее загруженную физическую машину, или наоборот.

Что же мы получили? А получили мы концептуальный сдвиг, господа. Не устали еще читать? Тогда разливаем по второй и поехали.

Концептуальный сдвиг заключается в том, что ОС по факту не привязаны теперь к железякам. У нас может быть 10 ОС и пять железяк. Стала расти загрузка - купили еще пару серваков, подключили, ОС тут же расползлись по 7 сервакам. Вышли новые более мощные железяки, мы их подключили, а старые на свалку. КРА-СО-ТА!

Так, а причем тут клауд? А вот причем.... В какой-то момент обуревшие от избытка денег ребята из Амазон.ком, заработавшие миллиарды на продажах в USA супербестселлеров "Как стать миллионером с помощью ипотеки", взяли и отгрохали рядом с гидроэлектростанцией на реке Миссисипи ангарище под три Боинга 747, но набили его не Боингами, а тучами компов. Может, сотнями тысяч.

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

Что за растрата бюджетных средств, спросите вы? Это не растрата, это "железо как сервис" (Hardware as as Services), пионером (ну, по крайней мере, самым известным первым игроком) стал именно Амазон.

Идея проста до безобразия - в датацентре на N компьютерах крутится M операционных систем (N<=M в общем случае, а по факту наверное N < M).

Часть из операционных систем используется самим Амазоном для подсчета прибылей от продажи новых US-супербестелерров "Как забыть про ипотеку и начать жить", а часть сдается желающим в виде образов операционных систем.

Причем ребята из Амазона помозговали-помозговали и придумали сдавать эти образы не помесячно, как привыкли делать традиционные хостеры, а по часам. Именно так, образ на час. Нет, не один образ, а сколько хочешь образов. Чуете масштаб?

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

Как говорили в дни моей молодости, зачетно, да? (а теперь говорят готично... о времена, о нравы...).

Круто. Но почему это назвали cloud computing?

А представьте себе ангар, набитый серверами, на которых - ну как это сказать? - клубятся экземпляры операционных систем, медленно переползают с одной железяки на другую. Еще они ходят перекурить куда-нибудь в район SUN Fire, выпивают в пабе у HP2910, затягиваются нелегальными патчами в районе какой-нибудь циски...
Вполне романтично, а?

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

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

А также выясниться, что высоконагруженные вертикальные приложения, которые требуют много ЦПУ и требовательны к дисковому IO, в клауде еле ворочаются, так как когда на 5 образах запускается, скажем, 5 баз данных и все начинают клепать годовой отчет, и физически это происходит на одной железке (так как переезд на менее загруженную случается не моментально в общем случае), то все это встает в позу "а ля креветка".

Но идея все равно неплохая. И помимо Амазона еще с десяток более-менее приличных контор развивают эту идею. Вот тут неплохой список (не только HaaS)
http://groups.google.com/group/cloud-computing/web/list-of-cloud-platforms-providers-and-enablers

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

Ан нет. Тут воспряла духом идея приложений в виде сервиса, то бишь Software as a Service (бывший ASP). Воспряла прежде всего благодаря salesforce. На самом дела это прекрасный (тьфу, какое гадкое слово) пример того, как люди годами били (долбили?) в одну точку и таки добились своего.

Фактически, salesforce сделали просто приличное приложение для бизнес-целей, которое неплохо работало в браузере. AJAX и постоянное усовершенствование браузеров удачно совместились с появившейся возможностью гибкого масштабирования железяк и хорошей внутренней реализацией salesforce, которая умела масштабироваться. Ну еще она понравилась ряду журналистов, хорошие менеджеры по продажам впихнули систему кому то из спиcка Fortune 2000, потом Fortune 100, и дальше пошла цепная реакция, IPO, миллиардная капитализация и тысячи подражателей.

И опять читатели нахмурились - причем тут клауд? А вот причем.

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

Так появилась Google Apps, Force.com и скоро появится Azure, а также другие виды "Платформы как Сервис", (Platform as a Service).

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

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

Насколько круто это работает в плане вертикальной производительности? Если вы призадумались о переносе свое 15 Гб базы в облако, то лучше забудьте об этом. Не в этом десятилетии, точно :) Да, работает, но не везде и не всегда.

Грустная картина? Отнюдь. Скорее, новая картина, новые вызовы и новые требования к будущим поколениям разработчиков.

По факту, клауд (и железный, и платформенный) дает просто потрясающие, доселе невиданные возможности для единственного вида приложений - горизонтально масштабирующихся софтин, которые можно и нужно продавать по требованию, в модели Software as a Service.

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

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

И где тут клауд, снова зададите мне вопрос?

А это именно он и есть. Microsoft в своих гигантских датацентрах развернул сотни тысяч Exchange-серверов (а также LiveMeeting, Sharepoint и т.д.), и продает это как услугу в виде BPOS, от 10 баксов в месяц http://www.microsoft.com/online/default.mspx

Сразу скажу, у нас в России BPOS не продается и датацентра у MS нет, но точно такие же сервисы за те же 10 баксов предоставляют продвинутые хостеры вроде Infobox и parking.ru.

Конечно, читатели уже начали обвинять меня в рекламе своего работодателя - дескать, все свел к 3 продуктам от одного производителя, хренов мастдаевец. :)

Но я то хочу обратить внимание на то, что таких горизонтальных приложений МАЛО не потому, что они никому не нужны, кроме Микрософта, а потому, что РАНЬШЕ не было возможности писать горизонтально масштабируемые приложения.

Кто из программистов нашего доклаудного поколения мог в здравом уме представить, что у него прямо под рукой лежит 20, 50, 100, 1000 компов, куда можно за 10 минут залить образ ОС со своей программой и поднять такого программного монстра на несколько часов, и это обойдется в пару сотен долларов, а не в годовой бюджет Белоруссии?

Я честно признаюсь - я не смог придумать, как воспользоваться такой мощью в горизонтальном разрезе, хотя долго думал. Это облако моим ясным взором не пронзилось :)

Может быть, новое поколение программеров, которое сейчас сидит на горшках в детском саду с Сони PSP в руках и ловко гуглит "голые воспитательницы", придумает, что можно с этим делать.

Я иду спать. Дима, гад, ты небось давно дрыхнешь, а я два часа пишу этот текст :)

Короче, это вс1 :) Наверняка что-то упустил, но очень хочу спать :)
Если найдете косяк или что непонятно, задавайте вопросы.
Post a Comment