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 :) Наверняка что-то упустил, но очень хочу спать :)
Если найдете косяк или что непонятно, задавайте вопросы.

15 comments:

Tray said...

Алексей! ) Люди из отпусков уже вернулись, все сидят перед вашим блогом и жмут F5, КОГДА УЖЕ БУДЕТ ПРОДОЛЖЕНИЕ??? По поводу косяков: "Короче, это вс1 :)", наверное имелось ввиду "Короче, это всё :) "? Алексей, уже надоело, я к вам в блог просто приходить перестану и знакомым рекомендовать рассказ тоже, хотя многих уже подсадил. И сежу вежь, жду.... в общем когда будет продолжение уже???

t0xa said...

Да мы уже требуем!!! :)

Гилёв Вячеслав said...

1. Первый раз в жизни осилил такой текст, прочитал до конца...
бугага

2. Факты верные, а причины... хм.
Ну на счет аренды экономических софт сомнения. Имхо куда более везкий довод - это отдать незнакомому дяде коммерческую тайну (бухгалтерию) - это унриал имхо. Иначе бы в России 1С давно бы сервис по требованию продвигала.

3. Горизонтальное масштабирование - это для специфических задач. Базы данных помимо проблему с быстродействием еще испытывают проблемы с параллельностю. Блокирование данных вряд ли клоуд-компьютинг вылечит.
В этот смысле гугльапп не пример, там разграничение по пользователям, а коллективная работа очень тормознутая штука.


Послесловие. Короче, хватит фигней заниматься, даешь книгу!

Дмитрий Тимохов said...

Я не гад. Я специально сегодня пришел и прочел. Пока мало понял. Но еще завтра прочту еще реза. Потом будут вопросы.

ЗЫ Мы через 2 меся берем на работу разработчика, который будет в вебе делать нам один проект. Он на словах фанат МС, но любит ставить Апач на Виндовс. Поэтому мне надо подготовиться к его приходу, чтобы иметь возможность продвинуть его и наш проект в область современных подходов и технологий. В общем, жди вопросов от меня.

Andrew Tishkin said...

Ну косяки, так косяки: "вы призадумались о переносе свое 15 Гб базы в облако" - имелось в виду "своих"? :)

За материал спс, а вот по поводу "пара сотен долларов" за облачные вычисления - сомнения возникли. Неужели у MS и прочих "облаководов" сейчас уже такие цены? Прайс-лист бы глянуть...

PEAKTOP said...

2. Факты верные, а причины... хм.
Ну на счет аренды экономических софт сомнения. Имхо куда более везкий довод - это отдать незнакомому дяде коммерческую тайну (бухгалтерию) - это унриал имхо. Иначе бы в России 1С давно бы сервис по требованию продвигала.


Позвольте с Вами не согласиться.

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

Дык вот. Старт самой технологии дан. А вот пройдет года два-три - и появятся сервера, которые будут предоставлять "отказоустойчиво-анонимный" хостинг для этих целей. И достаточно будет отправить только СМС на номер ... (впишите сами).

И будут отдавать "незнакомому дяде" свою бухгалтерию потому, как будет понятно всем, что дядя зарабатывает на том, что он у вас не спрашивает, как вас зовут и прочая, т.к. таких как вы - у дяди тысячи. Бизнес дяди будет в том, что он "отвечает" (\m/), что ваши данные могут просто пропасть, но никому "куда-не-надо" на стол не попадут.

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

Гилёв Вячеслав said...

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

ну тогда и я не соглашусь,
потому что:

1. В качестве контраргумента приводится пример с нелегальным файлами, а мы говорим о другом - сохранении коммерческой тайны (не прав)

2. анонимные сервера-хостинги есть и сейчас (коллатионги всякие)

соглашусь в одном, время покажет

Дмитрий Тимохов said...

Возник вопрос, Алексей.

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

Если делать вычисления параллельными, то, очевидно, к источнику данных будет обращение из многих потоков.

Тут же возникает вопрос, что традиционный подход МS SQL с его блокировочностью не очень подходит в этой ситуации. Нужен хороший версионник. Вроде бы (я точно не знаю, ибо пока сидим на MSSQL 2000) новая версию ихней СУБД стала версионной, ну или заимела черты версионной СУБД. Но, насколько мне видится, нельзя быть блокировочником долгое время, потом стать обалденным версионником за несколько лет и сравняться с тем же Ораклом в этом показателе.

В общем вопрос - как с БД то?

Возможно я не очень понял суть клауда ((( Пойду перечитаю...

Alexey Kovyazin said...

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

В качестве очевидного первого шага можно установить самое обычное клиент-сервисное ПО на виртуальный Windows Server и давать пользователям доступ через Remote Desktop.

тут вспомнил о тебе :)

Может быть, сделаем из твоего продукта неплохой кейз SaaS приложения, заодно читателям itblogs будет интересно, как оно в натуре может быть? :)

Макс said...

да мы хотим продолжение Трое в серверной !!!!!!!!!!!!!!!!

XIO said...

О! Нашел оригинальный Блог! Рад присоединиться!

В общем очень с нетерпением жду продолжения "Трое в серверной" =)
ООчень жду)) Спасибо за проделанную работу =)

si-rus said...

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

Alexey Kovyazin said...

не увидел другой стороны вопроса - рефлексия, субъективные оценки, про железо есть интересные мысли.

Несомненно, вокруг облаков много тумана, но я не слышал призыва "всЁ в облака", только "всЕ в облака" - но там ведь действительно приток денег и типа рост с нуля... а ИТ-вендоры тоже хотят порубить баблосов влегкую.
По прогнозу то ли форрестера то ли еще кого, вырастет доля рынка с 3-5% до 25% - ну так это же миллиарды, вот и трубят, а журналисты знаки пишут.

Unknown said...

Вот такие процессоры оно и надо :-)

http://user1.cooler-online.ru/blog/10466.html

оригинал здесь
http://www.pcper.com/article.php?aid=825

hosting kniga said...
This comment has been removed by a blog administrator.