Развитие платформы облачных вычислений Microsoft Windows Azure Лекция 1 Новые принципы архитектуры современных программных систем Сафонов Владимир Олегович Профессор кафедры информатики Заведующий лабораторией Java-технологии Санкт-Петербургский государственный университет WWW:
1.Сафонов В.О. Платформа облачных вычислений Microsoft Windows Azure. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2012, 235 с. 2.Сафонов В.О. Платформа облачных вычислений Microsoft Windows Azure. Учебный курс. декабрь Сафонов В.О. Основы современных операционных систем. Учебный курс. 4.Сафонов В.О. Основы современных операционных систем. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2011, 583 с. 5.Сафонов В.О. Архитектуры и модели программ и знаний. Спецкурс для студентов 4 курса &Login&= 480&Login& (C) Сафонов В.О Литература по курсу
Развитие ПО для облачных вычислений и центров обработки данных Магазины приложений для новых ОС на основе Web- сайтов Инструменты надежных и безопасных вычислений (trustworthy computing) Инструменты верификации программ (C) Сафонов В.О Новые виды программного обеспечения
Интеграция, использование и распространение ПО через Web Развитие надежных и безопасных вычислений (trustworthy computing) Развитие многоязыковых платформ с единым промежуточным кодом Развитие виртуализации ресурсов и сред Развитие облачных вычислений Перенос популярных видов приложений и инструментов в облака Унификация пользовательских интерфейсов для всех видов компьютеров (настольных, ноутбуков, планшетов, мобильных устройств), развитие интерфейсов типа multi-touch (C) Сафонов В.О Новые черты программных систем
Java (Oracle): ныне – многоязыковая платформа для разработки программ с единым бинарным промежуточным кодом (байт- кодом) в постфиксном формате и единой виртуальной машиной (JVM), поддерживающая программирование на языках Java, Ruby, Python и др. (всего более 30 единобайткодных языков). Поддерживает JIT-компиляцию, профилирование программ, современные динамические языки с расширяемыми типами.NET (Microsoft): многоязыковая платформа с единым бинарным промежуточным кодом (CIL) и единой виртуальной машиной (CLR). Поддерживает JIT-компиляцию, профилирование программ, современные динамические языки с расширяемыми типами Обе платформы уделяют особое внимание надежности и безопасности, на основе исполнения управляемого кода и динамического контроля типов Обе платформы поддерживают разработку Web-сервисов и содержат базовые средства для реализации облачных вычислений (C) Сафонов В.О Развитие популярных платформ для разработки программ
Масштабируемость Следование стандартам коммуникации, представления и передачи данных Возможность переноса в облако Сервисная ориентированность (SOA) Возможность быстрой интеграции с другими существующими продуктами в новое программное решение Повышенная безопасность и надежность (C) Сафонов В.О Важнейшие современные характеристики программных продуктов
Клиент (client) – пользователь и (или) компьютер, использующий какие-либо программные сервисы; как правило, реализован как Web-клиент Сервер (server) – компьютер или центр обработки данных, предоставляющий программные сервисы через Web Тонкий клиент (thin client) – клиент Web-сервиса с минимальным пользовательским интерфейсом, общающийся с Web-сервисом только через браузер и протокол HTTP Rich client (полнофункциональный клиент) – клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; пример ПО для поддержки rich clients: Microsoft Silverlight Слой (layer) – крупная независимая компонента архитектуры ПО; данная концепция устаревает Уровень абстракции (abstraction layer) – горизонтальный слой (номер N); совокупность модулей, реализация которых использует только модули уровня N- 1 (N > 0) – данная концепция несколько устарела, современные архитектуры более сложны Аспект – совокупность рассредоточенных фрагментов кода, реализующих некоторую (сквозную) функциональность, например, проверки безопасности (C) Сафонов В.О Развитие современных основных понятий архитектуры ПО (1/3)
Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их коммуникацию Ярус (tier) – слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web Многоярусная архитектура (multi-tier architecture) – архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными (C) Сафонов В.О Развитие современных основных понятий архитектуры ПО (2/3)
Многоклиентская архитектура (multi-tenant architecture) – архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants – букв. клиенты, арендаторы). Пример: Web-сервис С точки зрения рассмотренных концепций, облачные вычисления соответствуют принципам multi-tiered and multi-tenant architecture Что касается abstraction layers, для современной сложной архитектуры ПО данный термин несколько устарел, так как все модули ПО повторно используемы, и в различных системах различные ярусы (слои) могут иметь разные условные номера. Двумерная модель не в состоянии адекватно описать современное ПО (C) Сафонов В.О Развитие современных основных понятий архитектуры ПО (3/3)
(C) Сафонов В.О Пример многоярусной архитектуры: Ярусы презентации, бизнес-логики и данных
Сервис – компонента программы, непосредственно доступная пользователю Основной принцип: С точки зрения пользователя, программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web- интерфейсом Сервис-ориентированная модель должна быть расширяемой (пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов) Пользователи должны иметь возможность обращаться к сервисам через сеть с самых различных по своим возможностям устройств – desktop-машин, мобильных устройств и т.д. Метод реализации Web-сервисов (.NET, Java и др.) для пользователя несущественен Разработчик должен иметь возможность публикации своих Web-сервисов Поддержка SOA: -Microsoft SharePoint (простой инструмент для создания расширяемых Web-страниц и Web-сервисов); -UDDI (Universal Discovery, Description and Integration) – технология для публикации и поиска Web-сервисов (Microsoft) С данной точки зрения, облачные вычисления соответствуют принципам SOA (C) Сафонов В.О Развитие Service-Oriented Architecture (SOA)
SaaS – модель разработки программ, основанная на использовании лицензируемых программных сервисов по требованию клиентами, получающими (покупающими) лицензии у сервис-провайдеров Основная идея: использование ПО по требованию (on demand) по невысокой стоимости (вместо покупки полной лицензии на ПО для всех платформ) Характеристики SaaS: -Доступ к коммерческому ПО через сеть -Удаленное управление ПО пользователями через центральный Web-сайт -Использование модели one-to-many (multi-tenant application), т.е. использование одного приложения многими клиентами -Централизация управления версиями и обновлениями (пользователи могут загружать новые версии через сеть) -Интеграция программных сервисов в общий гибридный набор ПО, потребляемый пользователем, как mash-ups – гибридных Web-приложений С данной точки зрения, облачные вычисления соответствуют принципам SaaS и, по-видимому, являются их наилучшим воплощением (C) Сафонов В.О Развитие концепции Software-as-a-Service (SaaS)
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) Сафонов В.О Развитие cloud computing
Подход к разработке программ принципиально изменился Вместо индивидуальных изолированных разработок на собственном компьютере – разработка сетевых приложений и использование готовых сервисов через Web Распространение ПО через магазины приложений и через облака Будущее – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах - принципах SOA, SaaS, multi-tenancy, multi-tiering Всем этим принципам соответствует модель облачных вычислений Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход (.NET, Windows Azure) (C) Сафонов В.О Резюме
1.Проанализируйте используемое и разрабатываемое Вами программное обеспечение, с точки зрения соответствия парадигмам cloud computing и SOA 2.Проанализируйте новые тенденции в развитии архитектуры программных систем 3.Получите пробный академический доступ к Windows Azure и попробуйте ее использовать на простых примерах 4.Сформулируйте проблемы безопасности программ и данных для облачных вычислений – в чем преимущество данной модели для реализации безопасности, в чем ее подводные камни 5.Опубликуйте свое первое приложение в магазине приложений для Windows 8 (C) Сафонов В.О Домашнее задание к лекции 1