Cloud Computing и Linux

Платформы и приложения для Cloud Computing

Концепция Cloud Computing ("вычислительное облако") дает возможность масштабировать физические ресурсы (например, процессор и дисковое пространство) и предоставлять к ним доступ через Интернет; при этом обработка и хранение рассматриваются как сервис. Идея далеко не нова, однако благодаря развитию технологий виртуализации стало возможно еще более эффективно организовывать доступ к общим ресурсам посредством серверной виртуализации. Принцип Cloud Computing предполагает, что пользователь получает доступ к мощным вычислительным и дисковым ресурсам, совершенно не задумываясь о расположении и настройке этих ресурсов. Нетрудно догадаться, что Linux® здесь играет далеко не последнюю роль. Прочитайте эту статью и узнайте, почему из-за "облаков" выглядывает пингвин.

М. Тим Джонс, инженер-консультант, Emulex

M. Тим Джонс (M. Tim Jones) является архитектором встраиваимого программного обеспечения и автором работ: Программирование Приложений под GNU/Linux, Программирование AI-приложений и Использование BSD-сокетов в различных языках программирования. Он имеет опыт разработки процессоров для геостационарных космических летательных аппаратов, а также разработки архитектуры встраиваемых систем и сетевых протоколов. Сейчас Тим работает инженером-консультантом в корпорации Эмулекс (Emulex Corp.) в г.Лонгмонт, Колорадо.



25.12.2008

Читая материалы технических Web-сайтов, нельзя не наткнуться на термин "Cloud Computing. Говоря кратко, этот подход – это всего-навсего предоставление компьютерных ресурсов (обработки и хранения данных) в качестве сервиса. Такой подход дает возможность небольшими усилиями динамически расширять эти сервисы за счет установки новых серверов и систем хранения, причем для клиентов этот процесс будет незаметен. Идеи Cloud Computing близки другому подходу под названием utility computing, при котором вычислительные ресурсы рассматриваются как услуга, объем потребления которой учитывается подобно обычным коммунальным услугам (электричеству или воде). Концепции Utility и Cloud Computing преследуют схожие цели, а разница между ними в том, каким технологиям они обязаны своему появлению.

Важнейший принцип, лежащий в основе Cloud Computing, – это масштабируемость, а технологии виртуализации позволяют претворить его в жизнь. Виртуализация позволяет более эффективно задействовать сервер путем консолидации множества операционных систем и приложений на единственном общем компьютере. Виртуализация также дает возможность переноса работающего экземпляра гостевой операционной системы вместе со всеим работающими приложеними с одного сервера на другой, менее загруженный.

Внешне Cloud Computing выглядит как перенос компьютеров и систем хранения из предприятия в отдельную общую группу, или "облако". Конечный пользователь выставляет определенные требования к ресурсам (например, ему требуются вычисления и доступ в глобальную сеть с определенной скоростью), а "облако" собирает из своих внутренних компонентов нужные мощности и предоставляет их. Такой подход показан на рисунке 1.

Концепция Cloud Computing продолжает идеи Utility Computing, упомянутых впервые Джоном МакКартни в 1961 году и рассматривающих вычислительные ресурсы как коммунальные услуги. Кроме того, Cloud Computing можно сравнить как с кластерными вычислениями (при которых несколько машин объединяются в группу и образуют одну систему для высокопроизводительных расчетов), так и с grid-вычислениями (здесь машины группы обычно удалены друг от друга на большие расстояния, но решают общую задачу). Существовали также системы с разделением времени, предлагавшиеся в 1960-х годах такими компаниями, как IBM, General Electric и др.

Рисунок 1. Cloud Computing предполагает перенос вычислительных ресурсов в Интернет
Cloud Computing предполагает перенос вычислительных ресурсов в Интернет

Но зачем вам добровольно терять контроль над своими ресурсами и позволять им виртуально существовать в "облаке"? На это есть несколько причин, я назову две из них, на мой взгляд, самые главные – это экономия средств и масштабируемость. Одна из целей, которую преследует Cloud Computing, – предоставить более дешевые ресурсы, чем те, которые есть у вас и которые вы сами обслуживаете. Помимо экономии, мы также получаем небывалую гибкость и масштабируемость, так как поставщик "облачных" ресурсов имеет возможность легко расширить виртуальную среду потребителя за счет своей виртуальной инфраструктуры, предоставив ему более высокую пропускную способность или более мощные вычислительные ресурсы.

Есть и экологическое преимущество Cloud Computing. Ресурсы можно сделать виртуальными, сделав сервер общим для нескольких разных приложений. При этом сервер будет использоваться более эффективно, как показано на рисунке 2. Так, можно задействовать три разных сервера, на каждом из которых работает свое приложение. Но гораздо лучше дать возможность каждому серверу исполнять несколько операционных систем и приложений. В результате понадобится меньшее количество серверов, и как следствие – меньше места для их размещения (экономия пространства дата-центров) и меньше электроэнергии (экономия природных ресурсов).

Рисунок 2. Виртуализация и использование ресурсов
Виртуализация и использование ресурсов

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

Архитектура Cloud Computing

Как показано на рисунке 3, при детальном рассмотрении "облако" представляет собой не единственный сервис, а набор сервисов. Каждый уровень на этом рисунке вносит свой вклад в предоставление сервисов.

Рисунок 3. Уровни, на которых строится Cloud Computing
Уровни, на которых строится Cloud Computing

Начнем с самого нижнего уровня, который отвечает за инфраструктуру (Infrastructure-as-a-Service или IaaS, инфраструктура как сервис). IaaS представляет собой сервис по аренде инфраструктуры, т. е. вычислительных ресурсов и систем хранения. К этим ресурсам относятся не только виртуальные серверы с гарантированной вычислительной мощностью, но и каналы связи требуемой пропускной способности для доступа к хранилищам данных и Интернет. Короче, на этом уровне предоставляется возможность временного использования компьютеров или дата-центров при требуемом качестве обслуживания, с возможностью исполнения произвольной операционной системы и программ.

Экономическая ценность Cloud Computing

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

Следующий уровень сервиса при движении на диаграмме вверх – уровень платформы (Platform-as-a-Service или PaaS, платформа как сервис). PaaS похож на уровень IaaS, но включает в себя операционные системы и сопутствующие службы, ориентированные на определенные приложения. Например, PaaS совместно с виртуальными серверами и системами хранения предоставляет определенную операционную систему и набор приложений (обычно в виде образа виртуальной машины, например, файла формата .vmdk для VMWare), а также доступ к различным специализированным локальным сервисам (например, базе данных MySQL). Другими словами, PaaS – это IaaS вместе со стеком приложений, выполняющим конкретную задачу.

И наконец, на самом верху схемы располагается наиболее простой предоставляемый уровень – уровень приложений (Software-as-a-Service или SaaS, программное обеспечение как сервис), который предполагает использование приложения из централизованной (и, возможно, удаленной – из "облака") системы для работы на локальном компьютере. SaaS является измеряемой услугой и позволяет как бы арендовать приложение и оплачивать только время работы с ним.

Так выглядит "облачные" Cloud Computing в самых общих чертах. В приведенной схеме опущены некоторые составляющие, например data-Storage-as-a-Service (dSaaS, хранилище как сервис). Это платная услуга по предоставлению места для хранения, причем размер платы зависит от максимального объема хранилища и условий доступа, определяемых пропускной способностью канала. Также стали появляться специальные "облачные" сервисы, обеспечивающие взаимодействие как между внутренними компонентами, так и с внешними системами (при помощи некого API), например Web.


Современное состояние Cloud Computing

За последние месяцы наблюдается стремительный рост инвестиций в Cloud Computing и сопутствующие области. Этот рост объясняется спросом на виртуальные "облачные" ресурсы. За прошедшие несколько лет появилось множество новых сервисов, некоторые из которых показаны на рисунке 4.

Рисунок 4. Уровни Cloud Computing и существующие решения
Уровни Cloud Computing и существующие решения

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


Linux, open source и "облака"

Теперь разберемся, каков вклад Linux и сообщества open source в развитие Cloud Computing. Как и можно догадаться, их роль трудно переоценить.

Программное обеспечение как сервис

Концепция SaaS означает возможность пользования программой как услугой через Интернет. Одним из ранних воплощений SaaS являлись поставщики программных услуг (Application Service Provider, ASP), которые хранили или распространяли программы через Интернет своим подписчикам. За предоставление софта и его использование они взимали определенную плату. Получалось, что вы не покупаете программу целиком, а просто временно используете ее при возникновении потребности.

Примеры SaaS

Почувствовать разницу между традиционным подходом и походом SaaS позволит инструмент управления жизненным циклом приложения, предлагаемый SoftwarePlanner.com. Этот инструмент предоставляется традиционным способом, однако дает клиенту возможность выбрать, каким образом ему хранить свои собственные разработки: просто внутри фирмы либо по принципу SaaS, когда продукт становится доступен через Интернет.

Одна из разновидностей SaaS – это работа с удаленно запущенными программами через Интернет. В частности, локальное приложение может использовать удаленные сервисы, которые мы называем Web-сервисами, либо пользователь работает с удаленным приложением через Web-браузер. Пример удаленного приложения – сервис Google Apps, дающий доступ к готовым приложениям через обычный Web-браузер. Обычно удаленно работающие программы имеют в основе некий сервер приложений, с помощью которого обеспечивается доступ к нужным сервисам. Сервером приложений называется программная среда, предоставляющая API имеющихся сервисов (например, API для управления транзакциями или доступа к базе данных). Среди известных серверов приложений можно назвать Red Hat JBoss Application Server, Apache Geronimo и IBM® WebSphere® Application Server. Есть и много других примеров, а обширный их список можно найти в разделе Ресурсы.

Еще одним представителем SaaS является новейший браузер Chrome от Google. Этот браузер можно считать идеальной средой, заменяющей традиционный рабочий стол (desktop), через которую, помимо обычного Web-серфинга, пользователь получает доступ к различным приложениям (как локальным, так и удаленным). (Подробные сведения см. в разделе Ресурсы.)

Платформа как сервис

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

Одним из интересных примеров PaaS является Google App Engine. Платформа Google App Engine дает возможность развертывать Web-приложения на основе отлично масштабируемой архитектуры Google. Делается это так: ваше Python-приложение помещается в изолированную программную среду (sandbox), которая обеспечивает доступ к нему через Интернет (в будущем планируется поддержка других языков программирования). Google создала API для Python, содержащий функции для хранения и управления данными, хранящимися на сервере (с помощью специального языка запросов Google – Google Query Language, GQL), а также для аутентификации пользователей, работы с изображениями и отправки электронной почты. Важно, что sandbox-среда ограничивает доступ выполняющегося Web-приложения к операционной системе. С одной стороны, платформа App Engine имеет ограниченную функциональность, с другой – с помощью нее вы можете создавать готовые Web-сервисы. Обратитесь к разделу Ресурсы для получения подробной информации.

Примечание: Написание приложений на основе App Engine бесплатно, однако при этом есть ограничения на скорость передачи и максимальный объем пользовательских данных. При создания же коммерческих Web-сайтов с App Engine вам придется заплатить.

Еще один пример PaaS – это проект 10gen, обозначающий как "облачную" платформу, так и доступный для скачивания пакет с открытым кодом, позволяющий создать свое собственное "облако". Программный стек 10g похож по функциональности на App Engine, однако есть и различия. Здесь вы можете создавать приложения на языках Python, JavaScript и Ruby. 10g также применяет программную изоляцию приложений и предоставляет надежную платформу, способную охватить большое количество машин (под управлением, конечно, Linux), исполняющий собственный сервер приложений 10gen.

Инфраструктура как сервис

Уровень IaaS означает использование компьютерной инфраструктуры как сервиса и характеризуется тем, что виртуальное аппаратное обеспечение предоставляется без программного стека, что отличает его от PaaS, а от клиента требуется предоставить свой образ виртуальной машины, который и будет запущен на одном или нескольких виртуальных серверах. IaaS является самой близкой к физическому представлению формой вычислений в виде сервиса (не считая доступа к физической аппаратуре). Самый известный коммерческий IaaS-проект – Amazon Elastic Compute Cloud (EC2). Он поддерживает разные типы пользовательских виртуальных образов, включающих в себя ОС и нужные программы. Вы снабжаете образ требуемыми приложениями, а EC2 запускает его на своих серверах, при этом вы оплачиваете время, дисковое пространство и сетевой канал.

Проект Eucalyptus (расшифровывается как Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) – свободная реализация Amazon EC2, имеющая совместимый с ним интерфейс. Как и EC2, виртуализация ОС в Eucalyptus основана на Linux с Xen. Проект был разработан в Университете Калифорнии в Санта-Барбаре для исследований в сфере Cloud Computing. Он доступен для загрузки с сайта университета (см. ссылку в разделе Ресурсы). Вы можете поэкспериментировать с Eucalyptus, попробовав общедоступное Eucalyptus-"облако" (Eucalyptus Public Cloud) с некоторыми ограничениями.

Еще одна IaaS-платформа для Cloud Computing – Enomalism – open source-система, похожая на EC2. Она имеет схожую с EC2 функциональность, основана на Linux и поддерживает как Xen, так Kernel Virtual Machine (KVM). Однако Enomalism – не чистая IaaS-платформа, так как включает в себя также и программный стек на основе Python и среды Web-приложений TurboGears.


Другие разработки в сфере Cloud Computing

Помимо к рассмотренных проектов, существует ряд других успешных open source-разработок для Linux, применимых в Cloud Computing. Открытую программную платформу на основе Java™ Hadoop можно отнести к PaaS, однако она ориентирована на передачу больших объемов данных между сетевыми серверами (разработчиков вдохновил проект Google MapReduce, позволяющий обрабатывать большие объемы данных). Как следствие, платформа применяется в системах Web-поиска и рекламы, например в Yahoo! Hadoop также имеет дочерние проекты по образу и подобию приложений Google: HBase повторяет функциональность базы данных Google BigTable, а Hadoop Distributed File System (распределенная файловая система Handoop, HDFS) аналогична Google File System (файловая система Google, GFS).


Проблемы и пути их решения

Очевидны две главные проблемы Cloud Computing – конфиденциальность и безопасность. Личные данные могут быть защищены путем шифрования, однако при выборе "облачной" системы необходима должная осмотрительность. Вспомним, что на заре появления Web на электронную торговлю тоже смотрели скептически. Тем не менее на сегодняшний день электронные транзакции насчитывают триллионы долларов в год, а значит, Cloud Computing возьмет на вооружения все существующие технологии (такие как Secure Socket Layers, SSL) защиты информации в Web.


Что дальше

Бурное развитие Cloud Computing началось совсем недавно, но Linux и Open Source уже берут бразды правления в свои руки. В Cloud Computing идут огромные инвестиции, поэтому очевидно, что централизованные дата-центры не останутся в стороне, а новые технологии и архитектуры не замедлят появиться на горизонте.

Ресурсы

Научиться

Получить продукты и технологии

  • JBoss Application Server (EN), Geronimo (EN) и WebSphere Application Server (EN) являются наиболее популярными серверами приложений для запуска локальных и Web-сервисов, реализующими архитектуру SaaS.
  • Механизм приложений Google App Engine и программный стек 10gen (EN) служат для создания PaaS-решений на основе виртуальной операционной системы с набором пользовательских программ.
  • Самое известное IaaS-решение – Amazon EC2 (EN). Не мешает упомянуть и открытые проекты, такие как Eucalyptus и Enomalism. Напомним, что IaaS означает предоставление виртуальной аппаратной платформы, готовой для запуска образа виртуальной машины.
  • Hadoop представляет собой программный стек, позволяющий эффективно обрабатывать большие и очень большие объемы данных. Стек включает в себя среду программирования, а также распределенную файловую систему и приложения.
  • Разработайте ваш следующий Linux-проект с помощью пробного ПО от IBM (EN), которое можно загрузить прямо с developerWorks.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, WebSphere
ArticleID=361308
ArticleTitle=Cloud Computing и Linux
publish-date=12252008