Архитектура приложения

Three-tier architecture

Архитектура приложения — это своего рода «каркас» системы. В жизненном цикле программного обеспечения разработка архитектуры начинается на этапе дизайна.

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

Трёхуровневая архитектура

Обычно архитектура приложения описывается слоями:

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

Пользовательский интерфейс

Frontend

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

Пример фронтенд-интерфейса — форма «Вход в систему».

При тестировании фронтенда проверяют:

  • корректность отображения и обновления данных
  • валидацию и ограничения при вводе данных
  • наличие и понятность сообщений об ошибках
  • реакцию интерфейса на действия пользователя (клики, ввод)
  • корректность и формат запросов, отправляемых на сервер
  • отображение интерфейса на разных устройствах

Обратите внимание, форма «Вход в систему» содержит баги.

Попробуй
Вход в систему
Cat is logging in

Бизнес-логика

Backend

Бэкенд — это «невидимая» часть приложения, где происходит обработка данных. Он принимает запросы с фронтенда, выполняет нужные операции и возвращает результат.

Типичные задачи бэкенда:

  • проверка и обработка данных
  • выполнение бизнес-логики
  • обращение к базе данных
  • формирование ответа для фронтенда
if email does not match format:
    result = "Неверный формат email"

elif db.getUser == found:
    result = "Успешный вход"

send(result)

Пример бизнес-логики для формы «Вход в систему»

База данных

Database

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

Когда пользователь хочет войти в свой аккаунт, бэкенд отправляет запрос в базу данных: «Найди пользователя с таким логином и паролем». База данных находит нужные данные, добавляет новые или изменяет старые.

имя почтовый_адрес пароль
tester-today tester.today.help@gmail.com password
... ... ...

Пример таблицы в базе данных

Как взаимодействуют уровни

1

Пользователь

вводит данные на фронтенде

2

Фронтенд

отправляет запрос на бэкенд

3

Бэкенд

обрабатывает запрос и обращается к базе данных

4

База данных

возвращает данные

5

Бэкенд

отправляет ответ на фронтенд

6

Фронтенд

отображает результат пользователю

Уровни работают как единое целое, но при этом каждый отвечает за свою задачу. Такое разделение облегчает разработку, тестирование и масштабирование системы.

Задача

Сценарий: пользователь входит в аккаунт через форму. Нужно определить, какой слой архитектуры отвечает за каждое действие в этом процессе.

Какой слой архитектуры отвечает за каждое из действий?

Интерфейс показывает пользователю сообщение рядом с формой.

Записи пользователей хранятся в таблицах: логины, пароли и другие данные аккаунта.

Серверная логика проверяет формат, сравнивает данные и решает, какой ответ вернуть.

Интерфейс собирает введенные данные и отправляет запрос на сервер.