Клиент-серверная архитектура — это метод проектирования современных приложений (веб или мобильное приложение, программа, которая используется в локальной сети).
2-х уровневая клиент-сервер архитектура
Начнем с двухуровневой клиент-сервер архитектуры, на картинке справа снизу клиент — сервер.
Клиент (пользователь) — та часть ПО, которая установлена на компьютере пользователя. Клиент отправляет какой-либо запрос, нажимая ту же кнопку в браузере, у нас на самом деле формируется запрос, который посредством транспорта, посредством сети (в данном случае у нас сеть служит транспортом этому запросу и отправляет этот запрос на сервер).
Сервер это мощная машина в которой хранится вся логика нашего приложения на которой выполняется весь программный код. Это дает преимущество тому, что наше приложение, например, которое мы разработали могут запускать клиенты даже со слабой машины.
Например, достаточно того, чтобы на компьютере или телефоне поддерживался интернет и можно было слать и получать запросы.
Сервер обрабатывает этот запрос от клиента и уже отдает ему ответ посредством транспорта по той же сети. Запрос возвращается клиенту, где клиент уже видит результат этого ответа в понятной для себя форме (клиент видит результат в виде каких-либо кнопок, картинок или как страницу какого-либо веб-сайта).
Вся информация о пользователе в 2-х уровневой клиент-серверной архитектуре хранится на сервере. Вся логика (бэкэнд) на сервере и если, что-то с сервером случится, он “упадет” тогда вся хранящаяся информация в его памяти может пропасть.
3-х уровневая клиент-сервер архитектура
Более надежной считается 3-х уровневая клиент-серверная архитектура, потому что она дополнительно включает отдельный сервер с базой данных. (на рисунке слева, клиент — сервер — база данных)
Клиент (пользователь) отправляет запрос на сервер, сервер принимает этот запрос и обращается уже к серверу с базой данных о запросе информации об этом конкретном пользователе.
Например, к операционисту банка приходит клиент и операционист отправляет запрос на сервер, сервер обрабатывает информацию, выдаёт только ту информацию, которую положено видеть операционисту.
Эта схема позволяет разграничить доступ к базе данных. Например, чтобы совершить крупную операцию, необходимо подтверждение управляющего банка.
Многоуровневая клиент-сервер архитектура
У нас может быть высоконагруженное приложение, например какая-либо социальная сеть, там сотни тысяч серверов и в этом случае у нас работает балансировщик. (на картинке сверху, клиент — балансировщик — сервер 1,2 — база данных).
Клиент отправляет запрос, балансировщик ловит этот запрос и отправляет его на менее нагруженный сервер — эта схема называется схема горячего резерва.
Схема холодного резерва это когда сервер 1 перестает работать, из-за технических неполадок (“упал”), тогда сервер 2 включается в работу.
Сервера обращаются к базе данных, которая получая возвращает информацию к серверу, а сервер возвращает информацию клиенту.
Возможно балансировщик может стоять перед базой данных. Может быть несколько баз данных, если приложение крупное.
Клиент эта та часть ПО, которая работает у нашего пользователя, к её работе минимальные требования по железу, что позволяет наше приложение распространить на широкий круг пользователей. Сервер мощная машина на которой выполняется вся логика программы, весь программный код. И база данных — это сервер с хранилищем на котором хранится вся информация о пользователях.