Развитие платформы облачных вычислений Microsoft Windows Azure Новые принципы архитектуры современных программных систем

advertisement
Развитие платформы облачных
вычислений Microsoft Windows Azure
Лекция 1
Новые принципы архитектуры современных
программных систем
Сафонов Владимир Олегович
Профессор кафедры информатики
Заведующий лабораторией Java-технологии
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org
Литература по курсу
1.
2.
3.
4.
5.
Сафонов В.О. Платформа облачных вычислений Microsoft
Windows Azure. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория
знаний, 2012, 235 с.
Сафонов В.О. Платформа облачных вычислений Microsoft
Windows Azure. Учебный курс.
http://www.intuit.ru/studies/courses/2314/614/info, декабрь 2011
Сафонов В.О. Основы современных операционных систем.
Учебный курс. http://www.intuit.ru/studies/courses/641/497/info
Сафонов В.О. Основы современных операционных систем. –
М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2011, 583 с.
Сафонов В.О. Архитектуры и модели программ и знаний.
Спецкурс для студентов 4 курса.
https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8
480&Login&=
(C) Сафонов В.О. 2013
Новые виды программного обеспечения
 Развитие ПО для облачных вычислений и центров
обработки данных
 Магазины приложений для новых ОС на основе Webсайтов
 Инструменты надежных и безопасных вычислений
(trustworthy computing)
 Инструменты верификации программ
(C) Сафонов В.О. 2013
Новые черты программных систем
 Интеграция, использование и распространение ПО
через Web
 Развитие надежных и безопасных вычислений
(trustworthy computing)
 Развитие многоязыковых платформ с единым
промежуточным кодом
 Развитие виртуализации ресурсов и сред
 Развитие облачных вычислений
 Перенос популярных видов приложений и
инструментов в облака
 Унификация пользовательских интерфейсов для всех
видов компьютеров (настольных, ноутбуков,
планшетов, мобильных устройств), развитие
интерфейсов типа multi-touch
(C) Сафонов В.О. 2013
Развитие популярных платформ для
разработки программ
 Java (Oracle): ныне – многоязыковая платформа для разработки
программ с единым бинарным промежуточным кодом (байткодом) в постфиксном формате и единой виртуальной машиной
(JVM), поддерживающая программирование на языках Java, Ruby,
Python и др. (всего более 30 “единобайткодных” языков).
Поддерживает JIT-компиляцию, профилирование программ,
современные динамические языки с расширяемыми типами
 .NET (Microsoft): многоязыковая платформа с единым бинарным
промежуточным кодом (CIL) и единой виртуальной машиной
(CLR). Поддерживает JIT-компиляцию, профилирование
программ, современные динамические языки с расширяемыми
типами
 Обе платформы уделяют особое внимание надежности и
безопасности, на основе исполнения управляемого кода и
динамического контроля типов
 Обе платформы поддерживают разработку Web-сервисов и
содержат базовые средства для реализации облачных
вычислений
(C) Сафонов В.О. 2013
Важнейшие современные характеристики
программных продуктов
 Масштабируемость
 Следование стандартам коммуникации, представления
и передачи данных
 Возможность переноса в облако
 Сервисная ориентированность (SOA)
 Возможность быстрой интеграции с другими
существующими продуктами в новое программное
решение
 Повышенная безопасность и надежность
(C) Сафонов В.О. 2013
Развитие современных основных понятий
архитектуры ПО (1/3)
 Клиент (client) – пользователь и (или) компьютер, использующий какие-либо
программные сервисы; как правило, реализован как Web-клиент
 Сервер (server) – компьютер или центр обработки данных, предоставляющий
программные сервисы через Web
 Тонкий клиент (thin client) – клиент Web-сервиса с минимальным
пользовательским интерфейсом, общающийся с Web-сервисом только через
браузер и протокол HTTP
 Rich client (полнофункциональный клиент) – клиент Web-сервиса, имеющий
полнофункциональный GUI и общающийся с Web-сервисом через слой
промежуточного программного интерфейса (middleware), обеспечивающий его
функциональность; пример ПО для поддержки rich clients: Microsoft Silverlight
 Слой (layer) – крупная независимая компонента архитектуры ПО; данная
концепция устаревает
 Уровень абстракции (abstraction layer) – “горизонтальный слой” (номер N);
совокупность модулей, реализация которых использует только модули уровня N1 (N > 0) – данная концепция несколько устарела, современные архитектуры
более сложны
 Аспект – совокупность рассредоточенных фрагментов кода, реализующих
некоторую (сквозную) функциональность, например, проверки безопасности
(C) Сафонов В.О. 2013
Развитие современных основных
понятий архитектуры ПО (2/3)
 Промежуточное программное обеспечение (middleware) –
совокупность слоев ПО, лежащих между клиентом и сервером
и обеспечивающих их коммуникацию
 Ярус (tier) – слой программного обеспечения, реализующий
какую-либо независимую часть его архитектуры; например:
business tier – реализация бизнес-логики; Web tier – реализация
взаимодействия с Web
 Многоярусная архитектура (multi-tier architecture) –
архитектура ПО, при которой презентация результатов,
обработка и управление данными реализованы как отдельные
процессы. Пример: Использование middleware для
взаимодействия с сервером и СУБД для взаимодействия с
данными
(C) Сафонов В.О. 2013
Развитие современных основных
понятий архитектуры ПО (3/3)
 Многоклиентская архитектура (multi-tenant architecture) –
архитектура клиент-серверного ПО, при которой один
экземпляр серверного ПО, исполняемый на сервере,
обслуживает несколько клиентов (tenants – букв. клиенты,
арендаторы). Пример: Web-сервис
 С точки зрения рассмотренных концепций, облачные
вычисления соответствуют принципам multi-tiered and
multi-tenant architecture
 Что касается abstraction layers, для современной сложной
архитектуры ПО данный термин несколько устарел, так как
все модули ПО повторно используемы, и в различных
системах различные ярусы (слои) могут иметь разные
условные номера. Двумерная модель не в состоянии
адекватно описать современное ПО
(C) Сафонов В.О. 2013
Пример многоярусной архитектуры:
Ярусы презентации, бизнес-логики и данных
(C) Сафонов В.О. 2013
Развитие 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
(C) Сафонов В.О. 2013
Развитие концепции Software-as-a-Service
(SaaS)
 SaaS – модель разработки программ, основанная на использовании
лицензируемых программных сервисов “по требованию” клиентами,
получающими (покупающими) лицензии у сервис-провайдеров
 Основная идея: использование ПО по требованию (on demand) по невысокой
стоимости (вместо покупки полной лицензии на ПО для всех платформ)
 Характеристики SaaS:
- Доступ к коммерческому ПО через сеть
- Удаленное управление ПО пользователями через центральный Web-сайт
- Использование модели “one-to-many” (multi-tenant application), т.е.
использование одного приложения многими клиентами
- Централизация управления версиями и обновлениями (пользователи могут
загружать новые версии через сеть)
- Интеграция программных сервисов в общий гибридный набор ПО,
потребляемый пользователем, как mash-ups – гибридных Web-приложений
 С данной точки зрения, облачные вычисления соответствуют принципам SaaS
и, по-видимому, являются их наилучшим воплощением
(C) Сафонов В.О. 2013
Развитие cloud computing
 Cloud computing - ”облачные” вычисления
 “Облако” (cloud) –широко используемая метафора для изображения
сервисов, предоставляемых через Web
 Облачные вычисления – модель вычислений, основанная на динамически
масштабируемых(scalable) виртуальных (virtual) ресурсах - данных,
приложениях, Web-сайтах, виртуальных машинах, ОС и др., - которые
доступны и используются как сервисы через Интернет и реализуются с
помощью мощных центров обработки данных (data centers)
 С точки зрения пользователей, существуют “облака” (общедоступные,
частные, облака сообществ) , предоставляемые различными компаниями
для использования мощных вычислительных ресурсов, которых нет у
индивидуального пользователя
 Перспективы облачных вычислений весьма многообещающие
 Наиболее популярная “облачная” платформа – Microsoft Windows Azure
(облачная ОС) и Microsoft Azure Services Platform (реализованная на
основе Microsoft.NET)
 В настоящее время все крупные компании (Microsoft, IBM, HP, Dell,
Oracle и др.) разработали свои системы облачных вычислений; имеется
тенденция к интеграции этих корпоративных систем в единое доступное
пользователю “облако” - InterCloud
(C) Сафонов В.О. 2013
Резюме
 Подход к разработке программ принципиально изменился
 Вместо индивидуальных изолированных разработок на
собственном компьютере – разработка сетевых приложений и
использование готовых сервисов через Web
 Распространение ПО через магазины приложений и через
облака
 Будущее – за сетевым и распределенным программным
обеспечением, основанным на Web-сервисах,
многоклиентских и многоярусных архитектурах - принципах
SOA, SaaS, multi-tenancy, multi-tiering
 Всем этим принципам соответствует модель облачных
вычислений
 Microsoft – одна из ведущих компаний, поддерживающих и
развивающих этот новый подход (.NET, Windows Azure)
(C) Сафонов В.О. 2013
Домашнее задание к лекции 1
1.
Проанализируйте используемое и разрабатываемое Вами
программное обеспечение, с точки зрения соответствия
парадигмам cloud computing и SOA
2. Проанализируйте новые тенденции в развитии архитектуры
программных систем
3. Получите пробный академический доступ к Windows Azure и
попробуйте ее использовать на простых примерах
4. Сформулируйте проблемы безопасности программ и данных
для облачных вычислений – в чем преимущество данной модели
для реализации безопасности, в чем ее “подводные камни”
5. Опубликуйте свое первое приложение в магазине приложений
для Windows 8
(C) Сафонов В.О. 2013
Download