Россия, Москва, МИФИ, 1972 |
Новые принципы архитектуры современных программных систем
Важнейшие современные характеристики программных продуктов
Масштабируемость – возможность применения ПО для разных классов устройств (от мобильных телефонов до настольных компьютеров) и для разного числа пользователей одновременно (от 1-10 до нескольких миллионов, - последнее должно быть обеспечено для облачных приложений).
Следование стандартам коммуникации, представления и передачи данных. Современные сложные виды ПО, такие, как Web-сервисы, могут взаимодействовать успешно между собой только при условии строгого соблюдения стандартов. Для Web-сервисов это стандарт WSDL (Web Service Description Language), обеспечивающий возможность получения информации об интерфейсе Web-сервиса в специальной форме, в WML-формате. Используется также стандарт SOAP для пересылки в XML-формате входных параметров от клиента к Web-сервису и результатов – от Web-сервиса клиенту. При условии соблюдения этих стандартов, метод и платформа реализации каждого Web-сервиса (.NET, Java и др.) несущественны.
Возможность переноса в облако. Как уже отмечалось, важным условием широкого распространения современного ПО является возможность переноса его в облако и использования как облачного приложения. Это предполагает специальную архитектуру ПО, рекомендации к которой описаны в данном курсе.
Сервисная ориентированность (SOA) – организация ПО в виде расширяемого набора Web-сервисов. Об этом подробнее ниже.
Возможность быстрой интеграции с другими существующими продуктами в новое программное решение. Все перечисленные принципы обеспечивают быструю интеграцию программных сервисов между собой в единое программное решение.
Повышенная безопасность и надежность. Как уже говорилось, одно из важнейших требований к современному ПО – следование рекомендациям по надежным и безопасным вычислениям (trustworthy computing).
Развитие современных основных понятий архитектуры ПО
Для лучшего понимания архитектуры облачной платформы рассмотрим сначала основные концепции архитектуры современного ПО.
Клиент (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). Данная концепция несколько устарела, так как современные архитектуры более сложны.
Аспект – совокупность рассредоточенных фрагментов кода, реализующих некоторую (сквозную) функциональность, например, проверки безопасности. Это основное понятие аспектно-ориентированного программирования [5].
Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их коммуникацию.
Ярус (tier) – слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web/
Многоярусная архитектура (multi-tier architecture) – архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.
Многоклиентская архитектура (multi-tenant architecture) – архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (термин tenants буквально означает клиенты, арендаторы). Пример: Web-сервис.
С точки зрения рассмотренных концепций, облачные вычисления соответствуют принципам multi-tiered and multi-tenant architecture.
Пример многоярусной архитектуры ПО представлен на рис. 1.1.
Развитие Service-Oriented Architecture (SOA)
Сервис – компонента программы, непосредственно доступная пользователю.
Основной принцип SOA состоит в следующем. С точки зрения пользователя, программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом.
Сервисно-ориентированная модель должна быть расширяемой (пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов).
Пользователи должны иметь возможность обращаться к сервисам через сеть с самых различных по своим возможностям устройств – настольных и портативных компьютеров, мобильных устройств и т.д.
Метод реализации Web-сервисов (.NET, Java и др.) для пользователя должен быть несущественен, при условии соблюдения стандартов при их разработке.
Разработчик должен иметь возможность публикации своих Web-сервисов.
Поддержка SOA обеспечивается следжющими программными инструментами разработки Microsoft:
- Microsoft SharePoint (простой инструмент для создания расширяемых Web-страниц и Web-сервисов);
- UDDI (Universal Discovery, Description and Integration) – технология для публикации и поиска Web-сервисов.
С данной точки зрения, облачные вычисления соответствуют принципам SOA.
Развитие Software-as-a-Service (SaaS)
SaaS – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.
Основная идея SaaS - использование ПО по требованию (on demand) по невысокой стоимости (вместо покупки полной лицензии на ПО для всех платформ).
Основные характеристики SaaS:
- Доступ к коммерческому ПО через сеть
- Удаленное управление ПО пользователями через центральный Web-сайт
- Использование модели "one-to-many" (multi-tenant application), т.е. использование одного приложения многими клиентами
- Централизация управления версиями и обновлениями (пользователи могут загружать новые версии через сеть)
- Интеграция программных сервисов в общий гибридный набор ПО, потребляемый пользователем, как mash-ups – гибридных Web-приложений
С данной точки зрения, облачные вычисления соответствуют принципам SaaS и, по-видимому, являются их наилучшим воплощением. Именно благодаря использованию облачных платформ (прежде всего, Microsoft Windows Azure), пользователи могут прочувствовать и осознать все преимущества подхода SaaS.