Сегодня практически 90% сервисов в Интернете работают, используя архитектуру клиент-сервер. Но при этом ещё не все понимают её смысл и принцип работы. Давайте это исправим! Что же такое клиент-серверная архитектура? Это это такая система организации сети, в которой выполняемые задачи условно делятся между двумя подсистемами: клиентом и сервером. Клиент — это объект, запрашивающий информацию по сети. В его роли выступает обычно персональный компьютер, ноутбук, планшет или смартфон. Сервер — это тоже компьютер (обычно очень мощный и высокопроизводительный компьютер или целый мэйнфрейм). Самый просто пример — Вы скачиваете какой-нибудь документ или музыкальную запись из Интернета. Ваш компьютер — клиент, а сайт, с которого Вы качаете информацию — это сервер.
При этом достаточно часто используются такие термины, как «upstream» и «downstream», обозначающие передачу данных от одного устройства к другому в разных направлениях. С точки зрения пользователя локальной сети или сети Интернет, «upstream» — это исходящий поток данных, который отправляется от его компьютера к удаленному, расположенному в другой точке сети. А «downstream» — это входящий поток, то есть информация передаётся уже в обратном направлении, от удаленного компьютера к пользователю.
Архитектура Клиент-Сервер
Клиент-серверная архитектура представляет собой иерархическую сеть, которая состоит из узлов-клиентов (их может быть от одного и до неограниченного количества) и центрального сервера, через который выполняется хранение и обработка данных, а так же передача их в обоих направлениях. На текущий момент большая часть Интернета и локальный сетей используют именно архитектуру Клиент-Сервер для приема и передачи данных и медиаконтента. Простейшая схема клиент-серверной архитектуры в локальной сети выглядит так:
Если рассматривать глобальную сеть — Интернет, то там различий нет, всё фактически то же самое. Вот схема:
Как говорится, найди пять отличий. Даже в тех случаях, когда один пользователь отправляет другому файл через электронную почту, мессенджер или облачное хранилище, всё равно происходит взаимодействие Клиент-Сервер. Сначала один клиент отправляет на сервер файл, сервер его обрабатывает и либо отправляет дальше, другому клиенту, либо хранит его, чтобы второй клиент зашёл и скачал файл себе. Как Вы понимаете, любой сайт в Интернете — это сервер, который отвечает за передачу данных между клиентами.
Плюсы и минусы клиент-серверной архитектуры
Как и любая другая технология, клиент-серверная архитектура имеет свои преимущества и свои недостатки. Рассмотрим их.
Преимущества:
- Выполнение бОльшей части работы мощной серверной частью при минимуме нагрузки на клиента.
- Основная часть данных хранятся на сервере. При этом, как правило, он лучше защищён от различного вида угроз, чем обычный клиентский ПК.
- Возможность более чёткого разграничения полномочий доступа к разным уровням информационной системы. Каждому клиенту — свой уровень доступа.
- Кроссплатформенность. Проще говоря, любой клиент может работать с ресурсами сервера вне зависимости от используемой операционной системы.
- Уменьшение нагрузки на сеть ввиду того, что клиент в основном передаёт серверу команды, а тот уже их исполняет.
Недостатки:
- Выход из строя сервера может привести к неработоспособности всей системы, его использующей.
- Высокая стоимость серверного оборудования и его обслуживания (в частности, может потребоваться отдельный специалист для обслуживания).
- Высокая нагрузка на серверное оборудование и канал связи до него.