Howtojs

Frontend- и backend-разработка: в чем разница?

27 февраля 2021 г. • ☕️ 5 мин.

Frontend и backend можно трактовать по-разному, но в контексте веб-разработки, чаще всего это означает клиент-серверную архитектуру разработки приложений.

Для начала нужно понять, как вообще можно разрабатывать приложения?

Приложения, разрабатывают под определенную среду исполнения (платформу).

Какие платформы бывают и что это?

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

Пример платформ:

  • iOS
  • Android
  • Windows
  • Lunux
  • macOS
  • Arduino и различные микроконтроллеры
  • web browser (Chrome/Safari/…)

Как видите, платформа не всегда означает операционную систему. Операционная система может отсутствовать вообще. Также платформа может быть построенна поверх операционной системы, как например, приложение web browser (Chrome/Safari/…) либо виртуальная машина для Java (JVM).

Классическое приложение имеет монолитную архитектуру - все в одном.

Примеры таких приложений:

  • мобильное приложение для Android или iOS
  • приложение для командной строки (Сommand-line interface или CLI) для Windows/macOS/Linux
  • приложение для персонального компьютера с графическим интерфейсом (GUI - Graphic User Interface) для Windows/macOS/Linux
  • приложение “демон” для работы в фоне
  • Одностраничное (SPA) web приложение для браузера (Chrome/Safari/…)

Зачем придумали другие архитектуры построения приложений?

Представим, что мы пишем приложение интернет магазина для web browser на подобии ebay, где разные пользователи могут покупать товары друг у друга.

Что нам для этого нужно?

  • написать интерфейс взаимодействия (GUI/CLI/Голосовые команды/…)
  • написать бизнес-логику (процессы покупки/добавления товаров/возврата денег)
  • позаботиться о хранении данных (продукты магазина/корзина пользователя/цены)

Здесь мы сразу видим две проблемы.

  • Что если мы изменили бизнес-процессы, но пользователь не скачал новую версию приложения?
  • Как пользователь А купит товары пользователя Б, если у каждого из них свое устройство, а соответственно и своя память?

Для того, чтобы решить это, мы можем разбить наше монолитное приложение на две части.

Серверная часть

  • бизнес-логика
  • хранение данных

Серверная часть одна для всех пользователей (один источник истины), так пользователь А сможет купить товары пользователя Б.

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

Клиентская часть

  • интерфейс взаимодействия (GUI/CLI/Голосовые команды/…)
  • возможно часть бизнес-логики

Копия клиентской части поставляется каждому пользователю.

Клиентом может быть любой компьютер, который находиться под контролем пользователя.

Коммуникация

Список товаров хранится на сервере. Как клиент сможет их увидеть? Нам нужно научить их общаться. Для общения можно использовать сеть интернет. Протокол HTTP отлично подойдет для данной задачи.

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

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

Frontend

Соответственно frontend-разработка - это разработка клиентской части приложения. Любое приложение может выступать в роли клиента.

Backend

Backend-разработка - это разработка серверной части приложения.