SaaS, IaaS, PaaS... Если вы видите в этих аббревиатурах лишь сочетания
букв, то, вероятно, ничего не слышали о новомодных облачных вычислениях.
Более того, многие из тех, кто употребляет эти слова, зачастую
неправильно определяют их значения. Помочь разобраться в тонкостях
сложной инфраструктуры «облаков» вызвался участник Сообщества Владимир
Кузьмин.
Мне с детства нравится вопрос, который задавал про любой
незнакомый предмет маленький полярный медведь Умка. Вопрос звучал так:
«А что это такое и с чем его едят?». Коротко и по существу. Жаль, что
многие люди, не будучи знакомые с каким-либо явлением, подобных вопросов
не задают, а лишь важно кивают головами, когда начинаешь им о б этом
рассказывать. Наверное, боятся показать свою неосведомленность про
«известные слова». В последнее время стало очень модным слово 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 – принцип независимости от «железа». Пользователю неизвестно и неважно, на каком аппаратном узле облака и даже на каком континенте сейчас работают его виртуальные машины. Пользователь не должен ни при каких условиях зависеть от работоспособности какого-либо конкретного узла.