Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Облачные сервисы ( Основные характеристики и тенденции развития облачных технологий )

Содержание:

Введение

В настоящее время облачные сервисы и технологии, основанные на них, стали неотъемлемой частью современных информационных технологий. Популярность, характерная облачным сервисам, стабильно растет вместе с количеством облачных потребителей, к числу которых относятся и высшие учебные заведения. Облачные вычисления (cloud computing) делают возможным повсеместный сетевой доступ к требуемым вычислительным ресурсам с возможностью оплаты или на безвозмездной основе. Такими вычислительными ресурсами могут быть сервера, устройства хранения данных, приложения, либо различные сервисы, которые могут использоваться без больших эксплуатационных затрат. Потребители облачных вычислений могут значительно сократить расходы на ИТ-инфраструктуру и преждевременно реагировать на потребности производительности в содержании ресурса, пользуясь гибкостью облачных услуг.

Облачные технологии стремительно проникают в различные информационно-технологические сферы и занимают все более значимую роль. Огромный интерес вызывает использование облачных технологий в учебных заведениях, отдельными кафедрами. Например, легко реализуется на основе облачных сервисов хранение в электронном виде учебно-методической литературы, материалов к выполнению лабораторных и практических работ, лекционный материал. Это позволяет студенту и в университете и вне его, в любое время с любого устройства воспользоваться нужной информацией.

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

Объектом исследования данной работы являются облачные технологии.

Предмет исследования – сущность и модели облачной технологии, особенности организации и использования облачного сервиса.

Целью работы является исследование возможностей, предоставляемых облачными сервисами. Задачи курсовой работы вытекают из указанной выше цели и заключаются в следующем:

- раскрыть сущность и рассмотреть историю развития облачных технологий;

- выявить и охарактеризовать основные модели современных облачных технологий;

- провести обзор ведущих провайдеров облачных технологий, таких как Amazon Web Services, Salesforce.com, Google Cloud Storage, Microsoft Azure и др.;

- показать способы и технологии создания облачного сервиса;

- сформулировать выводы и показать результаты исследований.

Выполнение указанных задач осуществлялось путем изучения имеющейся информации об облачных технологиях на интернет-сайтах и в научных статьях таких авторов, как А.В. Баранов, Т.В. Батура, А.А. Зонов, А.Г. Ибраимов, Ф.А. Мурзин и др.

Практическая значимость курсовой работы заключается в том, что она расширяет объем знаний, полученный по данной теме при изучении дисциплины «Информатика и программирование» и может использоваться:

- как дополнительный источник при изучении соответствующей темы студентами;

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

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

1. Основные характеристики и тенденции развития облачных технологий

1.1. Сущность и история развития облачных технологий

Идея облачных вычислений появилась еще в 1960 году, когда Джон Маккарти высказал предположение, что когда-нибудь компьютерные вычисления будут производиться с помощью «общенародных утилит».[1] Считается, что идеология облачных вычислений получила популярность с 2007 года благодаря быстрому развитию каналов связи и стремительно растущим потребностям пользователей.

Под облачными вычислениями (от англ. cloud computing, также используется термин «облачная (рассеянная) обработка данных») обычно понимается предоставление пользователю компьютерных ресурсов и мощностей в виде интернет-сервиса. Таким образом, вычислительные ресурсы предоставляются пользователю в «чистом» виде, и пользователь может не знать, какие компьютеры обрабатывают его запросы, под управлением какой операционной системы это происходит и т.д.

Часто облака сравнивают с мэйнфреймами (mainframe), находя между ними много общего. Принципиальное отличие облака от мэйнфреймов в том, что его вычислительная мощность теоретически не ограничена. Второе принципиальное отличие в том, что, попросту говоря, терминалы для мэйнфреймов служили только для интерактивного взаимодействия пользователя с запущенной на обработку задачей. В облаке же терминал сам является мощным вычислительным устройством, способным не только накапливать промежуточную информацию, но и непосредственно управлять глобальной системой вычислительных ресурсов.

Среди ранее возникших (в 1990-х гг.) технологий обработки данных некоторое распространение получили так называемые grid-вычисления. Это направление первоначально рассматривалось как возможность использования свободных ресурсов процессоров и развития системы добровольной аренды вычислительных мощностей. Ряд проектов (GIMPS, distributed.net, SETI@home) доказали, что такая модель вычислений достаточно эффективна. Сегодня эта технология применяется для решения научных, математических задач, где требуются значительные вычислительные ресурсы. Известно, что grid-вычисления также применяются для коммерческих целей. Например, с их помощью выполняются некоторые трудоемкие задачи, связанные с экономическим прогнозированием, анализом сейсмических данных, разработкой и изучением свойств вакцин и новых лекарств. Действительно, grid-вычисления и облака имеют много схожих черт в архитектуре и применяемых принципах. Тем не менее, модель облачных вычислений считается сегодня более перспективной благодаря значительно более гибкой платформе для работы с удаленными вычислительными ресурсами.[2]

В настоящее время крупные вычислительные облака состоят из тысяч серверов, размещенных в центрах обработки данных (ЦОД). Они обеспечивают ресурсами десятки тысяч приложений, которые одновременно используют миллионы пользователей.[3] Облачные технологии являются удобным инструментом для предприятий, которым слишком дорого содержать собственные ERP, CRM или другие серверы, требующие приобретения и настройки дополнительного оборудования.

ERP (Enterprise Resource Planning - планирование ресурсов предприятия) - организационная стратегия интеграции производства и операций, управления трудовыми ресурсами, финансового менеджмента и управления активами, ориентированная на непрерывную балансировку и оптимизацию ресурсов предприятия посредством специализированного интегрированного пакета прикладного программного обеспечения, обеспечивающего общую модель данных и процессов для всех сфер деятельности предприятия.

CRM (Customer Relationship Management) - система управления взаимоотношениями с клиентами, то есть прикладное программное обеспечение, предназначенное для автоматизации стратегий взаимодействия с заказчиками, в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путем сохранения информации о клиентах и истории взаимоотношений с ними, установления и улучшения бизнес-процедур и последующего анализа результатов.[4]

Среди частных пользователей широкое распространение постепенно получают благодаря своему удобству такие облачные услуги, как, например, предоставляемые компанией Google («Документы», «Календарь» и др.).

В исследовании нельзя не отметить преимущества и недостатки облачных систем. К преимуществам отнесем следующее:

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

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

3. Доступ к ресурсам можно получить с любого устройства имеющего подключение к сети Интернет.

К недостаткам отнесем следующее:

1. Руководители предприятий не хотят доверять обработку и хранение информации в облаке. Они беспокоятся за сохранность и конфиденциальность данных.

2. Доступ к файлам может осуществляться с любого устройства подключенного к сети Интернет, этим могут воспользоваться злоумышленники.[5]

1.2. Модели современных облачных технологий

В настоящее время принято выделять три основные модели обслуживания облачных технологий, которые иногда называют слоями облака.[6] Можно сказать, что эти три слоя - услуги инфраструктуры, услуги платформы и услуги приложений - отражают строение не только облачных технологий, но и информационных технологий в целом. Остановимся подробнее на каждом из них.

К услугам инфраструктуры (Infrastructure as a Service - IaaS) можно отнести набор физических ресурсов, таких как серверы, сетевое оборудование и накопители, предлагаемые заказчикам в качестве предоставляемых услуг. Услуги инфраструктуры решают задачу надлежащего оснащения ЦОД, предоставляя вычислительные мощности по мере необходимости. Обычно эти услуги поддерживают инфраструктуру и гораздо большее число потребителей по сравнению с услугами приложений. Частным примером услуг инфраструктуры является аппаратное обеспечение как услуга (Hardware as a Service - HaaS). В качестве услуги пользователь получает оборудование, на основе которого разворачивает свою собственную инфраструктуру с использованием наиболее подходящего ПО.[7]

Преимущества. Снижение капиталовложений в аппаратное обеспечение. Поскольку в этой модели обычно используются методы виртуализации, можно добиться экономии в результате более эффективного использования ресурсов. Уменьшение риска потери инвестиций и порога внедрения, возможность плавного автоматического масштабирования.

Недостатки. Бизнес-эффективность и производительность очень зависят от возможностей поставщика. Существует вероятность, что потребуются потенциально большие долгосрочные расходы. Централизация требует новых подходов к мерам безопасности.

Примерами услуг инфраструктуры служат IBM SmartCloud Enterprise, VMWare, Amazon EC2, Windows Azure, Google Cloud Storage, Parallels Cloud Server и многие другие.

Услуги платформы (Platform as a Service - PaaS) - это модель обслуживания, в которой потребителю предоставляются приложения (созданные или приобретенные) как набор услуг. В него входят, в частности, промежуточное ПО как услуга, обмен сообщениями как услуга, интеграция как услуга, информация как услуга, связь как услуга и т.д. Например, рабочее место как услуга (Workplace as a Service - WaaS) позволяет компании использовать облачные вычисления для организации рабочих мест своих сотрудников, настроив и установив все необходимое для работы персонала ПО. Данные как услуга (Data as a Service - DaaS) предоставляют пользователю дисковое пространство, которое он может использовать для хранения больших объемов информации. Безопасность как услуга (Security as a Service - SaaS) дает возможность пользователям быстро развертывать продукты, позволяющие обеспечить безопасное использование веб-технологий, безопасность электронной переписки, а также безопасность локальной системы. Этот сервис позволяет пользователям экономить на развертывании и поддержании своей собственной системы безопасности.[8]

Преимущества. Плавное развертывание версий. Плавность означает, что в идеале пользователь должен слабо ощущать или даже вообще не ощущать изменения ПО в облаке.

Недостатки. Как и у предыдущей модели обслуживания, централизация требует надежных мер безопасности.[9]

Примерами услуг платформы служат IBM SmartCloud Application Services, Amazon Web Services, Windows Azure, Boomi, Cast Iron, Google App Engine и другие.

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

Приложения доступны посредством различных клиентских устройств или через интерфейсы тонких клиентов, такие, например, как веб-браузер, или веб-почта, или интерфейсы программ. Потребитель при этом не управляет базовой инфраструктурой облака, в том числе сетями, серверами, операционными системами. На конечном пользователе лежит ответственность только за сохранность параметров доступа (логинов, паролей и т.д.) и выполнение рекомендаций провайдера по безопасным настройкам приложений.

Услуги приложений более всего знакомы повседневному пользователю. Самым распространенным примером приложений данного типа являются почтовые сервисы GMail, Mail.ru, Yahoo Mail. Вообще существуют тысячи приложений SaaS, и благодаря технологии Web 2.0 их число растет с каждым днем. Среди служб приложений имеется множество приложений, нацеленных на корпоративное сообщество. Существует ПО, управляющее начислением заработной платы, кадровыми ресурсами, коллективной работой, взаимоотношениями с клиентами и бизнес-партнерами и т.п.

Преимущества. Снижение капиталовложений в аппаратное обеспечение и трудовые ресурсы; уменьшение риска потери инвестиций; плавное итеративное обновление.

Недостатки. Как и в предыдущих двух моделях, централизация требует надежных мер безопасности.

Примерами SaaS являются Gmail, Google Docs, Netflix, Photoshop.com, Acrobat.com, Intuit QuickBooks Online, IBM LotusLive, Unyte, Salesforce.com, Sugar CRM и WebEx. Значительная часть растущего рынка мобильных приложений также является реализацией SaaS.

Существует мнение, что принятое в настоящее время деление облачных вычислений по мере развития технологий в ближайшем будущем уйдет в прошлое.[10] В облачных приложениях будущего, предположительно, будут сочетаться не только инфраструктурные и платформенные элементы от одного поставщика, но и различные сервисы, собранные от разных поставщиков. Возможно, в итоге облачные вычисления приведут к появлению концепции Всё как услуга (Everything as a Service - EaaS). При таком виде сервиса пользователю будет предоставлено все - от программно-аппаратной части до управления бизнес-процессами, включая взаимодействие между пользователями.

1.3. Обзор ведущих провайдеров облачных технологий

Интерес к облачным услугам, начиная с конца 1990-х годов, стабильно растет. По данным исследовательской организации IDC (International Data Corporation) рынок облачных вычислений в 2019 году будет составлять 141 млрд $. На рисунке 1 (приложение 1 к работе) представлена гистограмма для сравнения результатов экономического роста рынка облачных услуг в 2015 году и прогноза на 2019 год.

Согласно исследованиям IDC, ведущими провайдерами облачных технологий в настоящее время являются: Amazon, Rackspace, Salesforce, Google, Microsoft, Adobe и др.[11] В таблице 1 приведены сведения о мировых поставщиках облачных вычислений и услугах, которые они предоставляют.

Таблица 1

Ведущие провайдеры облачных технологий

Облачный провайдер

Предоставляемые услуги

Адрес доступа: https://aws.amazon.com/ru/

- Amazon Web Services (AWS) является бесспорным лидером на рынке облачных вычислений ($ 2,9 млрд выручки за квартал, закончившийся 30 июня 2016).

- Компания предлагает полный спектр IaaS и PaaS услуг. Среди наиболее известных являются его Elastic Compute Cloud (EC2), Simple Storage Service (S3)

Адрес доступа: https://www.salesforce.com/

- Salesforce.com делит SaaS на три категории: Sales Cloud, Service Cloud и Marketing Cloud.

- PaaS для разработчиков: App Cloud, Force.com и Heroku.

Адрес доступа: https://cloud.google.com

- Google предлагает полный спектр IaaS и PaaS услуг, которые охватывают вычисления, системы хранения, сети, большие данные, машинное обучение. Некоторые из его самых известных облачных предложений включают в себя Compute Engine, App Engine, Cloud Storage.

Адрес доступа: https://azure.microsoft.com/ru-ru/services/cloud-services

- В дополнение к Azure IaaS и PaaS предложений, Microsoft также имеет несколько предложений SaaS, в том числе его офис 365.

Адрес доступа:

http://www.adobe.com/ru/creativecloud.html

- В прошлом Adobe продавал настольные версии своего ПО, но в 2013 он переехал в облачную модель.

- Наиболее известные компоненты Creative Cloud включают в себя Photoshop для редактирования фотографий, Illustrator векторной графики, макет страниц InDesign и Premiere Pro для редактирования видео.

Сервисы, предоставляемые облачными провайдерами, должны быть оплачены, исходя из соответствующих соглашений (SLA) между поставщиком и потребителем. Часто облачные сервисы предоставляются на бесплатной основе. Бесплатное облако или облачный сервис, как правило, ограничены в функциональности или объеме вычислительных ресурсов.

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

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

2. Организация облачного сервиса для высокопроизводительных вычислений

2.1. Общая структура разрабатываемого облачного сервиса и требования к нему

В практической главе курсовой работы необходимо осуществить выбор средств и решений для быстрого построения и разработки облачного сервиса вида SaaS для готовых суперкомпьютерных приложений. Облачный сервис должен позволять объединить вычислительные установки и организовать для них единый интерфейс управления. Общая структура подобного сервиса приведена на рис. 1.

Рис. 1. Общая структура облачного сервиса

Пользователь через веб-браузер соединяется с облачным сервисом и с помощью контроллера пользовательских данных оформляет параллельное задание. Управление заданиями осуществляет контроллер вычислений, который непрозрачным образом размещает задание пользователя на одной из доступных вычислительных установок (ВУ). Каждая из вычислительных установок находится под управлением локальной системы пакетной обработки (СПО), в качестве которой могут выступать такие системы, как SLURM, PBS, Moab и т.п.

Локальная СПО обеспечивает следующие функции:

- приём входного потока заданий от разных пользователей;

- ведение локальной очереди заданий;

- выделение ресурсов вычислительной установки для прошедшего очередь задания, их конфигурирование;

- разворачивание задания на выделенных ресурсах, производство расчётов;

- освобождение выделенных ресурсов по окончании задания;

- предоставление пользователю результатов расчётов.

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

- подготовки параллельного задания;

- выбора подходящей вычислительной установки для размещения задания;

- взаимодействия с локальной СПО для организации выполнения задания.

Поток заданий, поступающих на выполнение от пользователей облачного сервиса, назовём облачным потоком заданий. Одновременно и совместно с облачным потоком заданий должен обрабатываться стандартный поток заданий, поступающих на выполнение обычным (стандартным) способом, т.е. непосредственно через СПО. Обеспечение совместной обработки стандартного и облачного потоков является главным требованием к создаваемому облачному сервису.

Другие требования к облачному сервису могут различаться в зависимости от того, в какой роли выступает его клиент - пользователя или администратора.

Для роли «пользователь» создаваемый облачный сервис должен предоставлять следующие возможности:

- для начала работы с облачным сервисом пользователь должен иметь возможность зарегистрироваться, а в начале каждого нового сеанса работы - авторизоваться;

- пользователь должен иметь возможность формирования своих заданий, а также формирования, редактирования и хранения в системе шаблонов типовых заданий;

- пользователю должна предоставляться информация о доступных вычислительных ресурсах;

- пользователь должен иметь возможность направлять сформированные задания на выполнение, отслеживать состояния и управлять своими заданиями;

- пользователю должен быть предоставлен интерфейс управления своей учётной записью.[13]

Для роли «администратор» должны предоставляться следующие возможности и интерфейсы:

- управления учётными записями пользователей;

- подключения к облачному сервису и отключения от него вычислительных установок.

К требованиям системного уровня следует отнести:

- доступ к облачному сервису должен осуществляться посредством веб-интерфейса;

- должна быть обеспечена изоляция пользователей друг от друга - пользователь должен иметь доступ только к своей учётной записи и только к своим заданиям;

- облачный сервис должен контролировать соединения с СПО и производить запуск заданий по доступным соединениям;

- взаимодействие облачного сервиса с вычислительными установками должно осуществляться через защищённое (в нашем случае - через SSH) соединение.[14]

В качестве примера приложения для организации облачного сервиса был взят программный комплекс организации параллельных вычислений с распараллеливанием по данным «Пирамида»[15], хотя рассмотренный подход может быть использован и для других приложений. В качестве локальной СПО вычислительных установок выступила отечественная система управления прохождением параллельных заданий (СУППЗ).

2.2. Выбор технологий и инструментальных средств разработки облачного сервиса

На сегодняшний день на рынке представлено несколько программных продуктов для построения инфраструктуры частного, публичного или гибридного облака, среди которых можно отметить следующие:

- VMware vCloud Director - проприетарная программная платформа для построения частных и гибридных облаков с моделью предоставления облачных вычислений IaaS;

- HPE Helion Eucalyptus - платформа для построения частных облаков;

- Apache Cloudstack - программная платформа автоматизации развёртывания, настройки и обеспечения функционирования частных, публичных и гибридных облаков;

- OpenStack - платформа для построения облаков с моделью предоставления облачных вычислений IaaS[16].

Несмотря на различия приведённых программных платформ, все они используют общие принципы предоставления вычислительных ресурсов пользователям. Пользователь при помощи клиентских инструментов инициирует запрос на создание/использование виртуальной машины. После аутентификации и авторизации пользователя запрос перенаправляется в специальный компонент, присутствующий во всех платформах, - контроллер облака. С помощью контроллера облака в сетевом хранилище производится поиск образа необходимой виртуальной машины (машин) и подбираются наиболее подходящие вычислительные ресурсы, на которых начинается выполнение виртуальных машин. Пользователь подключается к запущенной виртуальной машине и работает с ней, а всю деятельность по поддержанию виртуальной машины в работоспособном состоянии, выделении дискового пространства, маршрутизации сетевых пакетов и прочие действия по организации вычислительного процесса платформа берёт на себя.

Заметим, что при подборе вычислительных ресурсов и запуске на них виртуальных машин контроллер облака взаимодействует непосредственно с гипервизорами физических вычислительных модулей (серверов), анализируя текущую загруженность решающего поля и балансируя вычислительную нагрузку. Другими словами, решающее поле должно быть передано под полное управление облачной платформы, что делает невозможным использование СПО и сочетания двух потоков заданий - облачного и стандартного. Поскольку это противоречит главному требованию к создаваемому облачному сервису, принято решение отказаться от использования готовой облачной платформы и провести собственную разработку.

Архитектура и структура облачного сервиса.

Место разрабатываемого облачного сервиса в цепочке предоставления параллельного приложения (на примере ПК «Пирамида») как сервиса демонстрирует рис. 2.

Рис. 2. Архитектура облачного сервиса

Пользователь облачного сервиса через веб-интерфейс получает доступ к представлению SaaS. Представление SaaS обеспечивает хранение и обработку пользовательских данных, а также предоставляет интерфейс СУППЗ.

Разработка облачного сервиса подразумевает работу над тремя его составляющими:

- клиентская часть;

- серверная часть;

- интерфейс взаимодействия клиентской и серверной частей.

На рис. 3 обозначены основные структурные элементы облачного сервиса.

Рис. 3. Структура облачного сервиса

Взаимодействие клиентской и серверной частей сервиса было выстроено в соответствии с архитектурой RESTful. Преимущества, такого подхода, были обоснованы в различных источниках[17], и в настоящее время применение архитектуры RESTful и программного интерфейса REST API де-факто является стандартом веб-программирования. REST API подразумевает унифицированный доступ к данным с некоторым ограниченным набором действий над ними. Данные, которыми обмениваются клиент и сервер, организуются в единый формат JSON.

Взаимодействие с пользователем в клиентской части облачного сервиса реализуется с помощью набора контроллеров, состав которого определяется, с одной стороны, требуемыми функциональными возможностями облачного сервиса, с другой стороны - техническими требованиями безопасности и обеспечения взаимодействия с СУППЗ. В набор контроллеров входят:

- контроллер аутентификации, необходимый для обеспечения авторизованного доступа к облачному сервису;

- контроллер пользователей, необходимый для регистрации и управления пользователями облачного сервиса;

- контроллер шаблонов, предназначенный для создания, хранения и изменения пользователями шаблонов своих заданий;

- контроллер заданий, необходимый для управления пользовательскими заданиями;

- контроллеры SSH-соединений и SSH-действий, необходимые для организации связи облачного сервиса с вычислительными установками под управлением СУППЗ.

Сервисы REST API клиентской части сервиса преобразуют запросы контроллеров в формат JSON и производят обмен данными с сервером по протоколу HTTP, для чего в серверной части должен функционировать веб-сервер.

В составе серверной части выделяются модуль аутентификации, осуществляющий управление пользователями, и контроллер SSH-соединений для управления соединениями с СУППЗ. Информация о текущей конфигурации облачного сервиса, о пользователях и доступных ВУ под управлением СУППЗ сохраняется в специальной базе данных (БД) облачного сервиса. Контроллеры REST API серверной части в ответ на запрос пользователя, в зависимости от характера поступившего запроса, либо производят обращение к БД, либо вызывают соответствующее действие контроллера SSH-соединений. Ответ на запрос преобразуется котроллером REST API в формат JSON и отправляется клиенту.

Выбор решений для построения облачного сервиса.

Для построения облачного сервиса в соответствии со структурой, представленной на рис. 3, необходимо выбрать следующие решения:

- веб-сервер;

- каркас серверного веб-приложения (Web Application Framework, WAF);

- систему управления базой данных (СУБД);

- средство поддержки SSH-соединений в веб-приложении;

- шаблон проектирования клиентской части.

Поскольку разработка облачного сервиса ведётся в исследовательских целях, для всех выбираемых решений были выдвинуты следующие обязательные требования:

- решение должно обеспечивать высокую скорость разработки;

- решение должно быть свободно распространяемым и функционировать в среде Linux;

- решение должно поддерживать схему «модель-представление- контроллер» (Model-View-Controller, MVC)[18], согласно которой модель приложения, пользовательский интерфейс и взаимодействие с пользователем разделяются на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные;

- решение должно быть широка распространённым и иметь хорошую документальную и инструментальную поддержку;

- решение должно, с одной стороны, иметь многолетнюю апробацию большим числом пользователей и разработчиков, с другой стороны - быть передовым и соответствовать современному уровню развития технологий веб-разработки.

Кроме этого, выбираемые решения должны поддерживать совместную работу друг с другом.

Схема взаимодействия выбранных решений для построения облачного сервиса представлена на рис. 4.

В качестве веб-сервера и СУБД были выбраны Apache и MySQL соответственно, как полностью соответствующие приведённым требованиям.

Рис. 4. Выбранные решения для построения облачного сервиса

Каркас серверного веб-приложения, помимо соответствия перечисленным общим требованиям, должен:

- соответствовать архитектуре RESTful;

- содержать как можно больше готовых решений для реализации контроллеров облачного сервиса, представленных на рис. 3.

Анализ интернет-публикаций и мнений экспертов-разработчиков показал, что выдвинутым требованиям в полной мере удовлетворяют два распространённых решения - Django и Ruby on Rails (RoR). Отмечается, что при одинаково широкой распространённости обоих решений каркас Ruby on Rails более подходит для осуществления быстрой разработки, носящей исследовательский характер, а также содержит больше решений, готовых к использованию в новых проектах.[19] По этой причине логика серверной части облачного сервиса была реализована с использованием каркаса RoR. Взаимодействие RoR-приложения c вебсервером Apache было обеспечено за счёт применения Ruby-библиотеки Passenger.

Модуль механизма аутентификации основан на Ruby-библиотеке Devise. Библиотека позволяет разрабатывать собственные системы аутентификации, используя современные алгоритмы авторизации и взаимодействия с пользователем.

Модуль взаимодействия с клиентской частью облачного сервиса состоит из набора RoR-контроллеров, предоставляющих REST API к ресурсам облачного сервиса. Для сущностей БД облачного сервиса такие контроллеры строятся автоматически при помощи объектного представления реляционной БД ActiveRecord.

Модуль взаимодействия с вычислительными установками по протоколу SSH основан на Ruby-библиотеке Net-SSH-shell.[20]

Разработка клиентской части облачного сервиса предполагает использование стандартного стека веб-технологий: HTML5, JavaScript, CSS3. На сегодняшний день существует множество прекомпиляторов стандартного стека веб-технологий HTML, CSS, JavaScript, упрощающих разработку приложений различной специфики. С 2012 года мировыми лидерами веб-разработки активно используются шаблоны проектирования клиентской части веб-приложения. Такие шаблоны позволяют освободить разработчика от самостоятельного построения взаимодействия HTML-элементов страницы с JavaScript-логикой приложения. Код динамического веб-приложения, написанный без использования шаблонов проектирования, более чем наполовину состоит из функций взаимодействия страничных элементов с логикой приложения. Многие шаблоны проектирования позволяют структурировать изначально не имеющий стандартной структуры код JavaScript.

Здесь выбран шаблон проектирования Angularjs[21] от корпорации Google. На сегодняшний день среди конкурирующих шаблонов проектирования Angularjs имеет наилучшую производительность, поддержку и документацию.

Модуль Angular-devise средствами одноименной JavaScript-библиотеки организует клиентские функции механизма аутентификации Devise.

В соответствии с шаблоном проектирования Angularjs, клиентская часть веб-приложения представляет собой одно или несколько одностраничных веб-приложений. Это означает, что все страницы и их контроллеры в пределах одного одностраничного приложения загружаются в браузер клиента в связке (либо одним файлом при предварительной конкатенации). В отличие от традиционной архитектуры клиентской части, одностраничное приложение является целостным и самостоятельным. По запросу клиента такое приложение загружается с веб-сервера в браузер один раз, а дальнейшая работа в нём (переход по страницам приложения, создание/удаление новых элементов страницы) сопровождается только асинхронным обменом данных (AJAX) с веб-сервером без перезагрузки страницы.

2.3. Проект облачного сервиса

В соответствии с технологией MVC структура серверного приложения облачного сервиса разбивается на модели, представления и контроллеры. Использование каркаса Ruby on Rails позволило автоматически сгенерировать (или использовать готовые) 80% необходимых контроллеров, 25% необходимых моделей и 20% необходимых представлений, что существенно ускорило процесс разработки.

Спроектированные модели данных облачного сервиса образовали схему базы данных. Часть БД, содержащая учётные записи пользователей (уникальный идентификатор, адрес электронной почты, шифрованный пароль, информацию о сессиях и параметры системы аутентификации), была автоматически сгенерирована системой аутентификации.

Интерфейс пользователя спроектирован на трех страницах: «Шаблоны заданий», «Задания» и «Детали задания». Страницам соответствуют представления и их контроллеры (рис. 5), которые обмениваются данными через общее хранилище. Маршрутизатор содержит правила перехода по веб-страницам, пути и URL к представлениям и контроллерам.

Рис. 5. Структура приложения интерфейса пользователя

Через контроллер шаблонов осуществляется работа пользователя с шаблонами заданий, в том числе:

- загрузка шаблонов пользователя, сохранённых в БД серверной части облачного сервиса;

- отправка нового шаблона для сохранения в БД серверной части облачного сервиса;

- удаление шаблона из БД серверной части облачного сервиса;

- запуск параллельного задания по выбранному шаблону.

Контроллеры заданий и деталей задания выполняют следующие функции:

- загрузка заданий пользователя, сохранённых в БД серверной части облачного сервиса;

- остановка выполнения выбранного задания;

- удаление из очереди СУППЗ выбранного задания;

- удаление завершённого задания из БД серверной части облачного сервиса;

- синхронизация состояния данных клиентской и серверной частей облачного сервиса каждые 2 секунды.

Принцип построения приложения администратора (рис. 6) схож с принципом построения приложения пользователя, с точностью до изменения функций контроллеров.

Рис. 6. Структура приложения интерфейса администратора

Кондроллер пользователей выполняет следующие функции:

- загрузка зарегистрированных пользователей и доступных им соединений из БД серверной части облачного сервиса;

- загрузка соединений, сохранённых в БД серверной части облачного сервиса;

- сохранение в БД серверной части облачного сервиса обновлённой информации о доступных пользователям соединениях.

Главными модулями разработанного облачного сервиса, которые обеспечивают возможность осуществления высокопроизводительных вычислений, являются контроллеры SSH-соединений клиентской и серверной части. Именно с их помощью осуществляется связь веб-приложения и конечного пользователя с высокопроизводительными вычислительными установками под управлением СУППЗ, а также диспетчеризация пользовательских заданий.

Со стороны клиента контроллер SSH-соединений осуществляет:

- загрузку соединений, сохранённых в БД серверной части облачного сервиса;

- отправку нового соединения для сохранения в БД серверной части облачного сервиса;

- удаление соединения из БД серверной части облачного сервиса;

- тестирование работоспособности соединения.

Управление заданиями осуществляется вызовом действий контроллеров серверной части облачного сервиса, отвечающих за SSH-соединения с вычислительными установками. REST API к этим действиям организует сервис SSH-действий.

Контроллер SSH-действий серверной части выполняет следующие действия:

- проверка работоспособности SSH-соединения;

- запуск задания по заданному шаблону задания;

- остановка выполнения задания по заданному имени задания;

- удаление из очереди СУППЗ задания по заданному имени задания;

- получение информации о состоянии очереди СУППЗ.

В рассматриваемом проекте облачного сервиса для диспетчеризации заданий между доступными вычислительными установками используется следующий простейший алгоритм. Все вычислительные установки, соединение с которыми доступно пользователю, образуют циклический список, по которому перемещается специальная метка - токен. Перед запуском задания из доступных пользователю SSH-соединений выбирается следующее за соединением с токеном. Если соединение работоспособно, токен переходит к выбранному соединению, и задание помещается в очередь СУППЗ. Заметим, что со стороны СУППЗ постановка задание в очередь через облачный сервис ничем не отличается от постановки задания в очередь стандартным образом. Это позволяет обеспечить требуемое совмещение облачного и стандартного потоков заданий.

После размещения задания в СУППЗ облачный сервис способен отслеживать его состояние (в очереди, заблокировано, запущено, выполнено), а после запуска задания - определять и отображать процент выполненной ПК «Пирамида» вычислительной работы.

2.4. Пользовательский интерфейс облачного сервиса

При разработке интерфейса облачного сервиса применялся сервис NinjaMock.[22] Сервис предназначен для прототипирования веб-интерфейсов и мобильных приложений. С его помощью созданы прототипы интерфейсов облачного сервиса.

Интерфейс параллельного SaaS-приложения предоставляет пользователю следующие элементы:

- форму создания и редактирования шаблонов заданий;

- элементы управления заданиями;

- элементы отображения информации о состоянии заданий и результатах их выполнения;

- форму создания и редактирования SSH-соединений;

- элементы управления SSH-соединениями.

Указанные элементы размещены на четырёх страницах разработанного прототипа интерфейса (рис. 7):

- шаблоны заданий;

- задания;

- соединения;

- детали задания.

Рис . 7. Проект пользовательского интерфейса ПК «Пирамида»

В верхней части всех страниц находится навигационное меню, предназначенное для перехода на соответствующие страницы.

Под заголовком «Шаблоны заданий» находятся созданные ранее шаблоны заданий. При выборе конкретного шаблона отображаются его параметры с возможностью их редактирования. Под параметрами расположены элементы управления шаблоном: выбор соединения для запуска задания по выбранному шаблону и кнопка запуска задания. Под заголовком «Новый шаблон» находится форма создания нового шаблона задания.

На странице «Задания» отображаются все задания пользователя, сгруппированные по их статусу: на выполнении, в очереди (заблокировано), завершено. Задания отображаются в виде имени задания и дополнительной информации о его статусе под именем.

Дополнительной информацией может быть:

- прогнозируемое время окончания выполнения для заданий, находящихся на выполнении;

- прогнозируемое время до начала выполнения или статус блокировки для заданий, находящихся в очереди;

- время завершения для завершённых задач.

Кнопка «Х» справа от имени задания в соответствии со статусом задания выполняет остановку выполнения задания, удаление задания из очереди или удаление информации о задании из базы заданий пользователя.

Нажатие на имя задания переводит на страницу «Детали задания», которая предоставляет подробную информацию о задании и результаты выполнения в реальном времени, а также элементы управления заданием. Прогресс-индикатор отображает процент выполненной работы ПК «Пирамида».

Под заголовком «Соединения» находятся созданные пользователем SSH-соединения. Нажав на имя соединения, в выпадающей форме можно редактировать параметры SSH-соединения и проверять работоспособность соединения.

Проект интерфейса администратора облачного сервиса представлен на рис. 8.

Рис. 8. Проект интерфейса администратора облачного сервиса

Страница «Пользователи» позволяет администратору выделить доступные каждому пользователю соединения.

Для неавторизованных пользователей стартовой страницей облачного сервиса является страница авторизации. Пользователю предлагается ввести логин (e-mail) и пароль своей учётной записи. Отметка «запомнить меня» позволяет сохранить введённые пользователем данные и не запрашивать их при повторном доступе к облачному сервису.

Незарегистрированный пользователь может пройти регистрацию, нажав кнопку «Регистрация».

Заключение

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

Современное общество всё больше использует ресурсы облачных вычислений, преимуществом которых является независимость от устройств, повсеместный доступ (при условии наличия доступа к сети Интернет). Ведущие мировые провайдеры облачных вычислений предоставляют множество облачных сервисов, часто на бесплатной основе. При этом, в облачную модель переходит всё больше компаний и организаций, включая образовательные. Высшие учебные заведения уже имеют опыт применения облачных вычислений для организации процесса обучения, студенты пользуются облачными приложениями для хранения данных, взаимодействия с одногруппниками и преподавателями и т.п.

Снижение затрат на инфраструктуру, доступность, решение проблем с оснащением пользователей необходимым программным обеспечением - основные характеристики облачных продуктов, делающие их всё более популярными. Вопросы безопасности и конфиденциальности данных в облаке, скорость Интернета - являются основными препятствиями для использования облачных ресурсов в отечественной среде. Однако широчайший инструментарий и простота в использовании открывают всё больше перспектив для образования в облаке.

В практической главе исследования для быстрого построения облачного сервиса вида SaaS, были сформулированы требования к облачному сервису, рассмотрены существующие технологии и современные инструментальные средства для построения подобного сервиса вида SaaS, сделан выбор решений для построения облачного сервиса. В результате был создан макет облачного сервиса в виде веб-приложения, которое реализует доступ к программному комплексу «Пирамида», развёрнутому на нескольких вычислительных установках.

Полученный опыт разработки и опытной эксплуатации облачного сервиса позволяет определить следующие достоинства применённого подхода.

(1) Выбранный стек технологий и программных решений обеспечил высокую скорость разработки за счёт значительной степени автоматизации процесса создания веб-приложения.

(2) Созданный макет облачного сервиса, в отличие от обычных платформ для построения частных облаков, позволяет облачному сервису взаимодействовать с системами пакетной обработки высокопроизводительных вычислительных установок. Это обеспечивает требуемое совмещение стандартного и облачного потоков заданий.

(3) В созданный макет облачного сервиса интегрирован веб-интерфейс ПК «Пирамида», что существенно облегчает работу пользователя с этим комплексом.

Тем не менее, опытная эксплуатация выявила и отрицательные стороны применённого подхода:

(1) возникают трудности при глубокой модификации веб-приложения, построенного в соответствии с шаблоном проектирования Angularjs: модель шаблона не позволяет делать это легко и быстро;

(2) для успешного развития рассматриваемого варианта облачного сервиса необходима определённая стандартизация предлагаемого подхода и подключения большого числа разработчиков.

Список использованных источников

  1. Баранов А.В., Зонов А.А. Вариант организации облачного сервиса для высокопроизводительных вычислений // Программные системы: теория и приложения. - 2016. - Т. 7. - № 3-1 (30). - С. 3-23.
  2. Баранов А.В., Киселёв А.В., Корнеев В.В., Семёнов Д.В. Программный комплекс «Пирамида» организации параллельных вычислений с распараллеливанием по данным // Труды Международной суперкомпьютерной конференции. - М.: Изд-во МГУ, 2010. - С. 299-302.
  3. Батура Т.В., Мурзин Ф.А., Семич Д.Ф. Облачные технологии: основные понятия, задачи и тенденции развития // Программные продукты, системы и алгоритмы. - 2014. - № 1. - С. 22-45.
  4. Ибраимов А.Г., Сейтвелиева С.Н. Облачные вычисления: перспективы и возможности // Информационно-компьютерные технологии в экономике, образовании и социальной сфере. - 2016. - № 3 (13). - С. 118-123.
  5. Кончин А. В чём особенности и преимущества Ruby on Rails [Электронный ресурс]. - URL: https://anadea.info/ru/blog/why-rubyonrails-is-so-popular (дата обращения: 20.12.2016)
  6. Медведев А. Облачные технологии: тенденции развития, примеры исполнения // Современные технологии автоматизации. - 2013. - № 2. - С. 6-9.
  7. Сейдаметова З.С., Сейтвелиева С.Н. Облачные сервисы в образовании // Информационные технологии в образовании. - 2011. - № 9. - С. 105-111.
  8. A simple library to aid with stateful shell interactions [Электронный ресурс]. - URL: https://www.ruby-toolbox.com/projects/ssh-shell (дата обращения: 20.12.2016)
  9. Angularjs by Google - HTML enhanced for web apps! [Электронный ресурс]. - URL: https://www.angularjs.org (дата обращения: 20.12.2016)
  10. Fielding R.T. Architectural Styles and the Design of Network-based Software Architectures, Dissertation submitted in partial satisfaction of the requirements for the degree of doctor of philosophy in Information and Computer Science. Chapter 5, University of California, Irvine [Электронный ресурс]. - URL: http://www.ics.uci.edu/fielding/pubs/dissertation/rest_arch_style.htm (дата обращения: 20.12.2016)
  11. International Data Corporation Analyze Future. Облачные услуги - активный рост на фоне общей стагнации рынка ИТ [Электронный ресурс]. - URL: http://idcrussia.com/ru/about-idc/press-center/59609-press-release (дата обращения: 11.12.2016).
  12. Miller R. Who Has the Most Web Servers? [Электронный ресурс]. - URL: http://www.datacenterknowledge.com/archives/2009/05/14/whos-got-the-most-web-servers/ (дата обращения: 20.12.2016).
  13. NinjaMock - free tool for mobile app wireframes and website mockups [Электронный ресурс]. - URL: https://ninjamock.com/ (дата обращения: 20.12.2016)
  14. NIST Definition of Cloud Computing v15 [Электронный ресурс]. - URL: https://www.nist.gov/sites/default/files/documents/itl/cloud/cloud-def-v15.pdf (дата обращения: 11.12.2016).
  15. Trygve M.H. Reenskaug/MVC. XEROX PARC 1978-79 [Электронный ресурс]. - URL: http://heim.ifi.uio.no/trygver/themes/mvc/mvc-index.html (дата обращения: 20.12.2016)

Приложение 1

Рис. 1. Прогнозы роста рынка облачных вычислений[23]

  1. Батура Т.В., Мурзин Ф.А., Семич Д.Ф. Облачные технологии: основные понятия, задачи и тенденции развития // Программные продукты, системы и алгоритмы. - 2014. - № 1. - С. 22.

  2. Батура Т.В., Мурзин Ф.А., Семич Д.Ф. Облачные технологии: основные понятия, задачи и тенденции развития // Программные продукты, системы и алгоритмы. - 2014. - № 1. - С. 22.

  3. Miller R. Who Has the Most Web Servers? [Электронный ресурс]. - URL: http://www.datacenterknowledge. com/archives/2009/05/14/whos-got-the-most-web-servers/ (дата обращения: 20.12.2016).

  4. Батура Т.В., Мурзин Ф.А., Семич Д.Ф. Облачные технологии: основные понятия, задачи и тенденции развития // Программные продукты, системы и алгоритмы. - 2014. - № 1. - С. 23.

  5. Ибраимов А.Г., Сейтвелиева С.Н. Облачные вычисления: перспективы и возможности // Информационно-компьютерные технологии в экономике, образовании и социальной сфере. - 2016. - № 3 (13). - С. 120-121.

  6. NIST Definition of Cloud Computing v15 [Электронный ресурс]. - URL: https://www.nist.gov/sites/default /files/documents/itl/cloud/cloud-def-v15.pdf (дата обращения: 11.12.2016).

  7. Батура Т.В., Мурзин Ф.А., Семич Д.Ф. Облачные технологии: основные понятия, задачи и тенденции развития // Программные продукты, системы и алгоритмы. - 2014. - № 1. - С. 25.

  8. Батура Т.В., Мурзин Ф.А., Семич Д.Ф. Облачные технологии: основные понятия, задачи и тенденции развития // Программные продукты, системы и алгоритмы. - 2014. - № 1. - С. 26.

  9. Там же. С. 26.

  10. Медведев А. Облачные технологии: тенденции развития, примеры исполнения // Современные технологии автоматизации. - 2013. - № 2. - С. 6.

  11. International Data Corporation Analyze Future. Облачные услуги - активный рост на фоне общей стагнации рынка ИТ [Электронный ресурс]. - URL: http://idcrussia.com/ru/about-idc/press-center/59609-press-release (дата обращения: 11.12.2016).

  12. Ибраимов А.Г., Сейтвелиева С.Н. Облачные вычисления: перспективы и возможности // Информационно-компьютерные технологии в экономике, образовании и социальной сфере. - 2016. - № 3 (13). - С. 119.

  13. Баранов А.В., Зонов А.А. Вариант организации облачного сервиса для высокопроизводительных вычислений // Программные системы: теория и приложения. - 2016. - Т. 7. - № 3-1 (30). - С. 5.

  14. Баранов А.В., Зонов А.А. Вариант организации облачного сервиса для высокопроизводительных вычислений // Программные системы: теория и приложения. - 2016. - Т. 7. - № 3-1 (30). - С. 5-6.

  15. Баранов А.В., Киселёв А.В., Корнеев В.В., Семёнов Д.В. Программный комплекс «Пирамида» организации параллельных вычислений с распараллеливанием по данным // Труды Международной суперкомпьютерной конференции. - М.: Изд-во МГУ, 2010. - С. 299

  16. Баранов А.В., Зонов А.А. Вариант организации облачного сервиса для высокопроизводительных вычислений // Программные системы: теория и приложения. - 2016. - Т. 7. - № 3-1 (30). - С. 6-7.

  17. Fielding R.T. Architectural Styles and the Design of Network-based Software Architectures, Dissertation submitted in partial satisfaction of the requirements for the degree of doctor of philosophy in Information and Computer Science. Chapter 5, University of California, Irvine [Электронный ресурс]. - URL: http://www.ics.uci.edu/fielding/pubs/dissertation/rest_arch_style.htm (дата обращения: 20.12.2016)

  18. Trygve M.H. Reenskaug/MVC. XEROX PARC 1978-79 [Электронный ресурс]. - URL: http://heim.ifi.uio.no/ trygver/themes/mvc/mvc-index.html (дата обращения: 20.12.2016)

  19. Кончин А. В чём особенности и преимущества Ruby on Rails [Электронный ресурс]. - URL: https://anadea. info/ru/blog/why-rubyonrails-is-so-popular (дата обращения: 20.12.2016)

  20. A simple library to aid with stateful shell interactions [Электронный ресурс]. - URL: https://www.ruby-toolbox.com/projects/ssh-shell (дата обращения: 20.12.2016)

  21. Angularjs by Google — HTML enhanced for web apps! [Электронный ресурс]. - URL: https://www.angularjs. org (дата обращения: 20.12.2016)

  22. NinjaMock - free tool for mobile app wireframes and website mockups [Электронный ресурс]. - URL: https://ninjamock.com/ (дата обращения: 20.12.2016)

  23. Источник: International Data Corporation Analyze Future. Облачные услуги - активный рост на фоне общей стагнации рынка ИТ [Электронный ресурс]. - URL: http://idcrussia.com/ru/about-idc/press-center/59609-press-release (дата обращения: 11.12.2016).