Новые принципы архитектуры современных программных систем
Развитие облачных вычислений (cloud computing)
Как уже хорошо известно ныне, облако (cloud) – широко используемая метафора для изображения сервисов, предоставляемых через Web.
Облачные вычисления – модель вычислений, основанная на динамически масштабируемых (scalable) виртуализованных (virtual) ресурсах - данных, приложениях, Web-сайтах, виртуальных машинах, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).
Пользователям доступны "облака" (общедоступные, частные или "облака сообществ"), предоставляемые различными компаниями и организациями для использования мощных вычислительных ресурсов, которых нет у индивидуального пользователя.
Перспективы облачных вычислений весьма многообещающие, как можно будет понять из материала данного курса.
Наиболее популярная "облачная" платформа – Microsoft Windows Azure (облачная ОС) и Microsoft Azure Services Platform (реализованная на основе Microsoft.NET).
В настоящее время все крупные компании (Microsoft, IBM, HP, Dell, Oracle и др.) разработали свои системы облачных вычислений. Имеется тенденция к интеграции этих корпоративных систем в единое доступное пользователю "облако" – InterCloud.
Резюме
За годы развития ПО подход к разработке программ принципиально изменился.
Вместо индивидуальных изолированных разработок на собственном компьютере становится все более популярной разработка сетевых приложений и использование готовых сервисов через Web.
ПО распространеняется через магазины приложений и через облака.
Будущее в развитии ПО – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах - принципах SOA, SaaS, multi-tenancy, multi-tiering.
Всем этим принципам соответствует модель облачных вычислений.
Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход (.NET, Windows Azure).
Ключевые термины
Аспект – совокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 1979 – технология вертикального слоения; G. Kiczales (Xerox PARC, аспектно-ориентированное программирование и система AspectJ).
Клиент (client) – пользователь и (или) компьютер, использующий какие-либо программные сервисы.
Многоклиентская архитектура (multi-tenant architecture) – архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants – букв. клиенты, арендаторы). Пример: Web-сервис.
Многоярусная архитектура (multi-tier architecture) – архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.
Облачные вычисления (cloud computing) – модель вычислений, основанная на динамически масштабируемых (scalable) и виртуализованных (virtual) ресурсах - данных, приложениях, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).
Полнофункциональный клиент (rich client) – клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; примеры ПО для поддержки rich clients: Microsoft Silverlight, Oracle JavaFX и т.д.
Программное обеспечение как сервис (Software as a Service - SaaS) – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.
Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их взаимодействие, например, поддержку сетевых коммуникационных протоколов
Сервер (server) – компьютер или центр обработки данных, предоставляющий программные сервисы.
Сервисно-ориентированная архитектура (SOA) – архитектура ПО, при которой программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом.
Слой (layer) – крупная независимая компонента архитектуры ПО. Различают горизонтальные слои (или уровни абстракции), вертикальные слои (срезы) и др.
Тонкий клиент (thin client) – клиент Web-сервиса с минимальным пользовательским интерфейсом, не имеющий состояния, сеанса, полнофункционального GUI и общающийся с Web-сервисом только через браузер и протокол HTTP посредством отправки HTTP-запросов и получения HTML-страниц.
Уровень абстракции (abstraction layer) или "горизонтальный слой" (номер N) – совокупность модулей, реализация которых использует только модули уровня N-1 (N > 0). Нулевой уровень абстракции образует аппаратура или базовые библиотеки (API). Концепция принадлежит Э. Дейкстре и сформулирована в конце 1960-х гг. в ходе разработки операционной системы THE (Технического университета Эйндховена).
Ярус (tier) – слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web. Если используется понятие tier, следовательно, архитектура ПО настолько сложна, что двумерная модель (горизонтальный слой / вертикальный слой) ее полностью не описывает. Tier может находиться и использоваться в любой компоненте архитектуры ПО.
Краткие итоги
За годы развития ПО подход к разработке программ принципиально изменился.
Вместо индивидуальных изолированных разработок на собственном компьютере становится все более популярной разработка сетевых приложений и использование готовых сервисов через Web.
ПО распространеняется через магазины приложений и через облака.
Будущее в развитии ПО – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах - принципах SOA, SaaS, multi-tenancy, multi-tiering.
Всем этим принципам соответствует модель облачных вычислений.
Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход (.NET, Windows Azure).
Набор для практики
Вопросы
- Перечислите виды современного программного обеспечения (ПО).
- Перечислите требования к современному ПО
- Перечислите характерные черты современного ПО
- Какие Вы знаете современные платформы для разработки ПО?
- Назовите наиболее важные качества программных продуктов.
- Что такое тонкий клиент?
- Что такое полнофункциональный клиент?
- Что такое слой ПО?
- Что такое уровень абстракции ПО?
- Что такое вертикальный срез (слой) ПО?
- Что такое ПО промежуточного уровня (middleware)?
- Что такое ярус ПО (tier)?
- В чем основная идея многоярусной архитектуры ПО?
- Что такое многоклиентская (multi-tenant) архитектура ПО?
- Что такое сервисно-ориентированная архитектура?
- В чем суть концепции Software as a Service (SaaS)?
- Что такое облачные вычисления?
Упражнения
Для данной вводной лекции упражнения не предусмотрены.
Темы для курсовых работ, рефератов, эссе
- Краткий обзор видов современного ПО (реферат)
- Обзор требований к современному ПО (реферат)
- Обзор современных платформ для разработки ПО (реферат)
- Многоярусные архитектуры ПО (реферат)
- Многоклиентские архитектуры ПО (реферат)
- Обзор сервисно-ориентированных архитектур ПО (реферат)
- Обзор концепции Software as a Service (реферат)
- Облачные вычисления как пример многоярусной, многоклиентской и сервисно-ориентированной архитектуры (эссе).
Литература
- Сафонов В.О. Платформа облачных вычислений 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, декабрь 2010.
- Сафонов В.О. Основы современных операционных систем. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2011, 583 с.
- Сафонов В.О. Архитектуры и модели программ и знаний. Спецкурс для студентов 4 курса. https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8480&Login&=