здесь - Интуит

Download Report

Transcript здесь - Интуит

Архитектура, возможности и методы
использования платформы облачных
вычислений Microsoft Windows Azure
Лекция 1
Обзор архитектур современных
программных систем
Сафонов Владимир Олегович
Профессор кафедры информатики
Заведующий лабораторией Java-технологии
Санкт-Петербургский государственный университет
Email: [email protected]
WWW: http://www.vladimirsafonov.org
Литература по курсу
1.
2.
3.
4.
5.
Cloud Computing – A Practical Approach, Anthony T. Velte,
Toby J. Velte, Robert Elsenpeter, McGraw Hill, 2009
Cloud Computing with the Windows Azure Platform, Roger
Jennings, Wiley, 2009
Сафонов В.О. Основы современных операционных
систем. Учебный курс.
http://www.intuit.ru/department/os/bmos/
Сафонов В.О. Основы современных операционных
систем. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний,
2011, 583 с.
Сафонов В.О. Архитектуры и модели программ и знаний.
Спецкурс для студентов 4 курса.
https://www.facultyresourcecenter.com/curriculum/pfv.asp
x?ID=8480&Login&=
(C) Сафонов В.О. 2011
Некоторые виды современного
программного обеспечения














Клиент-серверные системы
Web – сервисы и Web-приложения
Интегрированные распределенные решения (solutions)
Встроенные системы
Системы реального времени
Программное обеспечение мобильных устройств
Программное обеспечение носимых (wearable) компьютеров
Программное обеспечение промежуточного уровня (middleware)
ПО для облачных вычислений и центров обработки данных
ПО для компьютерных кластеров
ПО для виртуализации
ПО для управления информацией (information management)
ПО для управления знаниями (knowledge management)
ПО для научных вычислений (scientific computing)
(C) Сафонов В.О. 2011
Характерные черты современных
программных систем
 Ориентация на использование в WWW
 Универсальное представление программных моделей (UML) и
данных (XML)
 Повышенные требования к безопасности и надежности (соблюдение
принципов TWC – Trustworthy Computing)
 Интеграция различных языков программирования,
инструментальных средств, баз данных и знаний в единую
инфраструктуру
 Проектирование и разработка программных компонент для
многократного использования (software reusability)
 Спецификация и реализация сервисов (Web-сервисов или Интранетсервисов) ; поддержка сервис-ориентированной архитектуры (SOA)
 Виртуализация ресурсов и сред – аппаратуры, ОС, платформы,
инфраструктуры
 Масштабируемость – предоставление идентичных или аналогичных
сервисов для различных классов устройств – настольных и
портативных компьютеров, мобильных устройств и др.
 Предоставление пользователям Web-сервисов в виде “облачных
вычислений”
 Все более широкое использование знаний (knowledge) для
представления семантики информации в Web и для разработки
программных решений (intelligent solutions); необходимость
интеграции методов инженерии программ и инженерии знаний
(C) Сафонов В.О. 2011
Современные платформы для
разработки программ
 Java (Sun Microsystems, 1995) – платформа для разработки
программ на объектно-ориентированном языке Java, программы
на котором компилируются в Java байт-код (до сих пор имеет
статус ведомственного стандарта Sun)
 .NET (Microsoft, 2000) – многоязыковая объектноориентированная платформа для разработки программ с общим
промежуточным языком (CIL), общей инфтаструктурой языков
(CLI) и единым представлением данных на основе XML (стандарты
ISO/ ECMA). Язык C# - наиболее удобный язык программирования
для .NET, но не единственный и не обязательный для
использования
 Обе платформы уделяют особое внимание надежности и
безопасности, на основе исполнения управляемого кода и
динамического контроля типов
 Обе платформы поддерживают разработку Web-сервисов,
содержат базовые средства для реализации cloud computing
 Другие современные платформы и языки: Ruby, Python, Scala и др.
(C) Сафонов В.О. 2011
Характеристики, свойства и качества
программных продуктов
С точки зрения пользователя:
 Работоспособность, полезность
 Дружественный к пользователю интерфейс (преимущественно – Webинтерфейс)
 Надежность, безопасность, защита конфиденциальных данных
(Trustworthy Computing - TWC)
С точки зрения разработчика:
 Повторная используемость модулей; компонентно-ориентированное
программирование
 Модульность
 Эффективность (необходимо сформулировать ее критерии; всем
критериям одновременно удовлетворить невозможно)
 Переносимость
 Познаваемость (читаемость) ; легкость сопровождения
 Применение принципов TWC и SDLC (Security Development Life Cycle) при
проектировании и реализации
(C) Сафонов В.О. 2011
Классические элементы технологий
программирования
 Концепции (например, trustworthy
computing)
 Инструменты (например, FxCop, Spec#)
 Схемы организации процесса разработки
программ (например, CMM, CMMI, SDLC)
(C) Сафонов В.О. 2011
Некоторые современные основные понятия (1/3)
 Клиент (client) – пользователь и (или) компьютер, использующий какие-либо
программные сервисы
 Сервер (server) – компьютер или центр обработки данных, предоставляющий
программные сервисы
 Тонкий клиент (thin client) – клиент Web-сервиса с минимальным
пользовательским интерфейсом – не имеющий состояния, сеанса,
полнофункционального GUI и общающийся с Web-сервисов только через
браузер и протокол HTTP посредством отправки HTTP-запросов и получения
HTML-страниц
 Rich client (полнофункциональный клиент) – клиент Web-сервиса, имеющий
полнофункциональный GUI и общающийся с Web-сервисом через слой
промежуточного программного интерфейса (middleware), обеспечивающий его
функциональность; примеры ПО для поддержки rich clients: Microsoft Silverlight,
Oracle JavaFX
 Слой (layer) – крупная независимая компонента архитектуры ПО
 Уровень абстракции (abstraction layer) – “горизонтальный слой” (номер N);
совокупность модулей, реализация которых использует только модули уровня
N-1 (N > 0).
 Вертикальный срез (аспект) – совокупность рассредоточенных фрагментов
кода, реализующих (сквозную) функциональность, например, проверку
безопасности
(C) Сафонов В.О. 2011
Некоторые современные основные
понятия (2/3)
 Промежуточное программное обеспечение (middleware) –
совокупность слоев ПО, лежащих между клиентом и сервером
и обеспечивающих их взаимодействие, например, поддержку
сетевых коммуникационных протоколов
 Ярус (tier) – слой программного обеспечения, реализующий
какую-либо независимую часть его архитектуры; например:
business tier – реализация бизнес-логики; Web tier – реализация
взаимодействия с Web
 Многоярусная архитектура (multi-tier architecture) –
архитектура ПО, при которой презентация результатов,
обработка и управление данными реализованы как отдельные
процессы. Пример: Использование middleware для
взаимодействия с сервером и СУБД для взаимодействия с
данными
(C) Сафонов В.О. 2011
Некоторые современные основные
понятия (3 / 3)
 Многоклиентская архитектура (multi-tenant architecture) –
архитектура клиент-серверного ПО, при которой один
экземпляр серверного ПО, исполняемый на сервере,
обслуживает несколько клиентов (tenants – букв. клиенты,
арендаторы). Пример: Web-сервис
 С точки зрения рассмотренных концепций, облачные
вычисления соответствуют принципам multi-tiered and
multi-tenant architecture
 Что касается abstraction layers, для современной сложной
архитектуры ПО данный термин несколько устарел, так как
все модули ПО повторно используемы, и в различных
системах различные ярусы (слои) могут иметь разные
условные номера. Двумерная модель не в состоянии
адекватно описать современное ПО
(C) Сафонов В.О. 2011
Пример многоярусной архитектуры (Wikipedia)
(C) Сафонов В.О. 2011
Понятие о 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) Сафонов В.О. 2011
Понятие о Software-as-a-Service (SaaS)
 SaaS – модель разработки программ, основанная на использовании
лицензируемых программных сервисов “по требованию” клиентами,
получающими (покупающими) лицензии у сервис-провайдеров
 Термин SaaS возник в 1999 г.
 Основная идея: использование ПО по требованию (on demand) по невысокой
стоимости (вместо покупки полной лицензии на ПО для всех платформ)
 Характеристики SaaS:
- Доступ к коммерческому ПО через сеть
- Удаленное управление ПО пользователями через центральный Web-сайт
- Использование модели “one-to-many” (multi-tenant application), т.е.
использование одного приложения многими клиентами
- Централизация управления версиями и патчами (пользователи могут
загружать новые версии через сеть)
- - Постоянная интеграция программных сервисов в общий гибридный набор
ПО, потребляемый пользователем, как mash-ups – гибридных Web-приложений
 С данной точки зрения, облачные вычисления соответствуют принципам SaaS
(C) Сафонов В.О. 2011
Понятие о cloud computing
 Cloud computing - ”облачные” вычисления
 “Облако” (cloud) –широко используемая метафора для изображения сервисов,
предоставляемых через Интернет или другую коммуникационную сеть
(например, через ATM-сеть)
 Облачные вычисления – модель вычислений, основанная на динамически
масштабируемых(scalable) и виртуализованных (virtual) ресурсах - данных,
приложениях, ОС и др., - которые доступны и используются как сервисы через
Интернет и реализуются с помощью мощных центров обработки данных (data
centers)
 С точки зрения пользователей, существуют “облака” (общедоступные или
частные) , предоставляемые различными компаниями для использования мощных
вычислительных ресурсов, которых нет у индивидуального пользователя
 Перспективы облачных вычислений весьма многообещающие
 Недостаток: пользователь полностью зависит от “облака” и не может управлять
даже резервным копированием своих данных и программ
 Наиболее популярная “облачная” платформа – Microsoft Windows Azure
(облачная ОС) и Microsoft Azure Services Platform (реализованная на основе
Microsoft.NET)
 В настоящее время все крупные компании (Microsoft, IBM, HP, Dell, Oracle и др.)
разрабатывают свои системы облачных вычислений; имеется тенденция к
интеграции этих корпоративных систем в единое доступное пользователю
“облако”
(C) Сафонов В.О. 2011
Резюме
 Подход к разработке программ принципиально
изменился
 Вместо индивидуальных изолированных разработок на
собственном компьютере – разработка сетевых
приложений и использование готовых сервисов через
Web
 Будущее – за сетевым и распределенным программным
обеспечением, основанным на Web-сервисах,
многоклиентских и многоярусных архитектурах принципах SOA, SaaS, multi-tenancy, multi-tiering
 Всем этим принципам соответствует модель облачных
вычислений
 Microsoft – одна из ведущих компаний,
поддерживающих и развивающих этот новый подход
(.NET, Windows Azure)
(C) Сафонов В.О. 2011
Домашнее задание к лекции 1
1.
Проанализируйте используемое и разрабатываемое Вами
программное обеспечение, с точки зрения соответствия
парадигмам cloud computing и SOA
2. Инсталлируйте и попробуйте на простых примерах
использовать Windows Azure и Azure Services Platform
3. Сформулируйте проблемы безопасности программ и
данных для облачных вычислений – в чем преимущество
данной модели для реализации безопасности, в чем ее
“подводные камни”
(C) Сафонов В.О. 2011