В статье анализируется технология клиент-сервер, основные принципы построения данной архитектуры и ее сетевая инфраструктура. Описывается роль клиента и сервера, а также их взаимодействие. Выявляются ее сильные и слабые стороны, способы повышения эффективности и устранения неполадок. В работе показано, что использование такой архитектуры может быть целесообразным только при грамотном ее применении с учетом всех нюансов построении программного и аппаратного обеспечения.
В настоящее время практически все веб-приложения построены на клиент-серверной архитектуре. Каждый день, делая покупки в интернет-магазинах или записываясь на прием в государственные учреждения, мы сталкиваемся с работой приложений, которые используют данную архитектуру. Однако, недочеты при построении этой системы могут приводить к постоянным сбоям, поэтому так важно понимать принципы работы клиент-серверной технологии и методы повышения эффективности работы ее программного обеспечения.
Клиент-серверная архитектура — это вычислительная модель, в которой сервер управляет большей частью ресурсов и услуг, потребляемых клиентом.
В этом типе архитектуры один или несколько компьютеров подключены по глобальной или локальной сети к главному серверу.
По своей сути клиент и сервер — это программное обеспечение, располагающееся, как правило, на разных вычислительных машинах и взаимодействующее между собой через сетевые протоколы. Однако, бывают случаи, когда клиент и сервер устанавливается на одну машину. В основном взаимодействие такой архитектуры при разделении клиента и сервера происходит через сетевой протокол http. Этот протокол состоит из двух основных команд: GET (получение информации с сервера) и POST (принимает данные для хранения). Такой простой, но в то же время эффективный набор правил идеально подходит для использования клиент-серверной системы.
При погружении в клиент-серверную архитектуру можно выделить три ее основных составляющих:
- клиент
- сервер
- сервер баз данных
Это и есть стандартная инфраструктура данной системы, иногда встречается устройство без сервера баз данных и двухуровневая архитектура. В таком случае сервер будет обрабатывать запрос от клиента и после обработки сразу отправлять ему ответ. В обратной ситуации, когда сервер баз данных присутствует (в трехуровневой архитектуре), сервер также будет обрабатывать запрос от клиента, но, помимо этого, он будет отправлять запрос к серверу базы данных, после чего сервер баз данных отправляет ответ обратно серверу и уже потом сервер приложения отправляет ответ клиенту.
Важно понимать различие операций, которые проводятся на сервере приложения и сервере баз данных. Сервер баз данных будет возвращать наборы информации, а сервер приложения будет производить все необходимые вычисления с полученными данными.
Так как сервер может выполнять запросы от нескольких программ клиентов, то программу сервера размещают на специально выделенной вычислительной машине, следовательно, производительность данной машины должна быть очень высокой.
Системные требования к клиенту должны быть намного меньше, поскольку на нем производится гораздо меньше вычислений. Самым распространенным примером клиента является любой интернет браузер. В адресную строку вводится сайт, это и есть запрос, посылаемый от клиента к серверу, после чего сервер обрабатывает запрос и отправляет ответ на клиент в виде запрашиваемого сайта.
Клиенты бывают двух видов: толстый и тонкий.
Тонкий клиент представляет собой программу или компьютер, который переносит все или наибольшую часть задач по обработке информации на сервер. Как правило, его основная цель отправить только запрос на сервер, поэтому системные требования к нему минимальные. Упомянутый выше браузер является примером тонкого клиента.
Толстым клиентом является приложение, которое обеспечивает расширенную функциональность, вне зависимости от центрального сервера. Чаще всего сервер в этом случае является только хранилищем данных, а вся задача по обработке этих данных переносится на машину клиента. В качестве примера можно привести программу «1С: Предприятие», где все вычисления бухгалтерского учета ведутся на клиенте, а на сервер передается лишь информация, которую необходимо сохранить и впоследствии получить для повторной обработки. Еще одним примером толстого клиента могут быть онлайн игры, в которых все действия с игровым процессом выполняются на компьютере пользователя, а на сервер отправляются лишь данные об изменениях, произошедших на аккаунте в результате действий пользователя.
Преимуществ у архитектуры данной модели несколько. Во-первых, из-за того, что все вычисления происходят на стороне сервера, то программам клиента не нужно дублировать код. Во-вторых, большинство вычислений выполняются на сервере, поэтому требования к клиенту приложения минимальные. В-третьих, из-за того, что все данные хранятся на сервере, риск утечки этих самых данных гораздо ниже, потому что как правило, клиент защищен гораздо хуже, чем сервер.
Рассмотрим недостатки данной технологии. Так как хранение всех данных и вычислений производятся на сервере, то при отказе работы серверной части вся архитектура становится неработоспособной.
Поэтому в Клеверенсе есть возможность работать и онлайн и оффлайн, особенно с применением уникальной технологии HYDB, о ней мы подробно расскажем в следующей статье.
И еще одним недостатком является высокая стоимость оборудования. Если оборудование серверной части будет дешевым и обладать низкой производительностью, то это вызовет перегрузку сети с возможной последующей остановкой работы сервера.
За 20 лет работы на рынке корпоративного софта для мобильных устройств. Клеверенс научились "компенсировать" такие расходы постоянно улучшая платформу.
В основном, все проблемы решаются грамотно установленным оборудованием и логически верным написанным кодом. Поэтому правильный подбор аппаратного и программного обеспечения минимизирует риск проявления сбоев работы системы.
С целью выявления основных причин возникновения ошибок в работе клиент-серверной архитектуры лучше всего провести сравнительный анализ работы двух систем: с высокими показателями отказоустойчивости и с низким.
Для разбора примера с наличием ошибок в проектировании системы подходит портал государственных и муниципальных услуг Российской Федерации (далее — Госуслуги), а в качестве стабильно работающей системы — видео хостинг YouTube.
Один из самых грубых недочетов в построении системы — это несоблюдение принципа централизации и выполнение на клиентской части операций, которые должны производиться на сервере. Так, в июле 2021 года сайт Госуслуг добавил счетчик обратного времени, ставящий пользователя в очередь. Но, как выяснилось позже, счетчик можно сбросить через код страницы, отредактировав время, тем самым пользователь моментально получал доступ к сайту (что не предусматривала система). То есть, пользователь получал доступ к ресурсам выше своих прав, что в корне не соответствует принципу работы веб-приложения. YouTube ни разу не был замечен в подобных упущениях при построении централизации веб-приложения. Клиент всегда ограничивался только тем спектром возможностей, которые предоставляет ему система.
Еще один важный аспект — это высокий уровень защиты. Чем более конфиденциальной и важной информацией о пользователе обладает приложение, тем чаще оно будет подвержено атакам. Нередки ситуации получения персональных данных пользователей Госуслуг путем мошеннических схем, а также случаи утечек исходного кода и данных о пользователях. YouTube в подобных инцидентах замечен не был, из-за своего подхода к информационной безопасности. Одна из основных причин — использование аккаунтов сервисов Google для аутентификации в системе, которые известны своей повышенной безопасностью за счет двухфакторной аутентификации.
Также, немаловажным аспектом является выбор аппаратного обеспечения сервера. Если серверное оборудование не будет удовлетворять необходимым требованиям, то веб-приложение будет работать с перебоями, так как запросы, полученные сервером, будут обрабатываться медленнее. Информации по поводу серверов, используемых госуслугами в открытом доступе, нет, но исходя из факта того, что сайт работает с частыми сбоями, можно сделать вывод, что аппаратное обеспечение не выдерживает полную нагрузку. В этом плане YouTube тоже не является идеальным, но общие показатели гораздо выше, чем у Госуслуг. Каждое загруженное на хостинг видео хранится в одном из 14 центров Google по обработке данных, расположенных по всему миру. Такая система позволяет поддерживать работу с нагрузкой до 1,9 млрд. пользователей ежемесячно, а также на YouTube приходится 37% всего мобильного трафика в мире (по статистике на 2019 год). В то время, как число пользователей Госуслуг в 2020 году достигло только 56 млн человек.
Исходя из вышеперечисленных наблюдений, можно сделать вывод что, несоблюдение принципов построения клиент-серверной архитектуры и нарушение ее основных правил, может привести к получению некачественного программного продукта, в котором технология клиент-сервер не может быть реализован со всей эффективностью.
Ну а подробнее о платформе Клеверенс можно прочитать в Базе Знаний компании разработчика https://www.cleverence.ru/support/category:606/