Введение в бэкенд | За кулисами серверной части

Что такое Backend?

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

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

Важность бизнес-логики в бэкенде

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

Бизнес-логика — это то, что делает приложение уникальным и придает ему ценность. Это может включать сложные алгоритмы, искусственный интеллект, машинное обучение, обработку больших данных, сложную архитектуру и масштабируемость.

Например, серверная часть Facebook включает в себя сложные алгоритмы, которые анализируют пользовательские данные и рекомендуют персонализированный контент на основе интересов пользователя. Серверная часть Netflix использует машинное обучение, чтобы предсказать, какие фильмы и телепередачи могут понравиться пользователям, и соответственно рекомендовать их. Серверная часть YouTube использует обработку больших данных для анализа поведения пользователей и персонализации взаимодействия с пользователем.

Ключевые компоненты бэкенда

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

Серверы приложений и Интернет

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

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

В дополнение к бизнес-логике приложения также может быть веб-сервер, отвечающий за обслуживание статических файлов, таких как файлы HTML, CSS и JavaScript , а также любые другие свойства, требуемые приложением.

база данных

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

В веб-приложении на основе Node.js база данных обычно реализуется с использованием системы управления базами данных (СУБД), такой как MongoDB, MySQL или PostgreSQL. СУБД предоставляет способ хранения и извлечения данных с использованием структурированного формата, такого как SQL или JSON.

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

как работает интернет

Прежде чем мы углубимся в детали Node.js, важно понять, как работает Интернет.

Интернет основан на архитектуре клиент-сервер, где клиент (обычно веб-браузер) отправляет запросы на сервер, а сервер отвечает данными, отображаемыми в браузере. Когда пользователь вводит URL-адрес в веб-браузер и нажимает клавишу ввода, браузер отправляет HTTP-запрос на сервер, который отвечает HTML-документом, который обрабатывается в браузере. Браузер также может отправлять дополнительные запросы на сервер для получения изображений, листов CSS, файлов JavaScript и других ресурсов, необходимых для отображения страницы.

Статические и динамические сайты

Существует два типа веб-сайтов: статические и динамические, а также два типа подходов к рендерингу HTML-контента в Интернете: рендеринг на стороне сервера и рендеринг на стороне клиента. Мы подробнее остановимся на этих двух подходах далее в этой статье.

Статический веб-сайт — это веб-сайт, состоящий из файлов HTML, CSS и JavaScript, которые отображаются непосредственно в браузере пользователя. Контент на статическом веб-сайте не меняется очень часто и обычно закодирован в фиксированных HTML-файлах, которые вообще не меняются.

С другой стороны, динамический сайт — это сайт, использующий сценарии на стороне сервера для динамического создания HTML-страниц на основе пользовательского ввода или других факторов. Динамические веб-сайты обычно используют внутренний сервер для хранения и извлечения данных, а также используют языки сценариев на стороне сервера, такие как PHP, Python или Ruby, для создания HTML-страниц.

Обработка на стороне сервера и обработка на стороне клиента

Рендеринг на стороне сервера и рендеринг на стороне клиента — это два подхода к рендерингу HTML-контента в Интернете.

Рендеринг на стороне сервера — это процесс создания содержимого HTML на сервере и отправки его в браузер клиента. С другой стороны, рендеринг на стороне клиента — это процесс создания HTML-контента в браузере клиента с использованием JavaScript. Такой подход обычно используется для сайтов, требующих высокого уровня интерактивности и динамического контента. Клиентская часть этих сайтов обычно создается с помощью клиентских библиотек или фреймворков, таких как React, Vue или Angular.

Преимущества и недостатки обоих подходов в веб-приложениях

Рендеринг на стороне сервера и рендеринг на стороне клиента — это два разных подхода к рендерингу веб-страниц в веб-приложении, каждый со своими преимуществами и недостатками.

Рендеринг на стороне сервера (SSR)

Преимущества:

  • Улучшено время начальной загрузки: поскольку сервер отправляет клиенту полностью отрендеренный HTML, клиенту не нужно ждать загрузки и выполнения JavaScript перед отображением содержимого.
  • Лучшее SEO: поисковые системы могут легче индексировать полностью обработанные HTML-страницы, чем страницы, которые зависят от обработки на стороне клиента.
  • Улучшенная доступность: обработка на стороне сервера может улучшить доступность для пользователей с медленным или ненадежным подключением к Интернету, а также для пользователей, которые полагаются на вспомогательные технологии, такие как программы чтения с экрана.

Недостатки:

  • Высокая нагрузка на сервер: поскольку сервер отвечает за рендеринг HTML для каждого запроса страницы, обработка на стороне сервера может создать более высокую нагрузку на сервер, что может создать большую нагрузку на сервер, когда ему нужно обслуживать много пользователей.
  • Ограниченная интерактивность: поскольку клиент получает полностью визуализированную HTML-страницу, эта страница может быть не такой интерактивной, как страница, визуализированная с использованием клиентской визуализации, поскольку для отображения обновленного содержимого могут потребоваться дополнительные вызовы сервера.

Рендеринг на стороне клиента (CSR)

Преимущества:

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

Недостатки:

  • Более медленное время начальной загрузки: поскольку клиент должен загрузить и запустить пакет JavaScript, прежде чем можно будет отобразить содержимое, страницы, отображаемые с использованием визуализации на стороне клиента, могут иметь более медленное время начальной загрузки, особенно при более медленных соединениях.
  • Плохая поисковая оптимизация: поскольку поисковые системы не могут легко индексировать динамически генерируемый контент, страницы, отображаемые с использованием обработки на стороне клиента, могут быть не такими оптимизированными для SEO, как страницы, отображаемые с помощью обработки на стороне сервера.
  • Проблемы доступности. Страницы, отображаемые с помощью рендеринга на стороне клиента, могут создавать проблемы с доступностью для пользователей с более медленным подключением к Интернету или пользователей, использующих вспомогательные технологии.

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

API-серверы

Мы видели, что есть серверы, отвечающие за обработку на стороне сервера, и они создают HTML-страницы, которые будут использоваться браузером клиента. Но с развитием клиентской стороны, как уже упоминалось, когда представления создаются непосредственно на клиентской стороне, серверам больше не нужно обслуживать HTML-контент. Теперь они могут выставлять только те данные, которые будут потребляться клиентом на стороне клиента любым возможным способом.

С появлением клиентских библиотек и фреймворков, таких как React, Angular и Vue.js, рендеринг на стороне клиента стал более распространенным. При таком подходе сервер отвечает только за предоставление данных клиенту в формате, который может быть легко использован кодом JavaScript, например JSON.

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

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

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