Презентация к лекции
Введение в архитектуру «клиент-сервер»
Почему для корпоративных систем, использующих базы данных, так важна архитектура «клиент-сервер»? Она обеспечивает достаточно простой и относительно дешевый коллективный доступ к данным в любых сетевых средах. Это может быть как локальная сеть, так и глобальные сети: публичный интернет, внутрикорпоративная сеть (интранет) или сеть для партнеров (экстранет).
Появлению этого семейства архитектур (двухзвенные, трехзвенные и др.) мы обязаны последовательной реализации концепции
открытых систем. Суть ее в том, что на основе стандартных, открытых протоколов взаимодействия мы можем осуществлять интеграцию сложных систем подобно сборке на конвейере. Стандартные интерфейсы позволяют дешево стыковать компоненты, спроектированные и созданные в разных местах и странах.
Одним из таких подходов является
компонентный подход, реализованный, например, корпорацией Microsoft. Сборка конечного продукта происходит из компонентов с открытым интерфейсом. Похожий подход предлагает Sun Microsystems в виде компонентов
Enterprise Java Beans (EJB) для построения корпоративных приложений на Java.
Концепция открытых систем
Корпорация — это сложная организация с парком разновозрастных информационных систем. Некоторые из них могут относиться к разным технологическим поколениям. Например, до сих пор используются мейнфреймы, а в мире существуют миллионы строк кода на языке
COBOL. Далеко не все компании готовы переписывать системы, поддерживающие ключевые бизнес-процессы. Кстати, COBOL поддерживается и в среде Microsoft .NET, что позволяет унифицированно собирать компонентные приложения.
Идея открытых систем состоит в том, чтобы объединить разнородные программные комплексы путем стандартизации их интерфейсов. Раньше, в эпоху больших машин (IBM 360, ЕС ЭВМ), удаленный доступ не был массовым. Сейчас же тысячи компьютеров объединены в офисные сети, а интернет-технологии обеспечивают связь между офисами по всему миру.
Принципы и свойства открытых систем
Среда интернет исторически создавалась как распределенная сеть, способная функционировать при выходе из строя отдельных узлов. Для этого потребовались специальные протоколы и маршрутизаторы. Современные требования бизнеса диктуют необходимость доступа к корпоративным данным в любое время и из любой точки.
Принцип работы открытых систем базируется на:
•
Независимости от производителей аппаратного и программного обеспечения.
•
Стандартизации на уровне сетевых протоколов и интерфейсов взаимодействия с базами данных.
Ключевые свойства открытых систем:
1.
Мобильность (переносимость): легкость переноса и балансировки приложений в аппаратной среде. Пользователь, заказывая авиабилет через интернет, не знает и не должен знать, с каким именно физическим сервером в кластере он взаимодействует. Функциональность (веб-сервер, сервер приложений, сервер БД) прозрачно распределяется по разным машинам.
2.
Интероперабельность: легкость построения новых приложений из готовых компонентов со стандартными интерфейсами. Зная «сигнатуру» компонента (входные и выходные параметры), можно создавать и улучшать части системы независимо. Это обеспечивает плавное, эволюционное развитие (инкрементальную модель), особенно эффективное при сопровождении таких систем.
Разделение функций в сети
В основе корпоративных сетей лежит идея разделения ресурсов и функций. Если раньше все вычисления производились локально на персональном компьютере, то теперь выделяются:
•
Мощные компьютеры (серверы) для обработки и хранения ресурсов.
•
Менее мощные рабочие станции (клиенты), часто бездисковые, задача которых — обеспечить интерфейс доступа.
Современные гигабитные каналы и оптоволокно позволяют эффективно организовать такое взаимодействие даже между удаленными офисами.
На физическом уровне это приводит к выделению
сервера — мощного, часто кластерного (отказоустойчивого) компьютера с большим объемом памяти. Сервер получает логическое имя, и пользователю неважно, какой именно узел кластера его обслуживает.
Клиент же во многих случаях — это «тонкий клиент», например, обычный веб-браузер, достаточный для доступа к информации.
Функции серверов могут специфицироваться. Выделяют отдельные логические серверы:
•
Телекоммуникационный: обеспечивает связь с внешним миром.
•
Вычислительный: производит расчеты.
•
Кэш-сервер: хранит результаты частых запросов, снижая нагрузку.
•
Файловый (дисковый): хранит документы пользователей.
•
Сервер базы данных: отвечает за выполнение SQL-запросов (например, Microsoft SQL Server, Oracle Enterprise Server).
Важно понимать, что
клиент и
сервер — это прежде всего программные роли. Сервер предоставляет услуги, а клиент их запрашивает. В сложных системах сервер приложений может выступать клиентом по отношению к серверу базы данных.
Взаимодействие компонентов в архитектуре «клиент-сервер»
Основные принципы работы архитектуры:
•
Выделенный программный интерфейс: взаимодействие происходит по установленным протоколам и строго описанным процедурам.
•
Независимость и изолированность сеансов: множество пользователей работают параллельно, но, если система реализована корректно, каждый ощущает себя единственным пользователем.
•
Строгая определенность интерфейсов: количество и типы параметров процедур фиксированы, что обеспечивает стандартизацию обмена и возможность инкрементального наращивания функциональности.
Проблемой является совместимость разнородного оборудования (Dell, HP, IBM) и ПО. Для ее решения применяется протокол
RPC (Remote Procedure Call — удаленный вызов процедур). RPC позволяет разработчику вызывать функции на удаленной машине как локальные, скрывая детали сетевого взаимодействия, адресации и шифрования. Это предшественник сервис-ориентированной архитектуры.
Инструментальные средства (CASE-средства)
Для разработки корпоративных приложений используются
CASE-средства (Computer-Aided Software Engineering). Применительно к системам с базами данных они обладают особенностями:
•
Универсальность: возможность подключения к разным SQL-серверам через открытые интерфейсы, например
ODBC (Object Database Connectivity).
•
Визуализация: разработка графических интерфейсов (форм, отчетов) из готовых «примитивов».
•
Объектная ориентированность: использование библиотек компонентов и технологий вроде
OLE (Object Linking and Embedding).
•
Поддержка командной разработки: например, Visual Studio Team System.
•
Использование языков четвертого поколения (4GL): возможность визуальной разработки и написания скриптов.
Эти средства позволяют создавать надстройки над системами не только профессиональным разработчикам, но и опытным пользователям (бизнес-аналитикам) в терминах, близких к бизнес-логике.
Примеры таких CASE-средств: Oracle Developer, Borland Delphi, Microsoft Visual Studio, Sybase Power Builder. Многие из них ориентированы на работу с конкретной СУБД, но могут подключаться и к другим серверам через открытые интерфейсы.
Персональные СУБД (например, Microsoft Access, Lotus Approach) — это своего рода «CASE-средства и серверы в миниатюре». Они поддерживают SQL, имеют удобный графический интерфейс, интегрируются с офисными пакетами и содержат «мастеров» для быстрой разработки отчетов. Их технологической основой также являются объектные библиотеки. Из этих настольных систем во многом и выросли современные корпоративные системы.
Многоуровневые архитектуры в веб-среде
При использовании интернет/интранет-сетей в корпоративных приложениях выделяют два основных типа архитектур.
Двухуровневая архитектура предполагает разделение функций между
веб-браузером (клиентом) и
веб-сервером. Взаимодействие идет по протоколу
HTTP: сервер предоставляет HTML-страницы, а браузер их отображает.
Трехуровневая архитектура вводит промежуточный слой:
1.
Клиент: веб-браузер.
2.
Сервер приложений (веб-сервер с расширениями): программы-расширения, написанные, например, на
ASP (Active Server Pages) или
JSP (Java Server Pages).
3.
Сервер базы данных: обрабатывает SQL-запросы.
Взаимодействие происходит по следующей цепочке:
1. Браузер отправляет веб-серверу запрос.
2. Программа-расширение на веб-сервере преобразует этот запрос в формат SQL-запроса.
3. SQL-запрос передается на сервер базы данных.
4. Сервер БД возвращает результат (набор записей) программе-расширению.
5. Программа-расширение преобразует данные обратно в HTML-страницу.
6. Веб-сервер передает HTML-страницу браузеру для отображения.
Преимущества трехуровневой архитектуры:
• Снижение сетевого трафика.
• Взаимозаменяемость компонентов за счет стандартных интерфейсов.
• Повышение безопасности (клиент не общается с БД напрямую).
Недостаток, связанный с протоколом HTTP: HTTP является протоколом без сохранения состояния (
stateless). Это создает сложности для организации транзакционной обработки баз данных, которая критически важна для корпоративных систем. Механизмы транзакций (изоляция пользователей, блокировки, откаты) требуют отслеживания состояния, что не предусмотрено базовым HTTP. Для решения этой проблемы используются дополнительные программные расширения и механизмы.
Краткие итоги
Современная корпоративная ИТ-инфраструктура представляет собой зоопарк технологий разных поколений, где мейнфреймы и код на COBOL сосуществуют с новейшими веб-сервисами. Прямолинейная замена устаревших, но критически важных для бизнеса систем экономически нецелесообразна и сопряжена с огромными рисками. Выходом из этого технологического тупика стало движение к открытости, основанное на постулате: неважно, кем и когда создан компонент, важно, чтобы его интерфейсы соответствовали общепринятым стандартам. Это позволило перейти от монолитных решений к сборочному конвейеру, где интеграция разнородных частей происходит через стандартизированные протоколы обмена.
Логическим развитием этой идеи стало физическое и логическое разделение функций обработки данных. Центр тяжести вычислений сместился с пользовательского устройства в сторону специализированных серверных кластеров, а рабочее место превратилось в «тонкое окно» доступа к ресурсам. На практике это привело к появлению многоуровневых архитектур, где вызов удаленных процедур позволяет прикладному разработчику абстрагироваться от физического расположения ресурса и деталей сетевого транспорта. Пик этой эволюции в веб-среде — трехзвенная модель, которая встраивает между браузером и базой данных промежуточный слой сервера приложений. Именно этот слой берет на себя ключевую функцию трансляции бизнес-логики в SQL-запросы и обратно в HTML-представление.
Однако подобная архитектура создает фундаментальную проблему для управления данными в корпоративном масштабе. Базовый протокол веба не хранит информацию о предыдущих шагах взаимодействия, в то время как бизнес-транзакции по определению атомарны и требуют непрерывного контекста. Преодоление этого противоречия — через программные расширения, механизмы сессий и мониторы транзакций — и составляет главную инженерную задачу. Ее решение позволяет не только обеспечить кажущуюся пользователю монопольность работы, но и гарантировать целостность данных при параллельном обслуживании тысяч запросов.
1. Архитектура «клиент-сервер» является стандартом де-факто для обеспечения недорогого коллективного доступа к данным в сетях любого масштаба.
2. Концепция открытых систем решает проблему интеграции разнородных компонентов, созданных в разное время и разными производителями, за счет стандартизации интерфейсов.
3. Интероперабельность и мобильность — ключевые свойства открытых систем, обеспечивающие эволюционное наращивание функциональности без остановки бизнес-процессов.
4. Логическое разделение на клиента и сервер означает разделение ролей: потребитель запрашивает сервис, а поставщик (часто кластер) его предоставляет, скрывая свою внутреннюю структуру.
5. Тонкий клиент в виде веб-браузера является достаточным интерфейсом для большинства корпоративных задач, перенося вычислительную нагрузку на сервер.
6. Протокол RPC (удаленный вызов процедур) позволяет разработчику вызывать функции на сервере как локальные, абстрагируясь от сетевых деталей.
7. CASE-средства, ориентированные на базы данных, позволяют создавать приложения не только программистам, но и бизнес-аналитикам, используя визуальное проектирование.
8. Двухуровневая архитектура в вебе сводится к прямому обмену HTML-страницами между браузером и веб-сервером по протоколу HTTP.
9. Трехуровневая архитектура вводит промежуточный слой (сервер приложений с ASP/JSP), который преобразует клиентские HTTP-запросы в SQL-запросы к базе данных.
10. Основное преимущество трехуровневой архитектуры — повышение безопасности и снижение трафика за счет сокрытия прямого взаимодействия клиента с базой данных.
11. Главный недостаток архитектуры на базе HTTP — отсутствие состояния (stateless), что значительно усложняет реализацию многопользовательских транзакций.
12. Современный подход к проектированию основан на сборке систем из готовых компонентов со стандартными сигнатурами, что позволяет заменять и улучшать части системы независимо.
1. Какие три типа сетевых сред охватывает архитектура «клиент-сервер» применительно к бизнесу?
2. В чем заключается основная идея концепции открытых систем для интеграции сложного ПО?
3. Каким образом компонентная модель EJB реализует принципы компонентного подхода?
4. Какие два ключевых свойства обеспечивают эволюционное развитие открытых систем? Дайте их определения.
5. В чем разница между файловым сервером и сервером базы данных с точки зрения логики обработки запроса?
6. Почему клиента в корпоративной среде часто называют «тонким» и какую роль он выполняет?
7. Какую основную проблему взаимодействия оборудования и ПО решает протокол RPC?
8. Каким образом CASE-средства позволяют вовлечь бизнес-аналитиков в процесс разработки приложений?
9. Опишите схему преобразования данных в трехуровневой архитектуре: от запроса браузера до получения ответа.
10. В чем состоит разница между протоколом HTTP и HTTPS применительно к корпоративным системам?
11. Почему свойство «stateless» протокола HTTP является недостатком для корпоративных систем, обрабатывающих транзакции?
12. Как программы-расширения веб-сервера (ASP, JSP) компенсируют разрыв между веб-средой и транзакционной логикой базы данных?