Лекция 5

 

5.1. Типичные архитектуры распределённых систем

Client-Server (2-tier – двухзвенная архитектура)

Двухзвенная архитектура клиент-сервер является наиболее простой и понятной распределённой архитектурой. Её основной характеристикой является чёткое разделение ролей между компонентами, принимающими участие во взаимодействии на активных объектов (или субъектов) и пассивных (или целевых) объектов. Субъекты-клиенты могут инициировать взаимодействие с целевыми объектами-серверами. При этом, сервера могут так же выступать в роли клиентов по отношению к другим серверам. Например сервер приложений выступает клиентом по отношению к серверу баз данных.

Основным отличием двухзвенной архитектуры клиент сервер является выделение только двух чётко отделённых архитектурных слоёв. Как правило это бывает слой хранения данных (СУБД) и слой приложения клиента содержащего бизнес логику и логику отображения и взаимодействия с оператором, иными словами – пользовательский интерфейс.

Построение систем по принципу клиент-сервер принесло большие преимущества по сравнению с предшествующими на тот момент монолитными подходами. Главным из преимуществ является как правило чёткое отделение СУБД от кода клиентского приложения, тем самым позволяя использовать промышленные СУБД в многопользовательском режиме, совместно обрабатывать данные. Двухзвенные системы до сих пор широко применяются и показывают очень хорошие показатели в плане производительности системы а так же простоте проектирования, создания и развёртывания для небольшого числа пользователей. Существует широкий спектр интегрированных средств разработки двухзвенных приложений значительно удешевляющих разработку и создание ПО. Это такие средства как Borland Delphi/C++ Builder, MS Visual Studio, Sybase Power Builder и т.п.

Принципиальным недостатком двухзвенных систем является их ограниченная масштабируемость по количеству пользователей, по территориальной распределённости, а так же по сложности администрирования и защищённости. Так с увеличением количества рабочих мест пользователей резко возрастают затраты на их администрирование, так как при обновлении версии клиентского ПО приходиться обновлять копию ПО на каждом рабочем месте, а это при большом их числе и при относительно высокой частоте обновлений может оказаться неприемлемо дорого. Другой проблемой является проблема защищённости, так как каждый пользователь теоретически может получить доступ к БД в обход логики приложения, то возникает угроза компрометации данных в БД, что может оказаться решающим фактором.

Определённым шагом в направлении к полной многозвенной архитектуре можно назвать выделение и перенос части (иногда значительной) бизнес логики приложения на сервер БД в виде хранимых процедур. Такой подход позволяет более полно задействовать механизмы безопасности предоставляемы СУБД, позволяет упростить код клиентов и тем самым упростить их администрирование, однако всё же не решает вышеуказанных проблем полностью.