Опубликован: 01.07.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 1:

Новые принципы архитектуры современных программных систем

Лекция 1: 123 || Лекция 2 >

Важнейшие современные характеристики программных продуктов

Масштабируемость – возможность применения ПО для разных классов устройств (от мобильных телефонов до настольных компьютеров) и для разного числа пользователей одновременно (от 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.

Пример многоярусной архитектуры ПО

Рис. 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.

Лекция 1: 123 || Лекция 2 >
Андрей Краснов
Андрей Краснов
Россия, Москва, МИФИ, 1972
Владимир Стена
Владимир Стена
Россия