Разработка бизнес-приложений на основе технологии облачных вычислений
1. Сущность и назначение облачных вычислений
Первые идеи об использовании вычислений как публичной услуги были предложены еще в 1960-х гг. известным ученым в области информационных технологий, изобретателем языка Lisp, профессором MIT и Стэнфордского университета Джоном Маккарти (John McCarthy). Реализация первого реального проекта приписывается компании Salesforce.com, основанной в 1999 г. Именно тогда и появилось первое предложение нового вида B2B продукта «Программное обеспечение как сервис» («Software as a Service», SaaS).
Определенный успех Salesforce в этой области возбудил интерес у гигантов ИТ индустрии, которые спешно сообщили о своих исследованиях в области облачных технологий. И вот уже первое бизнес-решение под названием «Amazon Web Services» было запущено в 2005 г. компанией Amazon, которая со времен кризиса доткомов активно занималась модернизацией своих датацентров.
Следующим свою технологию постепенно ввела Google, начав с 2006 г. b2b предложение SaaS сервисов под названием «Google Apps». И, наконец, свое предложение анонсировала компания Microsoft, презентовав ее на конференции PDC 2008 под названием «Azure Services Platform».
Сам факт высокой заинтересованности крупнейших игроков рынка ИТ демонстрирует определенный статус облачных вычислений как тренда 2009–2010 гг. Кроме того, с релизом Microsoft Azure Service Platform множество экспертов связывает новый виток развития веб-технологий и выход всей сферы облачных вычислений на новый уровень.
Напомним, что под облачными вычислениями понимается программно-аппаратное обеспечение, доступное пользователю через Интернет или локальную сеть в виде сервиса, позволяющего использовать удобный интерфейс для удаленного доступа к выделенным ресурсам (вычислительным ресурсам, программам и данным).
На данный момент большинство облачных инфраструктур развернуто на серверах датацентров, используя технологии виртуализации, что фактически позволяет любому пользовательскому приложению использовать вычислительные мощности, совершенно не задумываясь о технологических аспектах. Тогда можно понимать «облако» как единый доступ к вычислениям со стороны пользователя.
2. Основные технологии (модели) облачных вычислений
С понятием облачных вычислений часто связывают такие сервис-предоставляющие (Everything as a service) технологии, как:
- Инфраструктура как сервис (Infrastructure as a Service или IaaS);
- Платформа как сервис (Platform as a Service, PaaS);
- Программное обеспечение как сервис (Software as a Service или SaaS).
Рассмотрим каждую из этих технологий подробнее.
Инфраструктура как сервис (IaaS)
IaaS – это предоставление компьютерной инфраструктуры как услуги на основе концепции облачных вычислений.
IaaS состоит из трех основных компонентов:
- аппаратные средства (серверы, системы хранения данных, клиентские системы, сетевое оборудование);
- операционные системы и системное ПО (средства виртуализации, автоматизации, основные средства управления ресурсами);
- связующее ПО (например, для управления системами).
IaaS основана на технологии виртуализации, позволяющей пользователю оборудования делить его на части, которые соответствуют текущим потребностям бизнеса, тем самым увеличивая эффективность использования имеющихся вычислительных мощностей. Пользователь (компания или разработчик ПО) должен будет оплачивать всего лишь реально необходимые ему для работы серверное время, дисковое пространство, сетевую пропускную способность и другие ресурсы. Кроме того, IaaS предоставляет в распоряжение клиента весь набор функций управления в одной интегрированной платформе.
IaaS избавляет предприятия от необходимости поддержки сложных инфраструктур центров обработки данных, клиентских и сетевых инфраструктур, а также позволяет уменьшить связанные с этим капитальные затраты и текущие расходы. Кроме того, можно получить дополнительную экономию, при предоставлении услуги в рамках инфраструктуры совместного использования.
Платформа как сервис (PaaS)
PaaS – это предоставление интегрированной платформы для разработки, тестирования, развертывания и поддержки вебприложений как услуги.
Для разворачивания веб-приложений разработчику не нужно приобретать оборудование и программное обеспечение, нет необходимости организовывать их поддержку. Доступ для клиента может быть организован на условиях аренды.
Такой подход имеет следующие достоинства:
- масштабируемость;
- отказоустойчивость;
- виртуализация;
- безопасность.
Масштабируемость PaaS предполагает автоматическое выделение и освобождение необходимых ресурсов в зависимости от количества обслуживаемых приложением пользователей.
PaaS как интегрированная платформа для разработки, тестирования, разворачивания и поддержки веб-приложений позволит весь перечень операций по разработке, тестированию и разворачиванию веб-приложений выполнять в одной интегрированной среде, исключая тем самым затраты на поддержку отдельных сред для отдельных этапов.
Способность создавать исходный код и предоставлять его в общий доступ внутри команды разработки значительно повышает производительность по созданию приложений на основе PaaS.
Программное обеспечение как сервис (SaaS)
SaaS – это модель развертывания приложения, которая подразумевает предоставление приложения конечному пользователю как услуги по требованию (on demand). Доступ к такому приложению осуществляется посредством сети, а чаще всего посредством Интернет-браузера. В данном случае, основное преимущество модели SaaS для клиента состоит в отсутствии затрат, связанных с установкой, обновлением и поддержкой работоспособности оборудования и программного обеспечения, работающего на нём. Целевая аудитория — конечные потребители.
В модели SaaS:
- приложение приспособлено для удаленного использования;
- одним приложением могут пользоваться несколько клиентов;
- оплата за услугу взимается либо как ежемесячная абонентская плата, либо на основе суммарного объема транзакций;
- поддержка приложения входит уже в состав оплаты;
- модернизация приложения может производиться обслуживающим персоналом плавно и прозрачно для клиентов.
С точки зрения разработчиков программного обеспечения, модель SaaS позволит эффективно бороться с нелицензионным использованием программного обеспечения, благодаря тому, что клиент не может хранить, копировать и устанавливать программное обеспечение. Сервисы SaaS имеют наибольшую потребительскую базу (рисунок 1).
Рисунок 1 – Потребительская база модели SaaS
По-сути, программное обеспечение в рамках SaaS можно рассматривать в качестве более удобной и выгодной альтернативы внутренним информационным системам.
Развитием логики SaaS является концепция WaaS (Workplace as a Service – рабочее место как услуга). То есть клиент получает в свое распоряжение полностью оснащенное всем необходимым для работы ПО виртуальное рабочее место.
На рисунке 2. наглядно изображена взаимосвязь между облачными сервисами.
Рисунок 2 – Взаимосвязь облачных сервисов
3. Инфраструктурные платформы облачных вычислений
Первопроходцами в IaaS считается компания Amazon, которые на сегодняшний день предлагают два основных IaaS-продукта: EC2 ( Elastic Compute Cloud ) и S3 ( Simple Storage Service ). EC2 представляет собой Xen-хостинг со статическими VPSхарактеристиками, которые не расширяются на лету (хотя многие подобные сервисы уже предоставляют т.н. auto scaling). Хранилище S3 имеет интерфейс WebDAV и поддерживает работу со многими известными языками программирования.
GoGrid имеет очень удобный интерфейс для управления VPS, а также cloud storage с поддержкой протоколов SCP, FTP, SAMBA/CIFS, RSYNC, причем размер хранилища масштабируется на лету. В скором времени разработчики обещают добавить управление посредством API.
Enomaly представляет собой решение для развертывания и управления виртуальными приложениями в облаке, при этом управление услугами осуществляется через браузер. Приятным дополнением является автоматическое масштабирование виртуальных машин под текущую нагрузку, а также автобалансировка нагрузки. Среди поддерживаемых виртуальных архитектур поддерживаются Linux, Windows, Solaris и BSD Guests. Для виртуализации применяют не только Xen, но и KVM, а также VMware.
Eucalyptus представляет собой программный комплекс с открытым кодом для реализации cloud computing на кластерных системах. В настоящее время интерфейс совместим с Amazon EC2, но заявлена поддержка и других.
Самым известным примером PaaS платформы является AppEngine от Google, которая предлагает хостинг для вебприложений с возможностью покупать дополнительные вычислительные ресурсы (например, для тестирования высоких нагрузок). Для запуска приложений Google AppEngine на виртуальных кластерных системах была разработана платформа AppScale, не имеющая, тем не менее, никакого отношения к Google.
В системах веб-поиска и контекстной рекламы компании Yahoo используется платформа Hadoop, ориентированная на передачу больших объемов данных между сетевыми серверами. На базе Hadoop построены HBase (аналог базы данных Google BigTable), а также HDFS (Hadoop Distributed File System, аналог Google File System).
Еще одним ярким представителем PaaS являются продукты компании Mosso:
Cloud Sites – веб-хостинг (Linux, Windows, Mail) для нагрузочных веб-проектов с возможностью расширять базовые бесплатные возможности за дополнительную плату (трафик, хранилище данных, вычислительная мощность).
Cloud Files – файловый cloud-хостинг с ежемесячной погигабайтной оплатой за объем хранимых файлов. Управление осуществляется через браузер, либо посредством API (PHP, Python, Java, .NET, Ruby).
Cloud Servers – почасовая аренда серверов (RAM в час), с возможностью выбора серверной ОС. Можно изменять характеристики сервера, но не в режиме реального времени. В скором времени разработчики обещают сделать API для управления серверами.
Ну а в центре всей облачной инфраструктуры Microsoft – операционная система Windows Azure. Windows Azure создает единую среду, включающую облачные аналоги серверных продуктов Microsoft (реляционная база данных SQL Azure, являющаяся аналогом SQL Server, а также Exchange Online, SharePoint Online и Microsoft Dynamics CRM Online) и инструменты разработки (.NET Framework и Visual Studio, оснащенная в версии 2010 года набором Windows Azure Tools). Так, например, программист, создающий сайт в Visual Studio 2010, может не выходя из приложения разместить свой сайт в Windows Azure.
К SaaS, в свою очередь, относятся, например, услуги Online backup, или, проще говоря, резервное копирование данных. Пользователь просто платит абонентскую плату, а сервисы сами автоматически в определенное время шифруют данные с компьютера или другого устройства и отправляют их на удаленный сервер, тем самым данные могут быть доступны из любой точки земного шара. Данную услугу сейчас предоставляют множество компаний, в том числе, такие как Nero и Symantec.