Rusau LearnВойти

Тестирование веб-приложений

Клиент-серверная архитектура: схема, тонкий и толстый клиент

Клиент-серверная архитектура – это устройство системы, в котором одни программы (клиенты) запрашивают данные и услуги, а другие (серверы) их предоставляют. Клиент, чаще всего браузер, отправляет HTTP-запрос, сервер обрабатывает его, при необходимости обращается к базе данных и возвращает ответ. Схема из клиента и сервера называется двухуровневой, а когда к ним добавляется сервер базы данных, архитектура становится трёхуровневой.

Мой видеоурок: Урок 11. Клиент-серверная архитектура. Веб-сайт, веб-приложение и веб-сервисОткрыть на YouTube
2 или 3 уровня
клиент и сервер или клиент, сервер и база данных
HTTP
протокол, по которому чаще всего общаются клиент и сервер
Собеседование
схему и примеры тонкого и толстого клиента спрашивают часто

Что такое клиент-серверная архитектура

Клиент-серверная архитектура распределяет работу в сети между поставщиками услуг, серверами, и их заказчиками, клиентами. И клиент, и сервер – это программы. Обычно они работают на разных компьютерах и обмениваются данными по сетевым протоколам, но могут располагаться и на одной машине.

Чаще всего клиент и сервер общаются по протоколу HTTP. Клиент отправляет запрос (HTTP request), сервер обрабатывает его и возвращает ответ (HTTP response). Самый привычный клиент – браузер: Chrome, Safari, Firefox или Opera. Адрес, введённый в адресную строку, уходит на сервер запросом, а страница на экране собирается из ответа.

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

Двухуровневая и трёхуровневая схема

Если в схеме только клиент и сервер, архитектуру называют двухуровневой: сервер сам готовит ответ и отправляет его клиенту. Когда данные хранятся в отдельной базе, появляется третье звено, сервер базы данных, и архитектура становится трёхуровневой. На собеседовании такую схему часто просят нарисовать, поэтому разницу стоит помнить.

Тестировщику схема подсказывает, в каком звене искать дефект. Если сервер прислал верные данные, а на экране они искажены, ошибка на стороне клиента. Ответ с кодом 500 указывает на сервер, а пустой ответ там, где запись точно была, даёт повод проверить базу SQL-запросом. Запросы и ответы видны во вкладке Network инструментов разработчика браузера.

Мой пример – поиск в социальной сети. По шагам он проходит так.

  • 1. Клиент отправляет запрос

    Пользователь вводит имя в строку поиска, и браузер отправляет на сервер HTTP-запрос.

  • 2. Сервер обращается к базе

    Сам сервер списка пользователей не хранит и запрашивает его у сервера базы данных.

  • 3. База отвечает серверу

    Сервер базы данных возвращает найденные записи.

  • 4. Сервер отвечает клиенту

    Сервер собирает из записей ответ и отправляет его браузеру, а браузер рисует список на экране.

Плюсы и минусы модели

Сильные и слабые стороны модели следуют из того, что вычисления и данные собраны на сервере.

  • Плюс: код сервера не дублируется

    Логика хранится в одном месте, и копировать её в каждую программу-клиент не нужно.

  • Плюс: клиенту хватает слабого компьютера

    Основные вычисления выполняет сервер, поэтому требования к машине пользователя ниже.

  • Плюс: данные под защитой

    Они хранятся на сервере, который обычно защищён лучше большинства клиентов. Там же проще настроить права, чтобы данные получали только клиенты с нужным доступом. Этим занимается системный администратор или DevOps-инженер.

  • Минус: сервер – единая точка отказа

    Если сервер не работает, перестаёт работать вся система, сколько бы клиентов ни было исправно.

  • Минус: нужны специалист и дорогое оборудование

    Сервер требует отдельного человека для поддержки, а серверное оборудование стоит дорого.

Тонкий и толстый клиент

Клиенты делят на тонкие и толстые. На собеседовании часто просят объяснить разницу и привести примеры, и нередко хватает самих примеров.

Тонкий клиент переносит всю или почти всю обработку данных на сервер. Бизнес-логика и вычисления находятся на сервере, а клиент отправляет запросы и показывает ответы. Пример – браузер, в котором открыто веб-приложение.

Толстый клиент сам выполняет основную работу, и сервер часто служит для него только хранилищем данных. Типичный пример – 1С:Бухгалтерия: учёт ведётся в программе на компьютере пользователя, а на сервер уходят данные, которые нужно сохранить в базе или достать из неё. К толстым клиентам относятся и онлайн-игры вроде "Танков": сама игра установлена у игрока, а на сервере хранится информация о пользователях.

От типа клиента зависит и набор проверок. Интернет-банк в браузере проверяют в разных браузерах и при разной ширине окна, а новая версия доходит до пользователя, стоит ему обновить страницу. У толстого клиента, например кассовой программы магазина, добавляются установка, обновление версии на каждом компьютере и обрыв связи: если программа умеет работать без сети, продажи должны сохраняться и уходить на сервер, когда связь вернётся.

Веб-сайт, веб-приложение и веб-сервис

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

  • Веб-сайт

    Связанные между собой веб-страницы с информацией: тексты, изображения, иногда музыка. Устроен просто, на основе HTML-разметки, и пользователь почти ничего не может на нём изменить, разве что заполнить форму подписки. Примеры – новостные и кулинарные сайты, прогноз погоды.

  • Веб-приложение

    Интерактивная программа, созданная для работы через интернет: пользователь вводит, получает и изменяет данные, а приложение постоянно обменивается запросами с сервером. Обычно в нём есть вход по логину и паролю, сообщения и контент под интересы пользователя. Примеры – Gmail, YouTube, социальные сети. У многих веб-приложений информационного содержания почти нет: онлайн-переводчики, мессенджеры, конвертеры файлов и валют нужны, чтобы выполнить задачу.

  • Веб-сервис

    Программный интерфейс (API) на сервере, который отдаёт данные клиенту по HTTP через стандартизированный обмен сообщениями. Через веб-сервисы программы общаются между собой, поэтому я связываю их с интеграционным уровнем тестирования.

  • SOAP и REST

    Веб-сервисы чаще всего строят по протоколу SOAP или в архитектурном стиле REST. SOAP строго стандартизирован и передаёт сообщения в XML, они получаются объёмнее. REST гибче, данные в нём чаще всего передают в JSON, и большинство современных сервисов выбирают его.

  • Пример: сервис расчёта доставки

    Интернет-магазин считает стоимость доставки через отдельный веб-сервис: передаёт город и вес заказа и получает цену и срок. Тестировщик проверяет этот сервис в Postman ещё до того, как готова страница оформления заказа: обычный город, город без доставки, нулевой и слишком большой вес. Ошибки расчёта находятся раньше, а на странице потом проверяют, верно ли она показывает ответ.

Видеоурок, шпаргалки и задания

Клиент-серверную архитектуру я разбираю в одиннадцатом уроке курса "Тестировщик с нуля" на YouTube, с которого в курсе начинается тестирование веб-приложений. В бесплатном базовом курсе по тестированию этой теме посвящён урок "Клиент-серверная архитектура", и после теории в нём идут задания.

Шпаргалка по архитектуре приложения продолжает тему: трёхуровневая схема, монолит и микросервисы, балансировщики нагрузки и очереди сообщений, а к ним то, что меняется в работе тестировщика. Шпаргалка о сети показывает, что происходит с запросом между нажатием Enter в адресной строке и ответом сервера.

Курсы по теме

Вопросы и ответы

Что такое клиент-серверная архитектура простыми словами?

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

Чем двухуровневая архитектура отличается от трёхуровневой?

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

Что такое тонкий и толстый клиент?

Тонкий клиент переносит обработку данных на сервер и в основном отправляет запросы и показывает ответы, как браузер. Толстый клиент выполняет основную работу сам, а сервер использует как хранилище данных. Примеры толстого клиента – 1С:Бухгалтерия и онлайн-игры.

Чем веб-сайт отличается от веб-приложения?

Веб-сайт в основном показывает информацию: новости, рецепты, прогноз погоды, и пользователь почти ничего на нём не меняет. Веб-приложение интерактивно: пользователь входит по логину и паролю, вводит и изменяет данные, а приложение постоянно обменивается запросами с сервером. Примеры – почта, видеохостинг, социальные сети.

Что такое веб-сервис?

Программный интерфейс (API) на сервере, через который программы обмениваются данными по HTTP. Экрана для человека у него нет, им пользуются другие приложения. Чаще всего веб-сервисы строят по протоколу SOAP с сообщениями в XML или в стиле REST, где данные чаще всего передают в JSON.

Могут ли клиент и сервер работать на одном компьютере?

Могут. Клиент и сервер – это программы, поэтому их можно запустить на одной машине, например при разработке. В рабочих системах сервер обычно стоит на отдельном мощном компьютере, потому что обслуживает много клиентов сразу.

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее