Развитие платформы облачных вычислений 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