Вы находитесь на странице: 1из 43

Лекция 7

изучить и ответить на контрольные вопросы

3.12. Распределенные системы документов

Можно выделить, по крайней мере, 2 основных разновидности


распределенных систем документов: гипертекстовые документы, системы
поддержки документооборота. К первой группе можно отнести в первую
очередь World Wide Web (WWW), ко второй группе систему Lotus Notes
(IBM Notes and Domino) [42].
World Wide Web (WWW). Первоначально WWW задумывался как очень
большая система распределенных документов, которые размещены на
многих тысячах сайтов, основу которых составляют веб-серверы. К
документам можно обращаться, используя URL. Документы могут ссылаться
друг на друга с помощью гиперссылок. В подобной интерпретации WWW
можно рассматривать как клиент-серверную систему. Документы могут либо
находиться храниться в файле и выдаваться по запросу, либо генерироваться
при поступлении запроса. Пользователь также может загружать документы
на веб-сервер.
В качестве системы именований используется унифицированный
указатель ресурса (Uniform Resource Locator, URL). Формат URL будет
рассмотрен ниже. Первоначально клиент мог взаимодействовать с веб-
сервером используя специальное клиентское приложение – браузер. Браузер
можно рассматривать как универсальное клиентское приложение.
Распределенные приложения, использующие браузер в качестве клиента,
называют клиент-серверными системами с тонким клиентом в отличие от
систем с толстым клиентом, для написания которого используются
стандартные языки высокого уровня.
Для взаимодействия между браузером и веб-сервером используется
протокол Hypertext Transfer Protocol, HTTP), который будет рассмотрен
ниже. Для веб-сервера не принципиально какое именно приложения выдает
HTTP-запрос, важно только, чтобы запрос был корректным с точки зрения
HTTP-протокола. Это означает, что запрос к веб-серверу может генерировать
не только браузер, но и любой работающий в сети компьютер, например, с
целью посылки сообщения приложению, работающему на сервере. Таким
образом, WWW из человеко-машинной системы превращается в глобальную
систему передачи сообщений. HTTP стал широко использоваться как
транспортный протокол, в слабосвязанных распределенных приложений и, в
первую очередь, сервисно-ориентированных систем. В этом смысле WWW
можно рассматривать как одну из подсистем системы, ориентированной на
работу с сообщениями.
WWW основывается на представлении всей информации в форме
документа, это может быль или просто размеченный текст или текст с
встроенными в него сценариями, которые выполняются будучи
загруженными в браузер. Большинство документов представлены в формате
HTML (Hyper Text Markup Language). Разметка осуществляется посредством
тегов, которые указывают браузеру каким образом следует отображать
документ. С помощью тегов можно указать, что в текст документа включен
фрагмент исполняемого кода, например, на языке JavaScript, который должен
интерпретироваться браузером. Таким образом, мы имеем дело с
использованием мобильного кода, а в составе браузера присутствует
виртуальная машина.
Большинство документов, с которыми работает WWW, представлены в
формате HTML, все большее распространение получает другой язык
гипертекстовой разметки – расширяемый язык разметки (eXtensible Markup
Language, XML), который в отличие от HTML использует смысловую
разметку текста. XML будет подробнее рассмотрен ниже.
Появление веб-сервера самым тесным образом связано с появлением
Интернета, который на этапе своего становления представлял собой
реализацию парадигмы Распределенная система документов. Документы
размечались с помощью языка HTML, который описывал форму
представления документа на экране браузера. В HTML документ можно было
вставлять картинки и ссылки на другие HTML документы.
Обобщенная структура, использующая веб-сервер показана на рис.
3.12.

CGI Исполняемый
код

HTTP сервер

Исполняемый
код

HTTP

Браузер

Рис. 3.12. Веб-сервер


Система функционирует следующим образом. Пользователь,
работающий с браузером, либо набирает адрес документа, либо, если
документ открыт, делает клик мышкой на гиперссылке. В качестве адреса
выступает строка, которую называют Uniform Resourse Locator (URL),
которая может иметь вид, показанный на рис. 3.13.

http:// www.address.com:8080/path/subdir/file.html

Путь
Номер порта

Доменное имя или IP адрес

Протокол

Рис. 3.13. Структура URL


Строка URL включает в себя 4 поля: Протокол, Доменное имя, Номер
порта и Путь к файлу. В поле Протокол указывается тип протокола. Чаще
всего используется Гипертекстовый протокол передачи данных (HyperText
Transfer Protocol, HTTP), или его защищенный вариант – https, кроме того
используется протокол пересылки файлов (File Trasfer Protocol, FTP) и
почтовый протокол – mailto. Другие протоколы используются значительно
реже. В поле Доменное имя указывается доменное имя или IP адрес. В поле
Номер порта указывается номер порта, к которому идет обращение.
Каждому протоколы назначены порта по умолчанию, например для
протокола http – это порт 80. Если используется порт по умолчанию, то его
можно не указывать. В поле Путь указывается путь к целевому файлу. В
качестве целевого файла в простейшем случае может выступать html файл. В
более сложном случае в качестве целевого файла может исполнять
исполняемый файл, например:
http:// www.address.com:/cgi-bin/myprog.pl?query_data.
Данный URL указывает на то, что требуется выполнить программу
myprog.pl, написанную на языке Perl. В поле Путь указывается /cgi-bin/. Это
псевдоним, за которым стоит реальный путь, который указывается в
настройках веб-сервера. В последнем поле указываются аргументы, которые
передаются исполняемой программе. Аргументы могут браться из формы,
заполняемой пользователем.
После этого браузер генерирует обращение к веб-серверу.
Выполнение запроса включает в себя 4 фазы:
1. Открытие соединения
2. Клиент посылает серверу
3. Сервер выполняет запрос и посылает ответ клиенту
4. Соединение закрывается.
Таким образом работала первая версия протокола HTTP. Современный
протокол (версия 1.1) не требует закрытия соединения после выполнения
каждого запроса.
Рассмотрим более подробно каждую из фаз.
1. Когда запрос подготовлен, то клиент обращается к соответствующему
порту веб-сервера. При этом обычно используется механизм callback, т.е.
создается копия процесса, который реализует веб-сервер и этот новый сервер
связывается с клиентом с другого порта.
2. Клиент (браузер) посылает веб-серверу запрос, который состоит из
заголовка и тела. В заголовке указывается метод, который использует клиент,
протокол, тип данных и информация о браузере. Обычно используются
методы get и post. Тело содержит сам запрос.
3. Запрос поступает на веб-сервер в виде длинной текстовой строки,
которую требуется разобрать. После того, как разбор завершен, сервер по
расширению файла устанавливает, является ли файл документом, например,
html документом, или является исполняемым файлом. Если браузер
запрашивает документ, то этот документ считывается сериализуется и
отправляется клиенту (браузеру). который отображает его на экране. Если в
запросе указывается исполняемый файл, то этот файл исполняется на стороне
сервера, а результаты выполнения сериализуются и отправляются клиенту.
Этот механизм называют Common Gate Interface (CGI). В качестве cgi-
программы может выступать любой исполняемый код. Однако для написания
cgi-программ чаще всего используется язык Perl, который ориентирован на
работу со строками. CGI-программы обычно используются для
формирования html документа в динамике. Обычно они работают с базами
данных.
Ответ сервера формируется в виде сообщения, которое состоит их
заголовка и тела. В заголовке указывается состояние транзакции, тип веб-
сервера, формат документа и временные метки. В теле обычно находится сам
html документ, который должен отобразить браузер.
4. После того, как браузер исчерпал запросы, соединение закрывается.
Механизм cgi имеет 2 существенных недостатка. Во-первых он
медленный, поскольку для каждого обращения требуется создавать новую
копию Web-сервера. Во-вторых, cgi-программы получаются довольно
сложными, поскольку требуется разбирать длинные строки текста.
Современные веб-серверы используют серверы приложений. Сервер
приложений – это надстройка над веб-сервером. Его можно рассматривать
как контейнер, в который помещаются серверные программы, которые
рассматриваются как модули, расширяющие функциональность сервера
приложений. Можно выделить 2 подхода к реализации серверных
приложений. Первый подход – это включение в html документ фрагментов
кода, а второй – это создание серверных приложений, которые работают как
расширения сервера приложений. Примером первого подхода может служить
повсеместно используемый язык php [32], а примером второго сервлеты [33].
Следует заметить, что не обязательно, чтобы в качестве клиента
выступал браузер. Посылать запросы веб-серверу и получать ответы может и
компьютер. Для этого он должен открыть соответствующий порт и послать
http запрос. В современных РС этот механизм используется достаточно часто,
в частности, для реализации Web-сервисов, которые будут подробно
рассмотрены ниже. Протокол http работает с текстовой информацией и не
зависит от платформы, что является его важным достоинством, однако
платой за это выступает невысокая скорость работы.
Следует заметить, что WWW не является единственной системой
работы с документами.
Lotus Notes. К другим подходам к работе с документами являются
системы групповой работы. В качестве примера можно привести систему
Lotus Notes (IBM Notes and Domino), которая представляет собой платформу
для автоматизации совместной деятельности рабочих групп (Groupware),
содержащий в себе средства электронной почты, персональных и групповых
электронных календарей, службы мгновенных сообщений и среду
исполнения приложений делового взаимодействия. Модель, положенная в
основу Lotus Notes существенно отличается от WWW. Основным элементом
модели данных является заметка (note), которая представляет собой список
элементов (item), в которой хранятся соответствующие заметке данных.
Более подробную информацию по Notes можно найти, например в [42].
3.13. Технологии виртуализации
В широком смысле понятие виртуализации представляет собой
сокрытие истиной реализации процесса или объекта его представления для
того, кто им пользуется. В ИТ под термином "виртуализация" понимается
абстракция вычислительных ресурсов и их предоставление пользователю
системы, в нужном ему (ей) которая виде. Иначе говоря, пользователь
работает с удобным для себя представлением объекта, и он не знает как
ресурс устроен в действительности. Например, виртуализация ресурсов
физического сервера позволяет гибко распределять их между приложениями,
каждое из которых при этом "видит" только предназначенные ему ресурсы и
"считает", что ему выделен отдельный сервер, т. е. в данном случае
реализуется подход "один сервер — несколько приложений". В основе
механизма виртуализации лежит способность одного компьютера выполнять
работу нескольких компьютеров за счет распределению его ресурсов по
нескольким средам. Использование виртуальных серверов и виртуальных
рабочих станций позволяет разместить несколько ОС и несколько
приложений в едином месте, в результате чего физические и географические
ограничения скрываются от пользователя.
История развития технологий виртуализации насчитывает более сорока
лет. Фирма IBM была первой, кто начал использовать виртуальные среды
своих мэйнфреймов. После появления персональных компьютеров интерес к
виртуализации практически пропал, поскольку мощности процессора
хваиало на поддержки одной ОС. Появление относительно дешевых
высокопроизводительных процессоров, на базе которых стали строить
кластеры и массивно параллельные процессоры заставил ИТ-сообщество
вновь вспомнить о технологиях виртуализации программных платформ.
Определим основные понятия, связанные с виртуализацией.
Виртуализация – процесс представления набора вычислительных
ресурсов или их логического объединения, который даёт какие-либо
преимущества перед оригинальной конфигурацией.
Виртуальная машина – программная или аппаратная среда, которая
скрывает настоящую реализацию какого-либо процесса или объекта от его
видимого представления.
Хостовой ОС – ОС, которая установлена на физической машине.
Гостевая ОС – ОС, работающая на виртуальной машине. В ОС
физического компьютера (хостовой ОС) устанавливается платформа
виртуализации, с помощью которой создаются виртуальные машины, в
которых, в свою очередь, устанавливаются различные гостевые ОС.
Полная виртуализация – виртуализация при которой используются не
модифицированные экземпляры гостевых ОС, а для поддержки работы этих
ОС служит общий слой эмуляции их исполнения поверх хостовой ОС, в роли
которой выступает обычная ОС.
Паравиртуализация – виртуализация, при которой производится
модификация ядра гостевой ОС с целью включения в новый набор API,
используя который она может напрямую работать с аппаратурой, не
конфликтуя с другими виртуальными машинами.
Виртуализация на уровне ОС – разновидность виртуализации, которая
предполагает использование одного ядра хостовой ОС для создания
независимых параллельно работающих операционных сред.
Виртуализация серверов - это запуск на одном физическом сервере
нескольких виртуальных серверов. Виртуальные машины или сервера
представляют собой приложения, запущенные на хостовой ОС, которые
эмулируют физические устройства сервера. На каждой виртуальной машине
может быть установлена ОС, на которую инсталлируются приложения и
сервисы.
Виртуализация приложений – разновидность виртуализации, которая
предполагает применение модели сильной изоляции прикладных программ с
управляемым взаимодействием с ОС, при которой виртуализации
подвергается каждый экземпляр приложений и все его основные
компоненты: файлы, включая системные, (реестр, INI-файлы). Приложение
исполняется без процедуры инсталляции в традиционном ее понимании и
может запускаться с внешних носителей.
Виртуализация рабочих мест (представлений) - сервер предоставляет
свои ресурсы клиентам, причем клиентское приложение выполняется на этом
сервере, а клиент получает только представление.
Гипервизор (монитор виртуальных машин) — аппаратное или
программное средство, позволяющая одновременное (параллельное)
выполнение нескольких ОС на одном компьютере. Гипервизор обеспечивает
изоляцию ОС друг от друга, защиту и безопасность, разделение ресурсов
между различными запущенными ОС. Гипервизор может предоставлять
одновременно работающим под его управлением ОС средства связи и
взаимодействия между собой, например, через обмен файлами или сетевые
соединения так, как если бы эти ОС выполнялись на разных физических
компьютерах. Гипервизор можно рассматривать, как сам ОС или микроядро,
которое предоставляет запущенным под его управлением ОС сервис
виртуальной машины, эмулируя реальное аппаратное обеспечение конкретной

машины. Гипервизор управляет этими виртуальными машинами, выделением


и освобождением ресурсов для них. Гипервизор позволяет независимое
«включение», перезагрузку, «выключение» любой из виртуальных машин с
той или иной ОС. При этом операционная система, работающая в
виртуальной машине под управлением гипервизора, может, но не обязана
«знать», что она выполняется в виртуальной машине, а не на реальном
аппаратном обеспечении.
Монолитная архитектура гипервизора – архитектура гипервизора при
которой гипервизор размещается в едином уровне, который также включает
большинство требуемых компонентов, таких как ядро, драйверы устройств и
стек ввода/вывода.
Микроядерная архитектура гипервизора. Подход при котором
используется специализированный гипервизор, выполняющий лишь
основные задачи обеспечения изоляции разделов и управления памятью.
Этот уровень не включает стека ввода/вывода или драйверов устройств.
Рассмотрим более подробно определенные выше понятия.
Виртуальная машина — это полностью изолированный программный
контейнер, который работает с собственной ОС и приложениями, подобно
физическому компьютеру. Виртуальная машина работает так же, как
физический компьютер, и содержит собственную виртуальную оперативную
и дисковую память и адаптер. ОС и работающие под ее управлением
приложения не различают виртуальную и физическую машины. То же самое
можно сказать о приложениях и других компьютерах в сети. Даже сама
виртуальная машина считает себя "настоящим" компьютером. Виртуальные
машины должны удовлетворять следующим основным требованиям.
Совместимость. Виртуальная машина должна быть совместима со
стандартными компьютерами. Она содержит все стандартные для
физического компьютера компоненты и должна быть совместимы со
стандартными ОС, приложениями и драйверами устройств. Виртуальная
машина может использоваться для инсталляции любого программного
обеспечения, которое может быть инсталлировано на физическом
компьютере.
Изолированность. Виртуальные машины должны быть полностью
изолированы друг от друга, как если бы они были физическими
компьютерами. Они могут использовать общие физические ресурсы одного
компьютера, но должны оставаться полностью изолированными друг от
друга, как если бы они были отдельными физическими машинами.
Например, если на одном физическом сервере запущены 3 виртуальных
машины, и одна из них дает сбой, это не влияет на доступность оставшихся
двух машин.
Инкапсуляция. Виртуальную машину моно рассматривать как
программный контейнер, связывающий, или "инкапсулирующий" полный
комплект виртуальных аппаратных ресурсов, а также ОС и все её
приложения. Использование механизма инкапсуляции позволяет сделать
виртуальные машины мобильными и удобными в управлении. В частности,
виртуальную машину можно переместить или скопировать как любой другой
программный файл, ее можно сохранить на любом стандартном носителе
данных.
Независимость от оборудования. Виртуальные машины должны быть
полностью независимы от физического оборудования, на котором они
работают, при этом для виртуальной машины можно задать настройки,
абсолютно не совпадающие с физическими характеристиками физической
машины, на которой она работает. В сочетании с инкапсуляцией и
совместимостью, аппаратная независимость позволяет перемещать
виртуальные машины с одного компьютера на другой, не меняя драйверы
устройств, ОС или приложения (программная совместимость должна
сохраняться). Независимость от оборудования также позволяет запускать на
одном физическом компьютере одновременно разные ОС и приложения.
Обычно принято выделять 4 основные разновидности виртуализации:
виртуализация серверов (полная виртуализация и паравиртуализация),
виртуализация ОС, виртуализация приложений и виртуализация
представлений.
Виртуализация серверов
Виртуализация серверов предполагает запуск нескольких виртуальных
серверов на одном физическом сервере. Виртуальные машины или сервера
представляют собой приложения, которое запускается на хостовой ОС,
эмулирующей физические устройства сервера. На каждой виртуальной
машине устанавливается ОС, на которую устанавливаются приложения и
службы. Обычно средствами технологий виртуализации консолидируются
серверы, размещенные на нескольких физических серверах в виде
виртуальных машин на одном высокопроизводительном сервере. При этом
число физических машин, необходимых для работы в качестве серверов
уменьшается, что снижает количество энергии, необходимой для работы
машин и пространство, требуемое для их размещения. Следует заметить, что
процессоры с архитектурой x86 от Intel и AMD имеют аппаратную
поддержку виртуализации.
Когда в конце 80-х годов персональные компьютеры стали стремительно
вытеснять мэйнфреймы, то проблема виртуализации вроде бы исчезла,
поскольку каждый пользователь получил свой личный физический
компьютер со своей ОС. Потребность в виртуализации стала появляться по
мере увеличения производительности компьютеров, в первую очередь, x86
серверов. Хотя в подходах к виртуализации x86-систем в теоретическом
плане ничего принципиально нового не было, фактически, речь идет о
качественно новом для ИТ-отрасли явлении по сравнению с ситуацией конца
80-х годов. В аппаратно-программной архитектуре Unix-компьютеров и
мэйнфреймов вопросы виртуализации решались на базовом уровне и
аппаратном уровне, а x86 процессоры изначально не были рассчитаны на
работу в составе датацентров.
Использование средств x86-виртуализации началось в конце 90-х с
рабочих станций, когда все большему числу пользователей стало необходимо
иметь на одном компьютере сразу несколько копий различных ОС.
Виртуализация для серверной инфраструктуры стала применяться
позднее, и это было связано с необходимостью решать задачу консолидации
вычислительных ресурсов на серверной стороне, при этом определились 2
задачи: поддержка неоднородных операционных сред и поддержка
неоднородных операционных сред.
Поддержка неоднородных операционных сред требуется, в частности
для поддержки функционирования для унаследованных приложений в КИС.
Эта задача может быть решена за счет одновременной работы на одном
компьютере нескольких виртуальных машин, на каждой из работает своя ОС.
Используется 2 альтернативных подхода к решению этой задачи:
паравиртуализация и полная виртуализация.
Поддержка однородных вычислительных сред подразумевает изоляцию
сервисов в рамках одного экземпляра ядра ОС (виртуализация на уровне ОС).
Этот подход чаще всего используется провайдерами сервисов для хостинга
приложений.
Паравиртуализация. Обобщенная структура системы, использующей
паравиртуализацию показан на рис. 3.14 . В ядро гостевой ОС включается
новый набор API, через который она может напрямую работать с
аппаратурой, не конфликтуя с другими виртуальными машинами. При этом
отпадает необходимость иметь полноценную ОС в качестве хостового ПО,
функции которого в этом случае исполняет гипервизора. Этот вариант
используется во многих реальных системах, таких как VMware ESX Server,
Microsoft Hyper-V [43]. Достоинства данного подхода состоит в потребности
в хостовой ОС. Виртуальная машина устанавливается непосредственно на
аппаратную платформу, что создает реальные предпосылки для получения
высокой скорости работы. Основным недостатком данного подхода является
его сложность, которая обусловлена необходимостью создания
специализированной ОС - гипервизора.

Приложение Приложение

Модифицированная гостевая Модифицированная


ОС гостевая ОС
Управ-
ление
...
Гипервизор

Оборудование

Рис. 3.14.  Паравиртуализация

Полная виртуализация (Full, Native Virtualization). Обобщенная


структура системы, использующей полную виртуализацию, показана на рис.
3.15. При использовании механизма полной виртуализации применяются
немодифицированные экземпляры гостевых ОС. Для поддержки работы
гостевых ОС служит отдельный слой эмуляции, в роли которой выступает
обычная ОС. Такой подход часто применяется во многих популярных
продуктах, таких как MS Virtual PC, MS Virtual Server, VMware Workstation и
др. [43]. Несомненными достоинствами данного подхода являются его
простота реализации, универсальность и надежность решения; поскольку
функции управления берет на себя хост-ОС. Основной недостаток состоит в
относительно невысокой скорости работы.

Приложение Приложение

Гостевая ОС Гостевая ОС
Управ-
ление
...
Гипервизор

Оборудование

Рис. 3.15. Полная виртуализация


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

ОС
Оборудование

Рис. 3.16. Виртуализация на уровне ядра ОС


Виртуализация приложений подразумевает применение модели, при
которой виртуализируется каждый экземпляр приложений и все его
основные компоненты: файлы (включая системные), реестр, шрифты, INI-
файлы, службы. Обобщенная структура системы, использующей
виртуализацию приложений показана на рис. 3.17. При использовании
данного подхода приложение можно запускать без процедуры инсталляции, в
частности прямо с внешних носителей, что позволяет ускорить
развертывания настольных систем и возможность управления ими, сведение
к минимуму не только конфликтов между приложениями, но и потребности в
тестировании приложений на совместимость. Данная технология позволяет
использовать на одном компьютере, а точнее в одной и той же ОС несколько
несовместимых между собой приложений одновременно. Виртуализация
приложений позволяет пользователям запускать одно и то же заранее
сконфигурированное приложение или группу приложений с сервера. При
этом приложения будут работать независимо друг от друга, не внося никаких
изменений в ОС. Такой подход используется, в частности, в Java Virtual
Machine и ряде других систем [40, 43].

Приложение Приложение

Приложение Приложение

ОС

Оборудование

Рис. 3.17.  Виртуализация приложений


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

Рис. 3.18.  Виртуализация представлений


Потребности бизнеса меняют наши представления об организации
рабочего процесса. Персональный компьютер, ставший за последние
десятилетия неотъемлемым атрибутом офиса и средством выполнения
большинства офисных задач, перестает успевать за растущими
потребностями бизнеса. Реальным инструментом пользователя оказывается
программное обеспечение, которое лишь привязано к ПК, делая его
промежуточным звеном корпоративной информационной системы. В
результате активное развитие получают "облачные" вычисления, когда
пользователи имеют доступ к собственным данным, но не управляют и не
задумываются об инфраструктуре, операционной системе и собственно
программном обеспечении, с которым они работают.
Вместе с тем, с ростом масштабов организаций, использование в ИТ-
инфраструктуре пользовательских ПК вызывает ряд сложностей: большие
операционные издержки на поддержку компьютерного парка, сложность,
связанная с управлением настольными ПК, обеспечение пользователям
безопасного и надежного доступа к ПО и приложениям, необходимым для
работы, техническое сопровождение пользователе, установка и обновление
лицензий на ПО и техническое обслуживание, резервное копирование и т.д.
Уйти от сложностей, связанных с поддержкой многочисленных рабочих мест
пользователей и сократить издержки, связанные с их содержанием и
технической поддержкой, возможно благодаря применению технологии
виртуализации рабочих мест сотрудников на базе инфраструктуры
виртуальных ПК – Virtual Desktop Infrastructure (VDI). VDI позволяет
отделить пользовательское ПО от аппаратной части – персонального
компьютера, - и осуществлять доступ к клиентским приложениям через
терминальные устройства. VDI – это комбинация соединений с удаленным
рабочим столом и виртуализации. На обслуживающих серверах работает
множество виртуальных машин, с такими клиентскими ОС, как Windows или
Linux. Пользователи могут дистанционно подключаются к виртуальной
машине своей настольной среды. На локальных компьютерах пользователей
в качестве удаленного настольного клиента могут применяться не самые
мощные компьютеры. VDI полностью изолирует виртуальную среду
пользователей от других виртуальных сред, так как каждый пользователь
подключается к отдельной виртуальной машине. Иногда используется
статическая инфраструктура VDI, в которой пользователь всегда
подключается к той же виртуальной машине, в других случаях динамическая
VDI, в которой пользователи динамически подключаются к различным
виртуальным машинам, и виртуальные машины создаются по мере
необходимости. При использовании любой модели важно хранить данные
пользователей вне виртуальных машин и быстро предоставлять приложения.
Наряду с централизованным управлением и простым предоставлением
компьютеров, VDI обеспечивает доступ к настольной среде из любого места,
если пользователи могут дистанционно подключиться к серверу.
Как пример виртуализации представлений можно рассматривать и
технологию тонких терминалов, которые фактически виртуализируют
рабочие места пользователей настольных систем: пользователь не привязан к
какому-то конкретному ПК, а может получить доступ к своим файлам и
приложениям, которые располагаются на сервере, с любого удаленного
терминала после выполнения процедуры авторизации. Все команды
пользователя и изображение сеанса на мониторе эмулируются с помощью
ПО управления тонкими клиентами. Применение этой технологии позволяет
централизовать обслуживание клиентских рабочих мест и резко сократить
расходы на их поддержку — например, для перехода на следующую версию
клиентского приложения новое ПО нужно инсталлировать только один раз
на сервере.
Платформ виртуализации
В настоящее время практически все крупные производители
программного обеспечения выпускают собственные системы виртуализации.
Кроме того, имеется много бесплатно распространяемых решений,
ориентированных на использование в составе Linux систем. Ниже
рассматриваются несколько примеров.
VMware. Компания VMware – один из основных производителей систем
виртуализации.
Предлагает широкий спектр решений от VMware Workstation,
предназначенного для настольных ПК, до VMware ESX Server,
позволяющего консолидировать физические серверы предприятия в
виртуальной инфраструктуре.
VMware Workstation – платформа, ориентированная на desktop-
пользователей и предназначенная для использования разработчиками ПО, а
также профессионалами в сфере ИТ. В качестве хостовых операционных
систем поддерживаются Windows и Linux.
VMware Player – бесплатный "проигрыватель" виртуальных машин на
основе виртуальной машины VMware Workstation, предназначенный для
запуска уже готовых образов виртуальных машин, созданных в других
продуктах VMware,
VMware Fusion – настольный продукт для виртуализации на платформе
Mac от компании Apple.
VMware Server, Бесплатный продукт VMware Server является довольно
мощной платформой виртуализации, которая может быть запущена на
серверах под управлением хостовых операционных систем Windows и Linux.
Основное предназначение VMware Server – поддержка малых и средних
виртуальных инфраструктур небольших предприятий. В связи с небольшой
сложностью его освоения и установки, VMware Server может быть развернут
в кратчайшие сроки, как на серверах организаций, так и на компьютерах
домашних пользователей.
VMware vSphere – комплекс продуктов, представляющий надежную
платформу для виртуализации центров обработки данных [46].
. Citrix (Xen). Предлагает целый ряд продуктов для виртуализации,
основными из которых являются следующие.
Бесплатный Xen. В настоящее время Open Source версия платформы Xen
применяется в основном в образовательных и исследовательских целях.
Некоторые удачные идеи, реализованные многочисленными разработчиками
со всего мира, находят свое отражение в коммерческих версиях продуктов
виртуализации компании Citrix. Сейчас бесплатные версии Xen включаются
в дистрибутивы многих Linux-систем, что позволяет их пользователям
применять виртуальные машины для изоляции программного обеспечения в
гостевых ОС с целью его тестирования и изучения проблем безопасности, без
необходимости установки платформы виртуализации. К тому же многие
независимые разработчики ПО могут распространять его с помощью
виртуальных шаблонов, в которых уже установлена и настроена гостевая
система и предлагаемый продукт. Кроме того, Xen идеально подходит для
поддержки старого программного обеспечения в виртуальной машине. Для
более же серьезных целей в производственной среде предприятия
необходимо использовать коммерческие платформы компании Citrix.
Citrix XenApp предназначен для виртуализации и публикации
приложений в целях оптимизации инфраструктуры доставки сервисов в
крупных компаниях.
Citrix XenServer - платформа для консолидации серверов предприятий
среднего масштаба, включающая основные возможности для поддержания
виртуальной инфраструктуры. Производитель позиционирует данный
продукт как решение Enterprise-уровня для виртуализации серверов,
поддерживающее работу в "облачном" окружении.
Citrix XenDesktop - решение по виртуализации десктопов предприятия,
позволяющее централизованно хранить и доставлять рабочие окружения в
виртуальных машинах пользователям. Продукт поддерживает несколько
сценариев доставки приложений на настольные ПК, тонкие клиенты и
мобильные ПК и совместим с серверными виртуализационными решениями
конкурентов. [43, 44]
Microsoft. Фирма Microsoft также предлагает целую линейку продуктов
для своей платформы.
Microsoft Virtual PC. Продукт Virtual PC был куплен корпорацией
Microsoft вместе с компанией Connectix и впервые под маркой Microsoft был
выпущен как Microsoft Virtual PC 2004. Virtual PC 2007 бесплатен и доступен
для поддержки настольных ОС в виртуальных машинах.
Microsoft Virtual Server. Серверная платформа виртуализации Microsoft
Virtual Server может использоваться на сервере и предназначена для
одновременного запуска нескольких виртуальных машин на одном
физическом хосте. Платформа бесплатна и предоставляет только базовые
функции.
Microsoft Hyper-V. Продукт Microsoft позиционируется как основной
конкурент VMware ESX Server в области корпоративных платформ
виртуализации. Microsoft Hyper-V представляет собой решение для
виртуализации серверов на базе процессоров с архитектурой x64 в
корпоративных средах. В отличие от продуктов Microsoft Virtual Server или
Virtual PC, Hyper-V обеспечивает виртуализацию на аппаратном уровне, с
использованием технологий виртуализации, встроенных в процессоры.
Hyper-V обеспечивает высокую производительность, практически равную
производительности одной операционной системы, работающей на
выделенном сервере [43, 44].
3.14. Облачные вычисления
Идея облачных вычислений состоит в предоставлении пользователям
удаленного доступа к услугам, вычислительным ресурсам и приложениям
через Интернет. Появление современных облачных вычислений обычно
относят к 2005 году и связывают выходом на рынок бизнес-решение под
названием «Amazon Web Services» от компании Amazon. В 2009 году было
запущено приложение Google Apps, что стало следующим важным шагом к
популяризации и осмыслению облачных вычислений.
Согласно документу IEEE, опубликованному в 2008 году:
«Облачная обработка данных — это парадигма, в рамках которой
информация постоянно хранится на серверах в Интернете и временно
кэшируется на клиентской стороне, например, на персональных
компьютерах, игровых приставках, ноутбуках, смартфонах и так дале.»
Национальный институт стандартов и технологий CША (NIST)
определяет облачные вычисления (Cloud Computing) как «модель
обеспечения повсеместного сетевого доступа по требованию к совместно
используемому пулу конфигурируемых вычислительных ресурсов, которые
можно быстро предоставить и внедрить с минимумом административных
усилий или взаимодействия с сервис-провайдером» [47].
Облачные вычисления по замыслу создателей должны: реализовывать
самообслуживание по требованию, обеспечивать широкополосный сетевой
доступ, поддерживать пул ресурсов, обеспечивать возможность быстрой
перенастройки или расширения и иметь измеряемое обслуживание.
Применительно к облачным вычислениям используются 3 сервисных
модели: программа, платформа и инфраструктура в виде сервиса и 4 модели
внедрения: публичная, общественная, частная и гибридная. Облаком обычно
принято называть совокупность удаленных серверов, на которых
разворачиваются виртуальные среды и программное обеспечение.
Пользователь не имеет прямого доступа к аппаратному обеспечению, и
обычно доступ к сервисам осуществляется через сеть. В облачных
вычислениях различают несколько видов сервисов, для удобства в их
обозначении используют аббревиатуру «as a service», то есть «как сервис»,
или «в виде услуги». Облачная обработка данных как концепция включает в
себя понятия: «Все как услуга», «Инфраструктура как услуга», «Платформа
как услуга», «Программное обеспечение как услуга»,«Рабочее место как
услуга», «Данные как услуга» и т. п. Основными можно считать понятия
Программное обеспечение как услуга, Инфраструктура как услуга и
Платформа как услуга.
SaaS (Software as a Service) - это модель использования бизнес-
приложений в качестве Интернет-сервисов. SaaS приложения работают на
сервере провайдера. Пользователь не покупает, а арендует приложение и
работает с ним через браузер. В качестве преимуществ SaaS по сравнению с
традиционным программным обеспечением обычно указывают следующие:
низкая стоимость владения, более короткие сроки внедрения, возможность
оперативно и часто бесплатно протестировать приложение, поддержка и
обновление системы обеспечивается, возможность работать через Интернет,
что очень удобно для географически распределенных компаний и удаленных
сотрудников, минимальные требования к производительности компьютера
пользователя, кросс-платформенность. Основные недостатки – это риски,
связанные передачей коммерческих данных стороннему провайдеру,
ограниченная скорость работы приложения и возможности сбоев в связи с
необходимостью работать через Интернет.
IaaS (Infrastructure as a Service) пользователю предоставляется
возможность самостоятельно управлять ресурсами обработки, хранения,
сетями, например, он (она) может устанавливать и запускать произвольное
программное обеспечение, такое как ОС, платформенное и прикладное ПО,
контролировать ОС, виртуальные системы хранения данных и
установленные приложения. Управление и контроль основной физической и
виртуальной инфраструктурой облака, в том числе сетями, серверами
осуществляется провайдером. Основное достоинство такого подхода состоит
в том, отпадает необходимость в приобретении физического оборудования,
организации его обслуживания.
Platform as a Service (PaaS, «платформа как услуга») — это модель
предоставления облачных сервисов, при которой пользователь получает
доступ к использованию информационно-технологических платформ,
включая ОС, СУБД, промежуточному ПО, инструментальным средствам
разработки и тестирования, размещённым у облачного провайдера. В этой
модели вся информационно-технологическая инфраструктура полностью
управляется провайдером, который также определяется состав доступных
для потребителей видов платформ и состав управляемых параметров
платформ, а пользователь может использовать платформы, создавать их
виртуальные экземпляры, устанавливать, разрабатывать, тестировать,
эксплуатировать на них прикладное программное обеспечение, при этом
динамически изменяя количество потребляемых вычислительных ресурсов.
Плата с пользователей облачных платформ может взиматься в
зависимости от уровня потребления, тарификация возможна по времени
работы приложений потребителя, по объёму обрабатываемых данных и
количеству транзакций над ними, по сетевому трафику.
Границы управляемости. Использование различных типов облачных
сервисов в разной мере ограничивают свободу пользователя. Отличия в
границах управляемости для различных типов облачных сервисов показаны в
табл. 3.2.
Из табл. 3.2 видно, что при развертывании собственной IT-
инфраструктуры пользователь может управлять всеми ее компонентами – от
сетевых ресурсов до выполняющихся приложений. При использовании
модели IaaS пользователь может контролировать данные, приложения и
промежуточное ПО, а при использовании модели PaaS, все компоненты
платформы предоставляются пользователю как сервисы с ограниченными
возможностями для управления ими. Таким образом, пользователь получает
в свое распоряжение оптимально сконфигурированную платформу, не
требующую дополнительных настроек.
Таблица 3.2.
Отличия в границах управляемости управляемости для различных типов
облачных сервисов
Собственная IT- SaaS IaaS PaaS
инфраструктура
Приложения + + + -
Данные + + + -
Промежуточное ПО + + - -
ОС + - - -
Виртуализация + - - -
Серверы + - - -
Сетевая + - - -
инфраструктура
Модели развертывания. Можно выделить 4 основные модели
развертывания облачных сервисов.
Публичное облако (public cloud) представляет собой инфраструктуру,
предназначенную для свободного использования и может находиться в
собственности, управлении и эксплуатации коммерческих, научных и
правительственных организаций (или какой-либо их комбинации).
Владельцем облака является поставщика сервисов.
Общественное облако (community cloud) может находиться в совместной
собственности, управлении и эксплуатации одной или более из организаций
сообщества или третьей стороны. Физически оно может существовать как
внутри, так и вне юрисдикции владельца.
Частное облако (private cloud) ориентировано на использование в
рамках одной организации, но может включать несколько групп
пользователей, например, подразделений одной организации. Частное облако
может находиться в собственности, управлении и эксплуатации как самой
организации, так и третьей стороны (или какой-либо их комбинации).
Физически оно может существовать как внутри, так и вне юрисдикции
владельца.
Гибридное облако (hybrid cloud) представляет собой комбинацию
публичных, общественных или частных, облачных инфраструктур,
остающихся уникальными объектами, но связанных между собой
стандартизованными или частными технологиями передачи данных и
приложений.
Характеристики. К основным характеристикам облачных платформ
обычно относят: масштабируемость, эластичность, многофункциональность,
самообслуживание по требованию, билинг.
Масштабируемость можно определить, как способность выдерживать
растущие нагрузки и обрабатывать большие объемы данных, быстрая и
надежная работа, исключающая отказы в обслуживании, задержки в ответах
от системы и сбои, позволяющая повысить удовлетворенность и лояльность
пользователей.
Эластичность можно определить, как способность реагировать на
изменяющиеся условия ведения бизнеса, например, сложившаяся рыночная
конъюнктура и действия конкурентов могут потребовать быстро внедрить
новый сервис, выполнив полный цикл планирования, проектирования и
разработки ИС. Эластичность позволяет оперативно наращивать мощность
облачной инфраструктуры, при минимальных инвестициях в оборудование и
ПО. Эластичность тесно связана с масштабируемостью приложений, так как
решает задачу моментального изменения количества выделяемых для работы
вычислительных ресурсов.
Многофункциональность можно рассматривать как один из способов
снижения расходов за счет максимального использования общих ресурсов
для обслуживания разных организаций и различных групп пользователей.
Многофункциональность может быть особенно привлекательна для
разработчиков приложений, так как позволяет снизить собственные расходы
на оплату ресурсов облачной платформы и максимально использовать
доступные вычислительные ресурсы.
Самообслуживание по требованию можно определить, как наличие у
пользователя возможности самостоятельно определять и изменять параметры
сервисов, такие как скорости доступа, объём хранимых данных без
взаимодействия с провайдером сервисов.
Биллинг обычно определяют как комплекс процессов и решений,
ответственных за сбор информации об использовании сервисов, их
тарификацию, выставление счетов абонентам. Провайдер автоматически
исчисляет потреблённые ресурсы на определённом уровне абстракции,
например, объём хранимых данных, пропускная способность, количество
пользователей, количество транзакций, и на основе этих данных оценивает
объём предоставленных потребителям услуг.
Существующие облачные платформы
На рынке сегодня существует много как коммерческих, так открытых
платформ, на основе которых организации создают свои инфраструктуры и
предлагают средства для их управления, в частности, предоставляют
комплексы для превращения имеющихся ресурсов в облака.
Публичные облака. Из наиболее известных облачных решений можно
отметить следующие платформы и компании:
Amazon Web Services (AWS). Особенность является то, что AWS - это,
инфраструктурный сервис (IaaS), который предоставляет максимум свободы
разработчикам в выборе платформы и среды разработки. Однако проблема
состоит в том, что многое приходится делать вручную. Лучше всего AWS
подходит для построения SaaS сервисов.
Windows Azure. ориентирована на разработчиков и компании,
работающие с технологиями от Microsoft, хотя и поддерживает PHP, MySQL,
Ruby on Rails, Python, Java, Основным преимуществом Azure перед Amazon
Web Services является высокий уровень автоматизации, позволяющий
разработчику думать только о своем приложении, а не об инфраструктуре.
Следует отметить, что Windows Azure поддерживает стандарты SOAP, REST.
Google App Engine (GAE). GAE, в основном, ориентирован на создание
SaaS сервисов для малого бизнеса. Он, ориентирован, в первую очередь, на
языки Python и Java. Платформа GAE предоставляет ограниченные
бесплатные ресурсы (дисковое пространство и трафик), что удобно для
образовательных учреждений и стартапов.
VMWare vCloud. VMWare vCloud не является самодостаточной облачной
платформой. Это промежуточное ПО, которое несколько партнеров VMWare
предоставляют поверх своей серверной инфраструктуры. Поскольку VMWare
является мировым лидером на рынке систем виртуализации, то главным
преимуществом этой платформы является поддержка виртуальных образов
приложений, что позволяет быстро и просто переносить локальные бизнес-
приложения на облачную платформу без проблем, связанных с переносом
сопутствующей ИТ-инфраструктуры.
IBM Cloud. IBM Cloud ориентирована преимущественно на крупные
компании и ресурсоемкие процессы: разработка и тестирование ПО,
хранение и аналитическая обработка огромных массивов данных.
Частные облака. Существует не только множество провайдеров
предоставляющих ресурсы облачных систем, но также и различные
приложения, для создания собственных облачных систем, такие как
Eucalyptus, OpenNebula, OpenStack [48, 49, 50, 51].
Eucalyptus. (Elastic Utility Computing Architecture for Linking Your
Programs To Useful Systems). Eucalyptus позиционируется как открытое (open
source) решение для организации доступа к вычислительным ресурсам.
Также предоставляется возможность балансировки нагрузки и
динамического масштабирования системы. Eucalyptus ориентирован на
реализацию «облачных» технологий на кластерах. Интерфейс Eucalyptus
совместим с интерфейсами облаков Amazon. Инфраструктура разработана
для поддержки множественных клиентских интерфейсов. Eucalyptus
реализуется на платформе Linux с использованием, как правило, доступных
инструментариев и базовых веб-сервисных технологий.
Eucalyptus реализует схему IAAS (Infrastructure-as-a-Service), а именно
“нижний” уровень облака, позволяющий запускать виртуальные машины по
запросу вышестоящих приложений. Возможности Eucalyptus во многом
позаимствованы из Amazon, поэтому Eucalyptus с некими ограничениями и
допущениями можно рассматривать как открытую альтернативу сервисам
Amazon. Пример иерархической структуры Eucalyptus изображен на рис.
3.19.

Контроллер облака
Walrus

Глобальная
сеть

КК КК

ЧС ЧС

КУ КУ КУ КУ КУ КУ

Кластер 1 Кластер 2

Рис. 3.19. Eucalyptus. Пример иерархической структуры


Node Controller (Контроллер узла, КУ) управляет запуском, работой и
остановом виртуальных машин на подведомственном узле. Узел, это
компьютер, на которой установлен гипервизор, который обеспечивает работу
виртуальных машин (в терминологии Eucalyptus instances).
Cluster Controller (Контроллер кластера, КК) управляет
подведомственными контроллерами узлов (NC): собирает информацию о
загруженности узлов и принимает решения, на каких узлах будет выполнен
запуск виртуальных машин.
Образы виртуальных машин хранятся в хранилище, в качестве которого
хранилища используется Walrus (морж) – сервис, подобный сервису Amazon
S3 (расшифровывается как Amazon Simple Storage Server — простое
хранилище файлов от Amazon). Если говорить кратко, то это просто
хранилище в Интернете.)
Cloud Controller (Контроллер облака) представляет собой точку входа, на
которую со стороны конечного пользователя или вышестоящего приложения
поступают запросы на запуск виртуальных машин, а со стороны
контроллеров кластеров поступают данные о загруженности отдельных узлов
облака.
Алгоритм работы. Владелец облака помещает в хранилище образы тех
виртуальных машин, которые могут запускаться в облаке (например, Ubuntu,
Debian или другой Linux). В запросе пользователя указывается сколько и
какие машины требуется запустить. Пользователь может указать, в каком
кластере, или зоне должны быть запущены машины. Соответствующий
контроллер кластера получает запрос и принимает решение, на каких узлах
будет выполнено задание. Запрос направляется либо первому из узлов,
имеющему свободными ресурсы до его полного заполнения (режим Greedy)
либо поочередно каждому из узлов (RoundRobin). Получив задание,
контроллер узла загружает соответствующий образ из хранилища или своего
локального кэша, если этот образ уже загружался, и запускает виртуальные
машины средствами гипервизора.
Eucalyptus поддерживает разные варианты организации сети,
различающиеся механизмом выделения IP-адресов. В простейшем случае
(используется по умолчанию) гостевые виртуальные машины в режиме
System получают IP-адреса от DHCP-сервера, который должен быть во
внешней сети. Кроме того, можно назначать каждому экземпляру ОС
собственный IP-адрес с помощью внутреннего DHCP-сервера. Можно
размещать ОС в отдельных сетях, работающих по правилам, определяемым
самим. Eucalyptus может быть полезен во многих случаях, например, есть
имеется сервис реализован в облачной среде, то по мере того, как количество
запросов растет и сервис перестает справляться с нагрузкой, в систему
можно добавить (динамически или по требованию) новые узлы и
перераспределить нагрузку между ними. Eucalyptus может быть полезен
разработчикам ИС, например, можно проверить работоспособность
разработанного приложения на разных платформах. Следует отметить
ограничения Eucalyptus. Eucalyptus – это, прежде всего, система выделения
ресурсов, которая по имеющемуся образу может создавать произвольно
число экземпляров гостевых машин. После выполнения задания машина
уничтожается и нет возможности сохранить ее образ, что не всегда удобно
для разработчиков.
OpenNebula — это один из самых значимый проектов, относящихся к
облачных технологиям. OpenNebula может быть использован для управления
виртуальной инфраструктурой в информационном центре или кластере или
для объединения локальной инфраструктуры с публичной облачно-
ориентированной инфраструктурой. OpenNebula также поддерживает
публичные облака. Это полностью открытая платформа для организации
управления облачной инфраструктурой и виртуальными окружениями. Пакет
позволяет организовать взаимодействие таких элементов, как хранилище,
сеть, технологии виртуализации, средства мониторинга и управления
безопасностью, Позволяет создавать динамически разворачиваемые
многоуровневые сервисы, комбинировать ресурсы дата-центра и внешних
облачных сервисов.
Код системы полностью открыт и доступен всем желающим в полном
объеме без ограничений, имеются готовые установочные пакеты для Linux
(Ubuntu, Debian, Red Hat). OpenNebula позволяет создавать облака 3 типов:
частные, доступные только внутри организации, полностью подконтрольные
и выполненные на собственных мощностях, публичные, работающие в
инфраструктуре внешних провайдеров, таких как Amazon, гибридные,
сочетающие элементы публичных и частных облачных систем. Например,
определенная критически важная часть инфраструктуры можно работать в
частном облаке, а вторичные системы вынесены во внешние облака, или
изначально вся система построена как частная, но при нехватке ресурсов в
пиковые моменты к работе привлекаются мощности публичных сервисов.
OpenStack — это ПО, которое может быть использован для создания
инфраструктурных облачных сервисов и облачных хранилищ. OpenStack
включает следующие основными компоненты: контроллер вычислительных
ресурсов (Nova), облачное файловое хранилище, библиотека образов
виртуальных машин, сервис идентификации, служба работы с блочными
устройствами хранения данных, сервис «подключение к сети как услуга»,
графический интерфейс администрирования, средства сбора, нормализации и
трансформации данных, предоставляемых сервисами, которые используются
для реализации различных сценариев реагирования на события.
Nova можно рассматривать как контроллер, управляющий работой
виртуальных машин. Все действия, необходимые для поддержки жизненного
цикла виртуальной машины в облаке OpenStack обрабатывает Nova. Она
управляет всеми вычислительными ресурсами. Nova — это только средство
управления платформой. Nova предоставляет свои возможности с помощью
API веб-сервисов, совместимых с EC2 от Amazon Web Services. Amazon
Elastic Compute Cloud (Amazon EC2) — это веб-сервис, который
предоставляет вычислительные мощности в облаке. Этот сервис входит в
инфраструктуру Amazon [52].
По состоянию на 2015 организация OpenStack Foundation, занимающаяся
поддержкой проекта OpenStack насчитывает более чем 500 членов, включая
AMD,  Cisco, Citrix,  Fujitsu,  Hewlett-Packard, Huawei, IBM, Intel,  NEC, 
Oracle,  Red Hat, Solidfire, SUSE Linux, VMware,  и Yahoo! [48].
Гибридное облако - это сочетание, по крайней мере, одного частного
облака и одной облачной инфраструктуры общего пользования, создающее
среду, которая обеспечивает прозрачный доступ к гибридному облаку и
может динамически наращиваться для управления неравномерной нагрузкой.
Гибридные облака становятся все более популярны, поскольку позволяет
организации создать лучшие условия для реализации своей бизнес-модели.
При этом усиливается внутренний контроль приложений, которые
предприятие не хочет выводить за пределы межсетевого экрана, но в то же
время остается возможность использовать облачные вычисления, когда они
соответствуют потребностям организации.
Схема гибридного облака показана на рис. 3.20. Работу приложений
организации обеспечивают 2 публичных и частное облако с применением
базовой модели SaaS.

Публичное облако

Приложение 1 Приложение 2

Частное облако Гибридное


облако

Дата -центр
Организация

Рис. 3.20. Гибридное облако


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

SaaS, IaaS и PaaS – это только основные модели облачных сервисов. В


первую очередь в рамках гибридных облаков, предлагается большое число
других моделей. Рассмотрим некоторые из них.
При использовании модели компонент как сервис, облако превращается
из среды, основанной на SaaS, в экосистему, в которой приложения
сокращаются до своих основных функций и предоставляются как
компоненты, при этом под компонентом понимается готовая, независимая
часть бизнес-функциональности. Подход "каждый компонент как сервис"
(XaaS), напоминающий многочисленные и разнообразные Web-сервисы, стал
центральной концепцией вычислений на основе гибридного облака. Выбор
компонентов "как сервис" быстро растет, что делает модель гибридного
облака все более привлекательной.
Например, в современном офисе часто используется компонент "связь
как сервис", который включает такие сервисы, как голос поверх интернет-
протокола (VoIP) и единая связь (Unified Communications), в которую входят
обмен мгновенными сообщениями, видеоконференции и интерактивная
доска. "Связь как сервис" позволяет сотрудникам предприятия быстрее и
эффективнее взаимодействовать и общаться.
Достаточно часто популярным является подход "рабочий стол как
сервис". При использовании этой модели провайдер несет ответственность за
хранение данных, резервное копирование, обеспечение безопасности и
обновления.
При использовании гибридных облаков, основные функции можно
предоставлять как сервисы. "Сеть как сервис" ― это комбинация
предложений "платформа как сервис" (PaaS) и "инфраструктура как сервис"
(IaaS). Используя "сеть как сервис", сетевые ресурсы можно наращивать и
сокращать в зависимости от их фактического использования.
"Хранение как сервис" ― это способ арендовать дисковое пространство,
обеспечивая экономию расходов на персонал, оборудование и физические
запоминающие устройства. К этому можно добавить "базу данных как
сервис", "мониторинг как сервис" позволяет дистанционно контролировать и
управлять сетями, приложениями и службами; а "безопасность как сервис"
обеспечивает управление учетными записями и доступом. В гибридном
облаке легко управлять всеми этими новыми ИТ-сервисами.
Разработку тоже можно вести в облаке, используя "проектирование как
сервис". Это интегрированная среда, к которой локальные и удаленные
группы разработчиков могут обращаться для целей создания, тестирования и
передачи своего кода. Система планирования ресурсов предприятия также
может быть развернута в облаке ― с использованием услуг "корпоративные
приложения как сервисы". "Вычисления как сервис" можно использовать для
доступа к виртуализированным серверам с целью быстрого наращивания
вычислительной мощности в случае необходимости и ее сокращения при
изменении требований.
На самом деле в облаке можно разместить все бизнес-процессы
предприятия, используя "бизнес-процессы как сервис". Даже такие процессы,
как выставление счетов, могут предоставляться как сервис. Это приводит к
созданию гибкой и динамичной архитектуры предприятия, оптимальной для
реалий сегодняшней глобальной цивилизации и торговли.
Преимущества облачных вычислений.
1. Пользователь оплачивает услугу только тогда, когда она ему
необходима, а самое главное он платит только за то, что использует.
2. Облачные технологии позволяют экономить на приобретении,
поддержке, модернизации ПО и оборудования.
3. Масштабируемость, отказоустойчивость и безопасность ―
автоматическое выделение и освобождение необходимых ресурсов в
зависимости от потребностей приложения. Техническое обслуживание,
обновление ПО производит провайдер услуг.
4. Удаленный доступ к данным в облаке ― работать можно из любой
точки на планете, где есть доступ в сеть Интернет.
Недостатки облачных вычислений
1. Пользователь не является владельцем и не имеет доступа к
внутренней облачной инфраструктуре. Сохранность пользовательских
данных сильно зависит от компании провайдера.
2. Недостаток актуальный для российских пользователей: для получения
качественных услуг пользователю необходимо иметь надежный и быстрый
доступ в сеть Интернет.
3. Отсутствие общепринятых стандартов в направлении безопасности
облачных технологий.

3.15. Мультиагентные системы

Интеллектуальные агенты (ИА) и основанные на них мультиагентные


системы (МАС). МАС являются одним из наиболее интересных классов
интеллектуальных ИС, который на протяжении многих лет считался одним
из перспективных, но, к сожалению, не получил широкого распространения.
ИА обычно определяют как систему, обладающую следующими
свойствами [54]:
 автономность – способность действовать (решать задачи) без
прямого вмешательства человека или других агентов, самостоятельно
управляя своими действиями и внутренним состоянием;
 реактивность – способность к восприятию внешней среды и
своевременному отклику на происходящие в ней события (при этом внешней
средой агента может быть физический мир, пользователь, совокупность
других агентов или их комбинация);
 активность – способность осуществлять целенаправленное
поведение и проявлять инициативу, а не просто откликаться на внешние
события;
 социальность – способность взаимодействовать с другими агентами
и/или людьми, общаясь с ними посредством языка межагентного общения.
Данное определение характеризует лишь внешние свойства агента и
ничего не говорит о его внутренней организации, поэтому его называют
слабым, Известно и другое определение ИА, которое называют сильным, в
соответствии с котором ИА рассматривается как система при описании
внутреннего состояния и процессов переработки информации которой
используются так называемые ментальные категории, такие как знания,
убеждения, желания, цели, намерения, планы, обязательства и т. п.
Наиболее существенной особенностью ИА является способность
осуществлять целенаправленное поведение в открытых, динамических и
неопределенных мирах. Открытые миры, в отличие от замкнутых, не
позволяют на этапе проектирования агента исчерпывающе полно описать
среду его функционирования. Динамичность мира означает постоянное
изменение его состояния. Источниками изменений быть как
нецеленаправленные динамические объекты, так и целенаправленные
сущности (другие агенты). Неопределенность означает принципиальную
невозможность для агента исчерпывающе полно и точно идентифицировать
состояния мира.
По типу среды функционирования выделяют программные и физические
агенты. К программным агентам относятся агенты, функционирующие в
информационном пространстве. Физические агенты действуют в физических
средах (автономные роботы, беспилотные ЛА и т. п.) и в процессе
функционирования непосредственно воздействуют на окружающую их
физическую среду.
Многоагентную систему определим как совокупность
интеллектуальных агентов, взаимодействующих в процессе своей
деятельности. С учетом специфики ИА, как целенаправленных систем, в
качестве основы для классификации МАС целесообразно рассматривать
типы отношений между агентами в МАС. Можно выделить следующие типы
отношений: полная согласованность (когерентность) целей: сотрудничество
на основе взаимной выгоды, нейтральность, конкуренция, антагонизм.
Полная согласованность целей агентов имеет место, если МАС
изначально создается для решения общей задачи. В этом случае агенты не
имеют собственных целей и намерений, отличных от целей МАС в целом.
Состав и организационная структура (распределение ролей между агентами)
таких МАС, как правило, определяются на этапе их проектирования, однако,
при необходимости могут меняться в процессе функционирования.
Отношение кооперации (сотрудничества) имеет место, когда агенты
изначально имеют собственные цели, однако в процессе функционирования
приходят к заключению о целесообразности сотрудничества. При ведении
переговоров используются различные протоколы.
Нейтральными по отношению к некоторому агенту являются агенты, не
оказывающие никакого влияния на реализацию его целенаправленного
поведения и, как следствие, не представляющие для него интереса.
Конкуренция между агентами в МАС возникает в ситуациях, когда
нескольким агентам в процессе их функционирования требуется один и тот
же ресурс. Под ресурсом понимается любая сущность (физическая или
виртуальная), необходимая агенту для реализации его планов. Проблемные
области, в которых между агентами имеет место отношение конкуренции
можно разделить на два типа: области, конкурентные по своей сути, области,
в которых отношение конкуренции возникает ситуативно в процессе
функционирования.
Для проблемных областей первого типа отношение конкуренции между
агентами является неотъемлемой характеристикой. В качестве механизма
разрешения конфликтных ситуаций, как правило, используются переговоры.
Антагонистические отношения имеют место в системах, в которых
агенты изначально создаются для противодействия другим агентам. К таким
МАС относятся системы военного назначения: коллективы боевых роботов,
беспилотные летательные аппараты и т. п.
С точки зрения уровня интеллекта, выделяют следующие типы агентов:
реактивные, обдумывающие решения и гибридные.
Реактивные агенты реализуют рефлекторный тип поведения, т. е.
функционируют по принципу «ситуация–действие».
Агенты, обдумывающие решения, используют явные символьные
модели окружающего мира и принимают решения, используя процедуры
поиска в пространстве состояний, планирования действия и прогнозирования
будущих состояний мира.
Гибридные агенты представляют собой комбинацию двух указанных
выше типов.
В функциональном отношении ИА представляют собой многоуровневые
системы, включающие уровни реактивного поведения, оценки ситуации,
прогнозирования, планирования автономных и кооперативных действий. В
ряде работ архитектуры агентов классифицируются на основе анализа связей
функциональных уровней агента с подсистемой восприятия и
исполнительными подсистемами. В соответствии с этим подходом выделяют
горизонтально и вертикально организованные архитектуры.
В горизонтально организованной архитектуре все уровни агента имеют
непосредственный доступ к уровню восприятия и действий.
В вертикально организованной архитектуре доступ к подсистеме
восприятия и исполнительным подсистемам имеет только один уровень, а
остальные могут взаимодействовать только со смежными уровнями.
В [54] выделено пять типов архитектур ИА: простая реактивная
архитектура, реактивная архитектура с моделями, управляемая целями
архитектура; архитектура, основанная на полезности, и архитектура
обучающегося агента.
В простой реактивной архитектуре все знания агента представлены
набором продукционных правил вида «Если <ситуация>, то <действие>», а
все решения принимаются по схеме «стимул-реакция». При
функционировании агента в сложных средах решение должно приниматься с
учетом хранимой в его памяти предыстории. Кроме того, агент должен
обладать знаниями (моделями), позволяющими ему прогнозировать развитие
мира и возможные результаты собственных действий. Такие возможности
реализованы в архитектуре с использованием моделей.
Однако в данной архитектуре предыстория и ожидаемые результаты
действий используются лишь на этапе идентификации ситуации. Выбор
решений по-прежнему осуществляется с помощью продукционных правил по
ситуационному принципу, поэтому данная архитектура по своей сути
остается реактивной.
В рассмотренных выше архитектурах цели функционирования агента не
зафиксированы явно в его памяти, т. е. неизвестны ему. При
функционировании в открытых средах цели могут динамически меняться,
поэтому в архитектуре необходим механизм гибкого учета текущей цели.
Архитектура, управляемая целями, использует явно представленные в
памяти агента цели.
Целенаправленные действия агента в сложных средах, как правило,
требуют планирования – построения последовательностей шагов,
направленных на достижение целевого состояния. При этом в общем случае
в каждой ситуации существует не единственный возможный план действий.
Поэтому агент должен оценивать и сравнивать эффективность различных
вариантов действий с учетом их полезности.
Архитектура обучающегося агента в дополнение к основному
реализующему компоненту содержит обучающий компонент, компонент
критики и генератор проблем.
В качестве формальных моделей ИА, как правило, используются
различные модальные логики. ИА, как интенсиональные системы,
описываются в терминах ментальных состояний агента: убеждения,
намерения и т. п.
К знаниям относят постоянные знания агента о себе и внешнем мире
(включая других агентов), которые остаются неизменными на протяжении
всего жизненного цикла агента.
Убеждения (мнения) – это знания агента, которые могут меняться в
процессе его функционирования.
Желания – состояния мира (включая самого агента), достижение
которых агент считает для себя желательным.
Цели – состояния мира (включая самого агента), к которым агент
стремится в данный момент времени. Отличие целей от желаний состоит в
том, что желания могут быть противоречивыми и агент, зная об этом, не
ставит себе целью осуществить все желания.
Намерения – действия, которые агент собирается выполнить для
достижения своих целей или в силу взятых на себя обязательств.
Планы являются, по существу, синонимом намерений и представляют
собой последовательность действий, переводящих агента из текущего
состояния в целевое.
Обязательства – задачи, которые агент берет на себя в рамках
кооперации с другими агентами по их просьбе, поручению или в результате
реализации переговоров о координации совместных действий
(сотрудничестве).
Классическая логика предикатов первого порядка не позволяет
адекватно работать с рассмотренными выше ментальными категориями.
В конце 80-х и в начале 90-х годов было разработано значительное
число агентных систем и инструментальных средств для их разработки [55,
56].
Для стандартизации агентных технологий в 1996 г. была создана
международная организация FIPA (Foundation for Intelligent Physical Agents),
поставившая целью разработку открытых спецификаций, поддерживающих
взаимодействия разнородных агентов и агентных сервисов [57], которая
играет ключевую роль в разработке стандартов МАС. Эталонная модель
управления агентами FIPA определена как множество логических
компонентов, предоставляющих набор возможностей, которые могут
комбинироваться в физических реализациях агентных платформ.
Агентная платформа определяет инфраструктуру, в которую могут
быть помещены программные агенты. Согласно спецификации FIPA
агентная платформа включает три основных компонента: систему
управления агентами (Agent Management System, AMS), службу каталогов
(Directory Facilitator, DF) и службу транспортировки сообщений (Message
Transport Service, MTS). Структура агентной платформы по FIPA
представлена на рис. 3.21.
Система управления агентами (AMS) представляет собой системного
агента, управляющего доступом к агентной платформе и ее использованием.
AMS является обязательным компонентом агентной платформы и
обеспечивает два ее базовых сервиса: сервис жизненного цикла агентов и
сервис «белых страниц» (поиск агентов по именам). На каждой платформе
может существовать только один AMS. Для выполнения своих функций AMS
поддерживает каталог идентификаторов агентов (AID) и базу данных
состояний агентов. Каждый агент должен зарегистрироваться у AMS, чтобы
получить свой уникальный AID.

Стороннее

ПО Агентная платформа 1
Система Служба
управления каталогов
Агенты
агентами

Служба транспортировки сообщений

Служба транспортировки сообщений

Агентная платформа 2

Рис. 3.21. Структура агентной платформы по FIPA


Служба каталогов предоставляет агентам сервис «желтых страниц» и
не является обязательным компонентом агентной платформы. Агенты могут
регистрировать свои сервисы и выполнять поиск в службе каталога
с целью найти агента, предоставляющего заданные сервисы. Службы
каталогов могут объединяться в федерации, при этом на одной агентной
платформе может существовать несколько таких служб.
Служба транспортировки сообщений – программный компонент,
управляющий всеми обменами сообщениями как внутри данной платформы,
так и с удаленными платформами. Поддерживает заданный по умолчанию
метод коммуникации между агентами на различных агентных платформах.
Основным «действующим лицом» на агентной платформе является
агент. Он реализует одну или более сервисных возможностей в
унифицированной и интегрированной исполнительной модели, которая
может включать доступ к внешнему программному обеспечению, людям-
пользователям и коммуникационные возможности.
Агент должен иметь, как минимум, одного владельца, т. е. обязательно
должна быть определена его принадлежность к организации или человеку-
владельцу. Агент может поддерживать несколько понятий идентичности.
Идентификатор агента (Agent Identifier – AID) однозначно
идентифицирует его в рамках универсума агентов. При этом каждый агент
может регистрироваться с множеством транспортных адресов, по которым с
ним можно контактировать. AID задается расширяемой совокупностью пар
«параметр-значение», определяющих его имя, транспортные адреса и
адреса сервиса разрешения имен. Обязательным параметром является только
имя агента.
Агент может выполнять роль брокера ресурсов и обеспечивать доступ к
любому (неагентному) программному обеспечению.
Особенности реализации агентной платформы определяются
разработчиками конкретных агентных систем и не являются предметом
стандартизации FIPA. Язык агентных коммуникаций FIPA – FIPA Agent
Communication Language (FIPA ACL) – разработан на основе теории речевых
актов и результатов, полученных в проекте KSE.
JADE (Java Agent DEvelopment Framework) [55] – наиболее популярная
и быстро развивающаяся агентная платформа, разработанная группой
специалистов из научно-исследовательского института CSELT и
университета г. Парма. Она распространяется в соответствии с лицензией на
программное обеспечение с открытым исходным кодом для некоммерческого
использования.
JADE реализована на языке Java и предоставляет набор системных
сервисов агентной платформы, соответствующих спецификациям FIPA:
систему управления агентами, службу каталогов и систему транспортировки
сообщений. Общение агентов осуществляется путем посылки сообщений на
языке FIPA ACL.
Агентная платформа может быть распределена между несколькими
хостами, при этом на каждом хосте исполняется только одно Java-
приложение (и, следовательно, только одна виртуальная Java-машина JVM).
Каждая JVM обеспечивает среду параллельного исполнения нескольких
агентов В базовом варианте каждый агент исполняется в собственном потоке
вычислений (thread), однако агенту часто необходимо выполнять
параллельные задачи. Поэтому помимо многопоточности, предоставляемой
самим языком Java, JADE также поддерживает планирование поведения
(задач) агента.
Агентная платформа предоставляет пользователю графический
интерфейс (GUI) для удаленного управления и мониторинга состояния
агентов, позволяющий создавать, запускать на исполнение, останавливать и
перезапускать агентов.
Согласно подходу FIPA, стандартизации подлежит только внешнее
поведение компонент системы. Детали реализации и внутренняя архитектура
определяются самими разработчиками мультиагентных систем. Поэтому
модель агента в JADE является достаточно общей и позволяет разработчикам
реализовывать различные архитектуры агентов (реактивные, BDI-типа и др.).
Следует заметить, что мультиагентные технологии хотя и медленно, но
начинают внедряться в реальные системы. При этом они все чаще
рассматриваются не только как системы искусственного интеллекта, но и как
стиль программирования [56].

Контрольные вопросы
1. Что такое РС?
2. Каким образом можно классифицировать РС?
3. Перечислите и охарактеризуйте основные сетевые архитектурные
стили.
4. Что такое сокет?
5. Каким образом процессы взаимодействуют через сокеты?
6. Что такое вызов удаленных процедур?
7. Каково назначение заглушек?
8. Что такое маршаллинг?
9. Перечислите основные достоинства и недостатки RPC.
10. Каким образом взаимодействуют удаленные объекты?
11. Как работает RMI?
12. Зачем нужно промежуточное ПО?
13. Что такое распределенная файловая система?
14. Что такое «Архитектура "клиент-сервер»?
15. В чем различие между архитектурой с тонким и толстым клиентом?
16. Что такое «Многозвенное приложение»?
17. В чем состоит идея микроядернй архитектуры?
18. Перечислите и охарактеризуйте альтернативные подходы к
удаленному выполнению заданий.
19. Что такое кластер?
20. Что такое грид?
21. Охарактеризуйте стек протоколов Грид.
22. Для чего нужен Globus Toolkit?
23. Перечислите и охарактеризуйте основные механизмы работы с
сообщениями.
24. Для решения каких задач используют MPI?
25. Что такое очереди сообщений?
26. Как работает электронная почта?
27. Что такое распределенные системы документов?
28. Как работает Веб-сервер?
29. Что такое CGI?
30. Что такое URL?
31. Что такое Lotus Notes?
32. Определите понятие виртуализации.
33. Что такое виртуальная машина?
34. Что такое паравиртуализация виртуализация?
35. Что такое полная виртуализация?
36. Что такое виртуализация на уровне ОС?
37. Что такое виртуализация серверов?
38. Зачем нужен гипервизор?
39. Что такое облачные вычисления?
40. Перечислите и охарактеризуйте основные типы облачных сервисов.
41. Что такое частные облака?
42. Какие элементы включает в себя агентная платформа FIPA?

Вам также может понравиться