Мне с детства нравится вопрос, который задавал про любой незнакомый предмет маленький полярный медведь Умка. Вопрос звучал так: «А что это такое и с чем его едят?». Коротко и по существу. Жаль, что многие люди, не будучи знакомые с каким-либо явлением, подобных вопросов не задают, а лишь важно кивают головами, когда начинаешь им о б этом рассказывать. Наверное, боятся показать свою неосведомленность про «известные слова». В последнее время стало очень модным слово SaaS. Его употребляют к месту и не к месту, по делу и просто так. И к сожалению, не всегда упоминающие его (особенно далекие от IT) люди действительно понимают, о чем говорят. Равно как не понимают они, в чем суть и почему это лучше/хуже или применимо/неприменимо в конкретной ситуации. Слово модное, потому и говорим про Cloud Compuing и SaaS. Но мы-то люди умные и хотим точно знать, кто есть кто.
Я беру на себя смелость рассказать, что такое «облака» и и с чем их «едят». Но не претендую на полное или исключительно верное мнение о данных технологиях. Это общий обзор определенных технологий в сфере IT, написанный простым человеческим языком.
Прежде чем говорить об облачных вычислениях, позволю себе сделать небольшой экскурс в устройство современных информационных систем. В самом нижнем по уровню абстракции слое лежит «железо». Холодное и мертвое, пока не включишь ток. Когда же мы с помощью рубильника вдыхаем в него жизнь, оно оживает и начинает слать во все стороны электрические импульсы, частью из которых мы вполне можем управлять. Чтобы железо стало вести осмысленное существование и позволило нам получать какой-нибудь (возможно даже общественно-полезный) эффект, нам нужна операционная система.
На уровне ОС мы можем выполнять простые действия, и, что самое существенное, она позволяет нам запускать наши родные приложения: «Сапер», пасьянс «Косынка» и прочие, безусловно, полезные в хозяйстве программы. Собственно, программы дают нам возможность бесцельно убивать время выполнять полезную работу. Но это еще не все. Чтобы убивать время работать не в гордом одиночестве, а в окружении коллег и друзей, нам понадобится связь между компьютерами. Не вдаваясь в лишние подробности, скажу, что за связь на базовом уровне отвечает ОС, а осмысленные данные передают наши приложения.
Вот здесь и находится краеугольный камень нашей, как ее любили одно время называть, информационной эры. Когда мы смогли обмениваться информацией быстро, просто и дешево, у нас стали появляться различные интересные социальные явления. В самом деле, перенос общественных макроструктур в сеть произошел настолько естественно и в то же время стремительно, что мы даже как-то не заметили процесс перехода, а сразу оказались в новой реальности. Но изменения в общественном сознании не смогли бы произойти без принципиального изменения сетей передачи данных. В самом деле, многие ли из вас сидели в Интернете с модема? А многие ли участвовали в социальных сетях во времена модемов? Так что изменения в технологиях идут рука об руку с изменением общественного сознания.
О чем это я? Да, собственно, о том, что с развитием сетей изменились наши отношения с Сетью. Мы стали много времени проводить в Интернете. Мы зачастую храним данные «в облаке», не особо задумываясь о том, что такое то самое облако и где же на самом деле находятся фотографии любимой кошечки. У большинства людей, далеких от IT, даже не возникает вопроса где «живет» их почта. Она работает, доступ всегда есть. Зачем вопросы задавать? Для обычных обывателей современные сервисы не чудеса инженерной мысли, а лишь реальность, данная в ощущениях. Такая же, как небо над головой. И о природе облаков в этом небе они задумываются так же часто, как и о природе облаков для SaaS.
На фоне таких «драматических изменений» постепенно стали рождаться новые концепции подходов к хранению и обработке данных, к доступности и защите информации, к возможности работать из любого наперед заданного места, лишь бы Интернет был. А всю инфраструктуру можно разместить там, где есть специально обученные люди. Вот пусть эти люди и гадают, где какие серверы ставить, как их соединять и как ими управлять. В этом и заключается суть концепции «Инфраструктура как сервис», она же IaaS.
Главное принципиальное отличие от размещения в ЦОДе собственной инфраструктуры для модели IaaS заключается в том, что вы арендуете у провайдера некоторые абстрактные вычислительные мощности, обычно масштабируемые на лету. То есть у вас столько мощности, сколько вам нужно в данный момент. Естественно, физические серверы и сети никуда не делись, просто теперь они стали проблемой провайдера, а не вашей. Вы же получаете в свое распоряжение всегда работающие виртуальные машины потребной вам мощности. А уж дальше можете делать с ними все, что вашей душе угодно, – от выбора операционной системы до работы вашего приложения.
Следующий логичный шаг – отдать тем же людям, которые занимаются инфраструктурой, не только базовую инфраструктуру, но дать им рулить и операционными системами и, возможно, даже какими-то частями приложений (обычно очереди передачи данных и прочие транспорты). Таким образом мы приходим к концепции «Платформа как сервис», оно же PaaS. Здесь мы уже не сможем контролировать операционную систему. Зато сможем заливать в платформу свои приложения. Для Вас это выглядит как несколько масштабируемо мощных компьютеров, на которые Вы ставите компоненты своей программы. А за все остальное отвечает невидимая рука администраторов. Вам же регулярно приходят отчеты и счета за ресурсы, которые потребило ваше приложение.
И на закуску осталась концепция «Приложение как сервис», также известная как модный SaaS. Здесь у вас еще меньше контроля. Контроль за всем вместе с ответственностью за все лежит уже на администраторах приложения, а вы лишь управляете только собственным аккаунтом (ну или группой аккаунтов). Что бы ни случилось, приложение должно работать. И вы должны иметь возможность им пользоваться. Для этого разработчики создают специальную архитектуру приложений, размещают компоненты на разных виртуальных машинах и т.д.
Собственно, все эти концепции представляют собой частные случаи так называемых «облачных вычислений», также известных под термином Cloud Computing. Это важное понятие, с которым путаются наиболее часто. Давайте посмотрим, что же такое облака, чем облачный подход принципиально отличается от традиционного и в чем преимущества облаков для клиента.
Облачный хостинг (по мнению NIST) соответствует следующим пяти ключевым характеристикам:
On-demand self service – пользователю доступен любой объем услуг. Причем для «дозакупки» услуг пользователю не нужно прилагать усилий (он делает все из панели управления) и все происходит «мгновенно».
Broad network access – принцип сетевой доступности. Облачное решение должно быть доступно с любого компьютера, с которого есть доступ в Интернет. Про Китай с его «великим китайским файерволом» не говорим.
Metered use – принцип оплаты по факту. Как работал, так и заработал. Вернее, сколько потребил услуг, столько и заплатил.
Elasticity – принцип гибкости закупки. Возможность потребления мощности небольшими квантами и произвольное время использования именно того объема услуг в течение того времени, которое хочет пользователь. То есть можно год использовать маленький серверочек, потом пару дней половину датацентра, а далее – снова родной маленький серверок.
Resource pooling – принцип независимости от «железа». Пользователю неизвестно и неважно, на каком аппаратном узле облака и даже на каком континенте сейчас работают его виртуальные машины. Пользователь не должен ни при каких условиях зависеть от работоспособности какого-либо конкретного узла.