Так, ну пока всё не так сложно! Чем тонкий клиент отличается от толстого, я смогу запомнить 😏
Айгуль
Отлично! Тогда перейдём к типам клиент-серверной архитектуры!
Даня
Начинается… Барокко, рококо и ар-деко?
Айгуль
Двухзвенная, трёхзвенная и многозвенная 🤣
Звенья клиент-серверной архитектуры
В предыдущем уроке вы узнали, что такое клиент-серверная архитектура и какие типы клиентов бывают. В этом уроке вы узнаете о звеньях клиент-серверной архитектуры.
Звенья архитектуры
Клиент и сервер называют звеньями клиент-серверной архитектуры.
Звено (Tier) — это выполняющая определённые функции совокупность элементов программного и аппаратного обеспечения.
Иными словами, звено — это компьютерное устройство с установленными на нём программами, которое хранит данные, выполняет логику доступа к данным, бизнес-логику или логику представления.
Система может состоять из одного или нескольких звеньев. В зависимости от количества звеньев выделяют следующие типы клиент-серверной архитектуры:
Однозвенная (One-Tier, Single-Tier).
Двухзвенная (Two-Tier).
Трёхзвенная (Three-Tier).
Многозвенная (N-Tier, Multitier).
Однозвенная архитектура
В однозвенной архитектуре всё ПО работает на одном устройстве и выполняет все функции: логику представления, бизнес-логику, логику доступа к данным и хранение данных. Соответственно, такое звено является одновременно клиентом и сервером. Это ПО не требует для работы подключения к сети.
Такие системы являются наиболее простыми и дешёвыми в разработке.
Однозвенную архитектуру имеет, например, справочник с картами городов с возможностью просмотра карт без подключения к сети. После загрузки карты нужного города на смартфон пользователя справочнику не будет нужно подключение к серверу — смартфон будет самостоятельно выполнять все функции.
Система может также состоять из множества звеньев. В таком случае какие-то компьютеры будут выполнять роль клиентов, какие-то — роль серверов.
Двухзвенная архитектура
Существует множество способов разделения бизнес-логики между клиентом и сервером. Самый простой способ изображён на рисунке ниже. В этом случае сервер отвечает за хранение и доступ к данным, а клиент выполняет логику представления и бизнес-логику. Такая архитектура называется двухзвенной, поскольку в ней используются только два звена — клиенты и серверы.
Распространённый пример двухзвенной архитектуры — приложение «1С: Предприятие». Это система для автоматизации учёта и управления рабочими процессами компаний. Она состоит из клиента, который содержит всю логику отображения и обработки данных, и сервера, который хранит данные.
Трёхзвенная архитектура
В трёхзвенной архитектуре используются три набора компьютеров.
В такой архитектуре:
ПО на устройствах клиента отвечает за логику представления.
Сервер приложений отвечает за бизнес-логику.
Сервер базы данных отвечает за логику доступа к данным и хранение данных.
В трёхзвенной архитектуре:
Пользовательский интерфейс работает на клиентском устройстве и использует графический интерфейс пользователя.
Бизнес-логика может состоять из одной или нескольких частей, работающих на сервере приложений.
Реляционная СУБД, работающая на сервере базы данных, выполняет логику доступа к данным и хранит их.
Пример трёхзвенной архитектуры — внутренние системы компаний, такие как система бухгалтерского учёта. Такие системы содержат общие данные и приложения на серверах компании, а клиенты обращаются к ним из внутренней сети.
Многозвенная архитектура
Когда части бизнес-логики ПО выполняют разные звенья, появляется новый тип клиент-серверной архитектуры. Его называют многозвенной архитектурой.
Многозвенная архитектура распределяет бизнес-логику ПО между разными типами серверов:
Веб-серверами.
Серверами приложений.
Этот тип архитектуры распространён в современных системах электронной коммерции.
Рассмотрим пример интернет-магазина, в котором покупатели могут заказывать товары с доставкой на дом и оплачивать их онлайн.
Когда пользователь переходит в веб-браузере своего устройства (клиента) по адресу магазина в сети Интернет, оно запрашивает у веб-сервера соответствующие веб-страницы. Например, когда пользователь хочет посмотреть подробную информацию о товаре, его устройство отправляет запрос на просмотр веб-страницы карточки товара.
Веб-сервер в ответ отправляет запрошенную клиентом веб-страницу, которую отображает пользователю веб-браузер устройства.
Когда пользователь добавил необходимые товары в корзину и переходит к оформлению заказа, его устройство снова обращается к веб-серверу. Клиент запрашивает у веб-сервера данные о сумме товаров в заказе и стоимости доставки на дом.
Веб-сервер в таком случае направляет этот запрос серверу приложений, чтобы получить от него:
Подтверждение актуальности цены на товары, ведь могла произойти их переоценка.
Подтверждение наличия товара, ведь пока пользователь просматривал веб-сайт, товары могли закончиться.
Расчёт стоимости доставки до дома пользователя.
Именно сервер приложений осуществляет эти проверки и расчёты, то есть выполняет эту бизнес-логику.
Получив ответ сервера приложений, веб-сервер отправляет соответствующие данные клиенту для отображения пользователю.
К этому серверу приложений для выполнения проверок и расчётов может обратиться любое другое устройство, находящееся в сети владеющей интернет-магазином организации.
Например, выполняемую сервером приложений бизнес-логику может использовать система бухгалтерского учёта организации. Эта система будет иметь собственный сервер приложений, который будет выполнять важную для бухгалтерского учёта бизнес-логику и обращаться напрямую к серверу приложений интернет-магазина для проверки актуальности цен на товары и подтверждения их наличия.
Даня
Я так понимаю, у Оtium многозвенная клиент-серверная архитектура? 🤓
Айгуль
Да!
Даня
А у кого ещё такая?
Айгуль
Ой, у многих! Этот тип самый распространённый!
Даня
У него, видимо, нет недостатков? 😇
Айгуль
Они, конечно, есть, как и заметные преимущества. Давай обсудим!
Преимущества и недостатки многозвенной архитектуры
Так как многозвенная клиент-серверная архитектура является самой распространённой, рассмотрим её преимущества и недостатки в сравнении с другими типами.
Преимущества
Основное преимущество многозвенной клиент-серверной архитектуры по сравнению с двухзвенной (или трёхзвенной) архитектурой в том, что она разделяет выполняемую бизнес-логику, чтобы лучше сбалансировать вычислительную нагрузку на разные серверы. Этот тип клиент-серверной архитектуры помогает создавать легко масштабируемые системы, так как при увеличении нагрузки можно будет легко добавить новые звенья.
Тип клиент-серверной архитектуры с тремя разными типами серверов обеспечивает больше мощности, чем двухзвенная архитектура, в которой используется только один сервер.
Если сервер приложений слишком загружен, можно просто заменить его более мощным сервером или добавить ещё несколько серверов приложений, чтобы разделить нагрузку. И наоборот, если обнаружено, что сервер базы данных используется недостаточно, можно хранить на нём данные из другого приложения.
Недостатки
По сравнению с двухзвенной (или трёхзвенной) архитектурой у многозвенной архитектуры два основных недостатка.
Во-первых, она создает высокую нагрузку на сеть. Если сравнить иллюстрации с отображением разных типов архитектуры, можно увидеть, что многозвенная архитектура требует более частого взаимодействия между устройствами. Такая система создаёт больше сетевого трафика, поэтому для её реализации нужна сеть с высокой пропускной способностью.
Пропускная способность (Capacity) — это способность сети передавать данные. Она характеризует объём данных, который может быть передан одним устройством другому за определённый период времени. Обычно время измеряется в секундах, а объём данных в мегабитах.
Во-вторых, программировать и тестировать ПО в многозвенной архитектуре намного сложнее, чем в двухзвенной, потому что для работы системы должно взаимодействовать больше устройств.
Определите, какой тип архитектуры используется в описанных ситуациях.
Менеджер логистической компании использует установленное на настольный компьютер ПО, чтобы определять дату доставки товаров. Он составляет для водителей расписание и сообщает клиентам статус доставки. Водители оперативно информируют менеджера о доставленных заказах, используя подключённые к сети Интернет мобильные устройства.
Многозвенная архитектура
Чтобы пользоваться такой системой, нужно подключение к интернету, а значит, может использоваться многозвенная архитектура. Клиенты в этом случае — настольный компьютер и мобильные устройства водителей.
Кладовщик использует установленное на настольный компьютер ПО, чтобы определять ряд и место хранения на складе, остаток товаров и дату их закупки.
Двухзвенная архитектура
Для реализации такой системы подходит двухзвенная архитектура. Доступ в сеть Интернет данному ПО не требуется, а компьютер на складе — толстый клиент, который выполняет логику представления и бизнес-логику.
Руководитель логистической компании использует установленное на настольный компьютер ПО, чтобы просматривать аналитические данные о планируемых и фактических датах доставки, доставках в филиалы, менеджерах и водителях. Необходимые ему данные предоставляет система, в которой работают менеджеры этой же компании.
Трёхзвенная архитектура
Для такой системы нет необходимости подключения в сеть интернет, потому что данные предоставляет другая система организации. При этом подготовка аналитических данных требует большой вычислительной мощности, которую может обеспечивать сервер приложений. Для такой системы подходит трёхзвенная архитектура.
Подведём итоги
Существует четыре типа клиент-серверной архитектуры:
Однозвенная.
Всё ПО работает на одном устройстве.
Двухзвенная.
Система состоит из клиента и сервера базы данных. Логику представления и бизнес-логику выполняет клиент, а сервер выполняет логику доступа к данным и хранит их.
Трёхзвенная.
Система состоит из клиента, сервера приложений и сервера баз данных. Клиент выполняет логику представления, сервер приложений выполняет бизнес-логику, а сервер базы данных выполняет логику доступа к данным и хранит их.
Многозвенная.
Система состоит из клиента, веб-сервера, сервера приложений и сервера базы данных. Клиент выполняет логику представления, веб-сервер выполняет связанную с сетью интернет бизнес-логику, сервер приложений выполняет бизнес-логику, а сервер базы данных выполняет логику доступа к данным и хранит их.
Главное преимущество многозвенной сети — её масштабируемость (в сравнении с другими типами архитектуры сетей).
К недостаткам многозвенной архитектуры можно отнести необходимость высокой пропускной способности сети, а также сложность разработки и тестирования ПО в сравнении с двухзвенной или трёхзвенной архитектурой.