Открыть сервис

Трёхзвенная архитектура

Трёхзвенная архитектура (трёхуровневая архитектура, англ. three-tier architecture) — это модель построения программного обеспечения, в которой приложение логически разделяется на три независимых функциональных компонента (звена): клиентское приложение (уровень представления), сервер приложений (уровень бизнес-логики) и сервер базы данных (уровень данных). Каждое звено может выполняться на отдельном вычислительном узле и взаимодействовать с другими по сети, что обеспечивает масштабируемость, гибкость и упрощает сопровождение системы.

История

Концепция многоуровневой архитектуры возникла как эволюция двухзвенной модели «клиент-сервер», где бизнес-логика и интерфейс часто были объединены на стороне клиента («толстый клиент»). В 1980-х годах, с ростом сложности корпоративных информационных систем, стало очевидно, что такое объединение создаёт проблемы с обновлением, безопасностью и производительностью.

В 1992 году компания Gartner Group ввела термин «трёхзвенная архитектура» как часть концепции «клиент-сервер нового поколения». Ключевым толчком к её внедрению стало развитие технологий объектно-ориентированного программирования и появление серверов приложений, таких как WebLogic (BEA Systems, 1995) и IBM WebSphere (1998). В 1996 году компания Sun Microsystems выпустила спецификацию Java Enterprise Edition (Java EE, ныне Jakarta EE), которая стала стандартом де-факто для построения трёхзвенных систем на платформе Java. В России и странах бывшего СССР трёхзвенная архитектура активно внедрялась в 2000-х годах при создании автоматизированных банковских систем (например, «Диасофт», «ЦФТ») и государственных информационных систем (ГАС «Выборы», ЕГИССО).

Структура и компоненты

Трёхзвенная архитектура состоит из трёх логически и физически разделяемых уровней, каждый из которых решает строго определённые задачи.

Уровень представления (клиентское звено)

Этот уровень отвечает за взаимодействие с пользователем — отображение данных, ввод команд и передачу запросов на сервер приложений. Он не содержит бизнес-логики и не обращается напрямую к базе данных. Типичные реализации:

  • Веб-клиент — браузер (HTML, CSS, JavaScript), взаимодействующий с сервером через HTTP/HTTPS.
  • Тонкий клиент — десктопное приложение (например, на C# или Java), которое подключается к серверу приложений по протоколу RMI, CORBA или веб-сервисам.
  • Мобильный клиент — приложение для iOS или Android, использующее REST API или GraphQL.

Уровень бизнес-логики (сервер приложений)

Центральное звено, где реализуются все правила обработки данных, алгоритмы, вычисления и проверки. Этот уровень действует как посредник между клиентом и базой данных. Он получает запросы от клиента, выполняет необходимые операции (например, расчёт налогов, проверку прав доступа) и отправляет результаты обратно или формирует запросы к базе данных. Сервер приложений может быть реализован с использованием:

  • Серверных платформ — Jakarta EE (WildFly, Payara), .NET (ASP.NET Core), Python (Django, Flask), Node.js (Express).
  • Промежуточного программного обеспечения (middleware) — IBM WebSphere, Oracle WebLogic, SAP NetWeaver.
  • Микросервисов — каждый сервис представляет собой отдельный компонент бизнес-логики, взаимодействующий с другими через API.

Уровень данных (сервер базы данных)

Этот уровень отвечает за хранение, извлечение и управление данными. Он включает в себя системы управления базами данных (СУБД) и файловые хранилища. Ключевые функции:

Принципы работы и взаимодействие

Взаимодействие между звеньями осуществляется по принципу «запрос-ответ»:

  1. Пользователь через клиентское приложение отправляет запрос (например, «показать список заказов за последний месяц»).
  2. Клиент передаёт этот запрос на сервер приложений по протоколу HTTP, RPC или другому.
  3. Сервер приложений обрабатывает запрос: проверяет аутентификацию и авторизацию, применяет бизнес-правила (например, фильтрует заказы по статусу «оплачен»), формирует SQL-запрос к базе данных.
  4. Сервер базы данных выполняет запрос и возвращает результат (набор строк) серверу приложений.
  5. Сервер приложений преобразует данные в формат, понятный клиенту (например, JSON или XML), и отправляет ответ.
  6. Клиент отображает данные пользователю.

Преимущества и недостатки

Преимущества

  • Масштабируемость — каждый уровень можно масштабировать независимо. Например, при росте числа пользователей можно добавить несколько серверов приложений, не меняя архитектуру базы данных.
  • Упрощение сопровождения — изменение бизнес-логики не требует обновления клиентского ПО. Обновление сервера приложений происходит централизованно.
  • Безопасность — клиент не имеет прямого доступа к базе данных, что снижает риск SQL-инъекций и несанкционированного доступа. Аутентификация и авторизация реализуются на уровне сервера приложений.
  • Гибкость — возможность замены одного компонента без изменения других (например, замена СУБД с Oracle на PostgreSQL).
  • Повторное использование — бизнес-логика может быть использована разными клиентами (веб, мобильное приложение, десктоп).

Недостатки

  • Сложность разработки и администрирования — требуется настройка сетевого взаимодействия, балансировки нагрузки, кластеризации.
  • Задержки — каждый запрос проходит через три уровня, что увеличивает время отклика по сравнению с двухзвенной архитектурой.
  • Единая точка отказа — при выходе из строя сервера приложений вся система становится недоступной. Требуется резервирование.
  • Избыточность для простых систем — для небольших приложений (например, личного блога) трёхзвенная архитектура может быть излишне сложной.

Примеры реализации

  • Веб-приложения — интернет-магазины, интернет-банки, CRM-системы. Например, в системе «СберБанк Онлайн» веб-интерфейс (клиент) взаимодействует с сервером приложений на Java, который обращается к базе данных Oracle.
  • Корпоративные информационные системы — ERP-системы (SAP, 1С:Предприятие 8.3 в режиме «тонкого клиента»), системы управления проектами (Jira, Redmine).
  • Государственные информационные системы — портал «Госуслуги», система «Московская электронная школа». В них клиентский уровень (браузер) обращается к серверам приложений на платформе .NET или Java, которые работают с базами данных PostgreSQL или Oracle.

Сравнение с другими архитектурами

ХарактеристикаДвухзвенная архитектураТрёхзвенная архитектураМногоуровневая (n-tier)
Количество уровней2 (клиент + БД)3 (клиент + сервер приложений + БД)4 и более (добавляются уровни интеграции, кэширования, очередей)
Где выполняется бизнес-логикаНа клиенте («толстый клиент») или в БД (хранимые процедуры)На сервере приложенийРаспределена между несколькими серверами
МасштабируемостьОграниченнаяВысокаяМаксимальная
СложностьНизкаяСредняяВысокая
ПримерДесктопное приложение для бухгалтерии с прямой связью с БДВеб-портал с сервером приложенийКрупная ERP-система с микросервисами

Современные тенденции

В 2020-х годах классическая трёхзвенная архитектура часто уступает место микросервисной архитектуре, где бизнес-логика разбивается на множество мелких независимых сервисов. Однако трёхзвенная модель остаётся основой для многих корпоративных систем, особенно в государственном секторе и финансовой сфере России. Также наблюдается тенденция к использованию «бессерверных» вычислений (serverless), где уровень бизнес-логики выполняется в облаке (AWS Lambda, Яндекс.Облако) без управления серверами.

Источники

  • Fowler M. Patterns of Enterprise Application Architecture. — Addison-Wesley, 2002.
  • Bass L., Clements P., Kazman R. Software Architecture in Practice. — 3rd ed. — Addison-Wesley, 2012.
  • Гагарина Л. Г., Кокорева Е. В. Технология разработки программного обеспечения. — М.: Форум, 2014.
  • Документация Jakarta EE (Java EE) — Oracle Corporation, 1998–2023.
  • Материалы конференций «CEE-SECR» (Центральная и Восточная Европа по программной инженерии), 2005–2022.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →