Сервис

advertisement
АРХИТЕКТУРА
ИНФОРМАЦИОННЫХ СИСТЕМ
ЛЕКЦИЯ 11.
ОБЛАЧНАЯ АРХИТЕКТУРА ИНФОРМАЦИОННЫХ СИСТЕМ
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
• Б. Я. Советов, А. И. Водяхо, В. А. Дубенецкий, В. В.
Цехановский. Архитектура информационных систем:
учебник для студ. учреждений высш. проф. образования. М. : Издательский центр «Академия», 2012.
• А.В. Данилин, А.И. Слюсаренко. Архитектура предприятия.
М: ИНТУИТ, 2007 http://www.intuit.ru/department/itmngt/entarc/
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1. Cloud Computing – A Practical Approach,
Anthony T. Velte, Toby J. Velte, Robert
Elsenpeter, McGraw Hill, 2009
2. Cloud Computing with the Windows Azure
Platform, Roger Jennings, Wiley, 2009
3. Сафонов В.О. Основы современных
операционных систем. Учебный курс.
http://www.intuit.ru/department/os/bmos/
4. Сафонов В.О. Основы современных
операционных систем. – М.: ИНТУИТ.РУ.
БИНОМ. Лаборатория знаний, 2011, 583 с.
НЕКОТОРЫЕ ВИДЫ СОВРЕМЕННОГО
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Клиент-серверные системы
Web – сервисы и Web-приложения
Интегрированные распределенные решения (solutions)
Встроенные системы
Системы реального времени
Программное обеспечение мобильных устройств
Программное обеспечение носимых (wearable) компьютеров
ХАРАКТЕРНЫЕ ЧЕРТЫ СОВРЕМЕННЫХ
ПРОГРАММНЫХ СИСТЕМ
Ориентация на использование в WWW
Универсальное представление программных моделей (UML) и данных (XML)
Повышенные требования к безопасности и надежности (соблюдение принципов TWC – Trustworthy Computing)
Интеграция различных языков программирования, инструментальных средств, баз данных и знаний в единую
инфраструктуру
Проектирование и разработка программных компонент для многократного использования (software reusability)
Спецификация и реализация сервисов (Web-сервисов или Интранет-сервисов) ; поддержка сервисориентированной архитектуры (SOA)
Виртуализация ресурсов и сред – аппаратуры, ОС, платформы, инфраструктуры
Масштабируемость – предоставление идентичных или аналогичных сервисов для различных классов
устройств – настольных и портативных компьютеров, мобильных устройств и др.
Предоставление пользователям Web-сервисов в виде “облачных вычислений”
Все более широкое использование знаний (knowledge) для представления семантики информации в Web и для
разработки программных решений (intelligent solutions); необходимость интеграции методов инженерии
программ и инженерии знаний
СОВРЕМЕННЫЕ ПЛАТФОРМЫ ДЛЯ
РАЗРАБОТКИ ПРОГРАММ
 Java (Sun Microsystems, 1995) – платформа для разработки программ на
объектно-ориентированном языке Java, программы на котором
компилируются в Java байт-код (до сих пор имеет статус ведомственного
стандарта Sun)
 .NET (Microsoft, 2000) – многоязыковая объектно-ориентированная
платформа для разработки программ с общим промежуточным языком
(CIL), общей инфтаструктурой языков (CLI) и единым представлением
данных на основе XML (стандарты ISO/ ECMA). Язык C# - наиболее
удобный язык программирования для .NET, но не единственный и не
обязательный для использования
 Обе платформы уделяют особое внимание надежности и безопасности,
на основе исполнения управляемого кода и динамического контроля
типов
 Обе платформы поддерживают разработку Web-сервисов, содержат
базовые средства для реализации cloud computing
 Другие современные платформы и языки: Ruby, Python, Scala и др.
СЕРВИС-ОРИЕНТИРОВАННАЯ
АРХИТЕКТУРА
Сервис-ориентированная архитектура (SOA) –
• модульный подход к разработке программного
обеспечения, основанный на использовании сервисов со
стандартизированными интерфейсами
ПОНЯТИЕ О SERVICE-ORIENTED
ARCHITECTURE (SOA)
• Сервис – компонента программы, непосредственно доступная пользователю
• Пример сервиса: Получение прогноза погоды через Интернет
• Основной принцип: С точки зрения пользователя, программный продукт представляет
собой набор простых в использовании Web-сервисов с удобным графическим Webинтерфейсом
• Сервис-ориентированная модель должна быть расширяемой (пользователь должен
иметь возможность добавить новые сервисы или изменить набор доступных сервисов)
• Пользователи должны иметь возможность обращаться к сервисам через сеть с самых
различных по своим возможностям устройств – desktop-машин, мобильных устройств и
т.д.
• Метод реализации Web-сервисов (.NET, Java и др.) для пользователя несущественен
• Разработчик должен иметь возможность публикации своих Web-сервисов
• Поддержка SOA:
- Microsoft SharePoint (простой инструмент для создания расширяемых Web-страниц и
Web-сервисов);
- UDDI (Universal Discovery, Description and Integration) – технология для публикации и
поиска Web-сервисов (Microsoft)
ЦЕЛИ ИСПОЛЬЗОВАНИЯ SOA
Цели применения SOA
• сокращение издержек при разработке приложений, за
счет упорядочивания процесса разработки;
• расширение повторного использования кода;
• независимость от используемых платформ,
инструментов, языков разработки;
• повышение масштабируемости создаваемых систем;
• улучшение управляемости создаваемых систем.
ПРИНЦИПЫ SOA:
архитектура не привязана к какой-то определенной технологии
независимость организации системы от используемой
вычислительной платформы
независимость организации системы от применяемых языков
программирования
использование сервисов, независимых от конкретных
приложений, с единообразными интерфейсами доступа к ним
организация сервисов как слабосвязанных компонентов для
построения систем
ОБЛАЧНЫЕ ИНФОРМАЦИОННЫЕ
СИСТЕМЫ
Облачные вычисления (англ. cloud
computing) — технология
распределённой обработки данных, в
которой компьютерные ресурсы и
мощности предоставляются
пользователю как Интернет-сервис
Облако — это крупный дата-центр или
сеть взаимосвязанных между собой
серверов
КАТЕГОРИИ ИНТЕРНЕТ-СЕРВИСОВ
(«ОБЛАЧНЫХ СЕРВИСОВ»)
инфраструктура как сервис (Infrastructure as a
Service, IaaS);
платформа как сервис (Platform as a Service,
PaaS);
программное обеспечение как сервис
(Software as a service, SaaS).
ТИПЫ ОБЛАЧНЫХ
ИНФОРМАЦИОННЫХ СИСТЕМ
Типы облаков
•публичные
•частные
•виртуальные частные
ФУНКЦИИ И РОЛЬ СЕРВИСОВ
ОБЛАЧНЫЕ ВЫЧИСЛЕНИЯ
Сервис
(Развертывание и
предоставление)
Платформа
(Гипервизор)
Инфраструктура
(Фабрика)
•
•
•
Масштабирование компонентов сервиса
Автоматическая балансировка нагрузки
Гостевая кластеризация
•
Динамическая память
•
Добавление/изменение хранилищ на лету
•
•
•
Автоматическое развертывание Hyper-V
Автоматическое развертывание Scale-Out File Server
Добавление внешних компонентов по SMI-S
(сеть, хранилища)
ОБЛАЧНЫЕ ВЫЧИСЛЕНИЯ
ПОНЯТИЕ О SOFTWARE-AS-A-SERVICE
(SAAS)
• SaaS – модель разработки программ, основанная на использовании
лицензируемых программных сервисов “по требованию” клиентами,
получающими (покупающими) лицензии у сервис-провайдеров
• Термин SaaS возник в 1999 г.
• Основная идея: использование ПО по требованию (on demand) по
невысокой стоимости (вместо покупки полной лицензии на ПО для
всех платформ)
• Характеристики SaaS:
- Доступ к коммерческому ПО через сеть
- Удаленное управление ПО пользователями через центральный Webсайт
- Использование модели “one-to-many” (multi-tenant application), т.е.
использование одного приложения многими клиентами
- Централизация управления версиями и патчами (пользователи могут
загружать новые версии через сеть)
- - Постоянная интеграция программных сервисов в общий гибридный
набор ПО, потребляемый пользователем, как mash-ups – гибридных
Web-приложений
• С данной точки зрения, облачные вычисления соответствуют
принципам SaaS
ПОНЯТИЕ О CLOUD COMPUTING
• Cloud computing - ”облачные” вычисления
• “Облако” (cloud) – метафора для изображения сервисов,
предоставляемых через Интернет или другую
коммуникационную сеть (например, через ATM-сеть)
• Облачные вычисления – модель вычислений, основанная на
динамически масштабируемых(scalable) и виртуализованных
(virtual) ресурсах - данных, приложениях, ОС и др., - которые
доступны и используются как сервисы через Интернет и
реализуются с помощью мощных центров обработки данных
(data centers)
• С точки зрения пользователей, существуют “облака”
(общедоступные или частные) , предоставляемые различными
компаниями для использования мощных вычислительных
ресурсов, которых нет у индивидуального пользователя
• Недостаток: пользователь полностью зависит от “облака” и не
может управлять даже резервным копированием своих данных и
программ
ЭЛЕМЕНТЫ КОНЦЕПЦИИ
ОБЛАЧНЫХ ВЫЧИСЛЕНИЙ
• Инфраструктура как сервис (Infrastructure as a
Service)
• Платформа как сервис (Platform as a Service)
• Программное обеспечение как сервис
(Software as a Service)
• Другие элементы Интернет-технологий,
например: бизнес-приложения, доступные через
Интернет (отслеживание курсов акций и др.),
данные которых расположены на серверах
УРОВНИ КОМПОНЕНТ ОБЛАЧНЫХ
ВЫЧИСЛЕНИЙ
Уровень клиента
Уровень сервисов
•Клиентское оборудование и ПО, использующее облачные
вычисления, например, Android (ОС для мобильных устройств);
полнофункциональный клиент (Web-браузер)
•Сервисы, используемые через “облако”, например, электронные
платежи, поисковые системы, видеоигры
Уровень
приложений
•“Облачные” приложения, не требующие инсталляции на
компьютерах пользователей, например, Microsoft Online Services
Уровень
платформы
•Инструменты развертывания и использования приложений через
“облако”, без необходимости покупки необходимой для этого
аппаратуры и ПО; например, Microsoft.NET Azure Services Plalform
Уровень памяти
Уровень
инфраструктуры
•Инструменты хранения и резервного копирования данных,
предоставляемые через “облако”
•Предоставление через “облако” полной виртуальной платформы
как сервиса, например, Amazon EC2
АРХИТЕКТУРА ОБЛАЧНЫХ
ВЫЧИСЛЕНИЙ
Сервисы
Инфраструктура
Платформа
Память
Архитектор облака – главный разработчик архитектуры
Интегратор облака – Ответственный за объединение компонент
в облако
Компоненты облака - как правило, Web-сервисы
Облако может быть общедоступным или частным
РОЛИ В ОБЛАЧНЫХ ВЫЧИСЛЕНИЯХ
Поставщик облачных сервисов (как правило, центр
обработки данных – data center)
Пользователь
Производитель (vendor) оборудования или ПО,
используемых для облачных вычислений; например,
EMC – производитель систем хранения данных
СТАНДАРТЫ ОБЛАЧНЫХ
ВЫЧИСЛЕНИЙ
Приложения: Коммуникации (HTTP, XMPP); безопасность (SSL)
Клиенты: Браузеры (AJAX); offline-клиенты (HTML 5)
Реализации: Виртуализация (OMF)
Сервисы: Данные (XML)
ПЛАТФОРМЫ ОБЛАЧНЫХ
ВЫЧИСЛЕНИЙ
• Amazon's Elastic Compute Cloud
• IBM Computing on Demand or Blue Cloud
• Microsoft Azure
• Oracle Cloud
• Force.com cloud
• Google AppEngine
• Kaavo cloud
и многие другие.
АРХИТЕКТУРА WINDOWS AZURE
Windows Azure – облачная платформа, разработанная
фирмой Microsoft (по существу, операционная система и
набор инструментов “в облаке”).
Windows Azure обеспечивает хранение, использование и
модификацию данных и запуск программ только на
компьютерах центров обработки данных Microsoft.
Никакого программного обеспечения, кроме веббраузера, на пользовательских компьютерах не требуется
WINDOWS AZURE И ЦЕНТРЫ
ОБРАБОТКИ ДАННЫХ
ОРГАНИЗАЦИЯ РАБОТЫ
ПОЛЬЗОВАТЕЛЯ В WINDOWS AZURE
• С точки зрения пользователя, существуют две категории
приложений :
- внутренние (on-premises applications), исполняемые на
компьютере пользователя
- облачные (cloud applications), фактически исполняемые в
среде Windows Azure на компьютерах центра обработки
данных
• На пользовательском компьютере могут быть установлены
ОС Windows и, возможно, другие ОС.
• Независимо от этого, через Web-браузер пользователь
получает доступ к “Windows в облаке” – Windows Azure.
• Функционирование Windows Azure основано на Webсервисах .NET
• Windows Azure для хранения данных обеспечивает доступ к
аналогу СУБД Microsoft SQL Server “в облаке” – SQL Azure.
ОРГАНИЗАЦИЯ РАБОТЫ В WINDOWS
AZURE
КОМПОНЕНТЫ WINDOWS AZURE
• Основные компоненты Windows Azure :
– Fabric (интерфейс)
- Compute (вычисления)
- Storage (память)
- Config (конфигурация)
• Все компоненты – вычисления, память и интерфейс –
являются Web-сервисами .NET
• Сервис вычисления выполняет пользовательские
облачные приложения, сервис память хранит
пользовательские данные, сервис интерфейс
обеспечивает общие средства управления
приложениями, использующими облачную
платформу
КОМПОНЕНТЫ WINDOWS AZURE
СЕРВИС COMPUTE (ВЫЧИСЛЕНИЯ)
Сервис вычисления решает задачи исполнения огромного числа
(возможно, миллионов) пользовательских приложений самого
разного вида и назначения в едином облаке
Основная проблема сервиса вычисления и облачных вычислений в
целом – масштабирование
Данная проблема решается путем выполнения каждого
экземпляра пользовательского облачного приложения в своей
отдельной виртуальной машине
Данные виртуальные машины исполняются в среде 64-битовой ОС
Windows 2008 Server
СЕРВИС STORAGE (ПАМЯТЬ)
Сервис память предоставляет пользователю
средства работы с данными различной структуры
– большими бинарными объектами (blobs),
размером до 50 Гб, хранящимися в контейнерах,
таблицами (tables) и очередями (queues)
Работа со структурами данных реализована на
основе ADO.NET – библиотек поддержки
обработки структурированных данных в .NET
СЕРВИС FABRIC (ИНТЕРФЕЙС)
Сервис интерфейс реализован как большая группа машин, на
каждой из которых работает приложение – агент интерфейса
(fabric agent)
Сервис интерфейс в целом управляется программным
обеспечением, называемым контроллер интерфейса (fabric
controller)
Контроллер интерфейса взаимодействует с агентами
интерфейса, а также с сервисом память как с обычными
приложениями (поэтому детали представления данных от
контроллера интерфейса скрыты)
Контроллер интерфейса управляет каждым облачным
приложением с помощью конфигурационного файла в формате
XML.
СЕРВИСЫ .NET КАК ОСНОВА WINDOWS
AZURE
РЕЗЮМЕ
• Подход к разработке программ принципиально изменился
• Вместо индивидуальных изолированных разработок на
собственном компьютере – разработка сетевых
приложений и использование готовых сервисов через Web
• Будущее – за сетевым и распределенным программным
обеспечением, основанным на Web-сервисах,
многоклиентских и многоярусных архитектурах -принципах
SOA, SaaS, multi-tenancy, multi-tiering
• Всем этим принципам соответствует модель облачных
вычислений
• Microsoft – одна из ведущих компаний, поддерживающих и
развивающих этот новый подход (.NET, Windows Azure)
Download