Skip to main content

Облачный атлас: краткий путеводитель по вычислительным облакам для новичков

Неоднократно замечал, что многие мои коллеги (или просто знакомые) часто путают разные варианты модного сейчас набора концепций под собирательным названием “вычислительные облака”. Я решил набросать очень-очень краткий путеводитель по облакам, с примерами и анализом сильных и слабых сторон.

Что такое облака?

Несмотря на то, что стеку концепций (это не технологии, а именно набор концепций, идей!) под названием “вычислительные облака” уже, как минимум, 10 лет, единого мнения о “главном признаке” облаков нет до сих пор. В общем случае, облака - это вычислительные ресурсы по запросу (то есть - простота и скорость получения ресурсов) плюс высокая гранулярность учета этих ресурсов (оплата за час работы, а не за месяц). Не смотря на то, что звучит это просто и красиво, техническая сторона облаков очень сложна, как со стороны обеспечения, так и со стороны клиента. Большая часть современных операционных систем поддерживает горячее добавление ресурсов, но почти ни одна из них не поддерживает горячее удаление ресурсов, и это лишь один маленький пример. Еще одной проблемой является, как ни странно, продолжение одного из основных бонусов облаков - точная тарификация ресурсов. Традиционный хостинг или аренда сервера тарифицируется “по среднему значению”, за счет чего активный пользователь услуг получает бонус за находчивость. При кажущейся дешевизне облаков, активная эксплуатация без точного понимания затрат на ресурсы грозит если не разорением, то, как минимум, неприятными открытиями при получении счета. Элементарный slow http ddos может сгенерировать пятизначный счет в долларах за трафик.

SaaS - Software as a Service

Этот вариант облака появился самым первым, но при этом развивался до недавнего времени он хуже всего. Идея в том, что пользователь получает доступ к конкретному приложению (MS Word или 1C), которое работает где-то в заморском датацентре. Идею продвигал Microsoft, в надежде победить пиратство. В таком варианте продажи ПО (точнее - сдачи в аренду, ведь ПО, на самом деле, не продается) очень легко тарифицировать клиента и также легко отключать неугодных. Такая технология гарантирует отсуствие пиратства, ведь украсть приложение, к которому нет доступа - невозможно. Подвидом данного вида облаков является WAaaS - WebApp as a service. Данный вариант отлично подходит тем, кому нужна типавая инсталляция приложения (форум, crm). Эта услуга требует очень хорошего канала в интернет (минимум 512кб в секунду до датацентра для каждого пользователя услуги).

PaaS - Platform as a Service

Это сравнительно свежая идея, из всех видов облаков она появилась последней. Идея в том, что код, написаный пользователем услуги, выполяется в провайдерском окружении. В отличае от SaaS, код ваш, однако инфраструктуру вам предоставляет провайдер. При этом совершенно не надо думать об отказоустойчивости или масштабируемости услуги - все это делает провайдер. Масштабируемость будет горячей (оплата за количество использованных циклов процессора, операций ввода-вывода) и совершенно незаметной. Это делает данный вариант облака идеальным для клиента с непредсказуемым профилем нагрузки (классический пример стартапа, у которого посещаемость может вырасти в 10.000 раз за день). Разумеется, без ложки дегтя в данной бочке меда не обошлось. Ложка называется App Binding. Дело в том, что абы какой код работать в подобной инфраструктуре не будет. Приложение придется адаптировать специально под конкретного провайдера. Причем адаптация может быть очень непростым делом и доставить разработчику много головной боли. Еще больше головной боли будет при миграции между провайдерами. Еще одной ложкой дегтя является устаревание основных версий библиотек и невозможность установить что-либо нетиповое. Если вам нужна экзотическая библиотека или (что еще хуже), ее экзотическая версия - у вас большие проблемы. Разумеется, провайдеры работают над решением этой проблемы, но сейчас она проявляется в полной мере.

IaaS - Infrastructure as a Service

Самый широко известный и простой для понимания вариант вычислительных облаков. В общем вы получаете в аренду виртуальные сервера нужной вам конфигурации. Сервера имеют предустановленную ОС (на самом деле чаще всего они не ставятся, а копируются - для ускорения деплоя), а все остальное - уже ваша сфера ответственности. Единственное отличае от традиционных VDS/VPS - скорость получения услуги, новые сервера создаются буквально за минуты. Ну и, конечно, традицонная почасовая тарификация. Для более взыскательных клинетов IaaS позволяет построить виртуальный датацентр, создав, кроме серверов, еще и связующие их приватные сети. В общем случае IaaS не сильно сложнее традиционных VDS. Большинство провайдеров предлагает определенный набор средств для автоматизации развертывания. Обычно этот набор позволяет минимально сконфигурировать систему прямо в процессе развертывания (например, поставить дополнительные пакеты, привязать дополнительные файлсистемы и проч), однако слово “минимально”, в данной ситуации - ключевое. Сервер все равно придется настраивать самому. Благодаря такому подходу IaaS обеспечивает наибольшую гибкость в развертывании - ценой наибольших трудозатрат.

Выводы

Облака появились как ответ на две основных проблемы ЦОД: во-первых, это постоянная неравномерность распределения нагрузки между физическими серверами (если у вас 20 серверов со средней нагрузкой в 10%, это означает, что за 18 серверов вы переплатили, и они, фигурально, греют воздух), а во-вторых - скорость развертывания новых машин. Бизнес очень любит мощности по запросу, желательно “вчера”. Классический пример - обсчет финансового отчета в конце года. Большой отчет требует прорву ресурсов, но нужны они только на время расчета. Интересным следствием из этого является тот факт, что в облаках конкретный сервер не имеет вообще никакой ценности - сама идеология облаков предполагает, что создается он только под конкретный запрос и живет только время его выполнения. Ценность в облаке имеет только информация (данные на серверах). Это налагает определенный отпечаток на работу в облаке - например, никто, кроме клиента, не заботится о целостности его, клиента, информации (исключение составляет только SaaS/WAaaS)