Логотип компании Goodbit
Степан

Степан

Руководитель Отдела по работе с Партнерами

Архитектура веб- приложений: компоненты, модели и типы

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

Ключевая терминология

Компоненты веб-приложений

Прежде чем мы начнем, давайте удостоверимся, что мы находимся на одной странице в отношении ключевых технических терминов, связанных с Интернетом. А именно, два структурных компонента веб-приложения, из которых состоит любое веб-приложение — клиентская и серверная части. Клиент — это удобное для пользователя представление функциональных возможностей веб-приложения, с которым взаимодействует пользователь. Написанный на HTML, JavaScript и CSS, он существует в веб-браузере пользователя и не требует каких-либо конкретных настроек, связанных с ОС/устройством. Для создания серверной части вам потребуются навыки разработки на PHP, Java, .NET, Python, Ruby on Rails или Node.js. Эта сторона обычно состоит еще как минимум из двух частей: веб-сервера с логикой приложения (или основного центра управления) и базы данных (хранилище всех постоянных данных). Если вы увеличиваете масштаб этой стороны, это означает, что вы увеличиваете количество веб-серверов и баз данных, чтобы повысить производительность и стабильность вашего веб-приложения.

Показать полностью

Архитектура веб-приложений

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

Показать полностью

Модели компонентов веб-приложения

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

Один веб-сервер (с базой данных)

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

Два+ веб-сервера, две+ базы данных

Эту модель можно считать наиболее отказоустойчивой: ни веб-серверы, ни базы данных не имеют единых точек отказа. Когда в наших проектах веб-разработки задействовано более 5 веб-серверов или баз данных, Goodbit устанавливает балансировщики нагрузки , которые анализируют все входящие запросы и разумно распределяют их, чтобы держать рабочую нагрузку под контролем. Скорее всего, условие «две+ базы данных» заставило вас задуматься о том, как данные работают в этой модели, и правда в том, что это еще один выбор, который вам предстоит сделать. Ваш первый вариант — хранить идентичные данные на каждой из ваших машин базы данных. Наш опыт показывает, что в этом случае обычно требуется не более 2-х баз данных, так как при выходе из строя одна другая может заменить ее без потерь. Ваша альтернатива — равномерно распределить данные между базами данных. Несмотря на очевидное преимущество экономии дискового пространства, этот вариант создает риск временной недоступности некоторых данных в случае сбоя базы данных. Чтобы гарантировать наилучшую производительность веб-приложения, мы в Goodbit обычно комбинируем два подхода и копируем важные данные, распространяя остальные.

Показать полностью

Два+ веб-сервера, одна база данных

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

Показать полностью

Микросервисы и бессерверные

Три приведенные выше модели часто называют «монолитными» из-за стабильной и жесткой природы веб-серверов в них. Микросервисы и бессерверные архитектуры были изобретены для повышения гибкости веб-приложений за счет упрощения обновлений и масштабирования. В обеих этих моделях веб-серверы разбиты на более мелкие компоненты: «сервисы» в микросервисах и «функции» (небольшие фрагменты кода, из которых состоят сервисы) в бессерверных. Каждый из этих небольших компонентов существует в отдельном контейнере и обрабатывается независимо, что упрощает его модификацию или масштабирование. В Goodbit мы видим большие возможности для бизнеса в этих архитектурных моделях, поскольку, как показал один из наших проектов микросервисов, они дешевле в обслуживании и позволяют быстрее выйти на рынок. Однако из-за усиленного взаимодействия между несколькими компонентами микросервисы и бессерверные веб-приложения могут обеспечивать более низкую производительность и создавать риски для безопасности при неправильной реализации.

Показать полностью

Не знаете, какая архитектура нужна вашему веб-приложению?

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

Обсудить

Типы архитектуры веб-приложений

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

Устаревшее HTML-веб-приложение

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

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

Виджет веб-приложение

В этом типе логика построения веб-страницы заменена веб-службами, а каждая страница на клиенте имеет отдельные сущности, называемые виджетами. Отправляя запросы AJAX к веб-службам, виджеты могут получать фрагменты данных в формате HTML или JSON и отображать их без перезагрузки всей страницы. Благодаря обновлению виджетов в режиме реального времени этот тип более динамичен, удобен для мобильных устройств и почти так же популярен среди наших клиентов, как и следующий тип. Тем не менее, мы всегда напоминаем об уменьшении безопасности этих приложений из-за того, что логика приложения частично перенесена на открытую клиентскую сторону. И, как показывает опыт Goodbit, эта архитектура веб-приложений требует самого длительного времени разработки.

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

Архитектура одностраничного веб-приложения

С одностраничными приложениями (SPA) вы загружаете одну веб-страницу только один раз. На стороне клиента эта страница имеет слой JavaScript, который может свободно взаимодействовать с веб-сервисами на сервере и, используя данные из веб-сервисов, обновлять себя в режиме реального времени. Как это работает, показано на диаграмме архитектуры веб-приложения ниже: Куски данных, передаваемых от сервера к клиенту, здесь минимальны, особенно по сравнению с первым типом. Мы считаем этот тип веб-приложения очень гибким, отзывчивым и легким, что позволяет легко преобразовать этот тип веб-приложения в гибридное мобильное приложение с помощью таких «оболочек», как Cordova/PhoneGap.

Куски данных, передаваемых от сервера к клиенту, здесь минимальны, особенно по сравнению с первым типом. Мы считаем этот тип веб-приложения очень гибким, отзывчивым и легким, что позволяет легко преобразовать этот тип веб-приложения в гибридное мобильное приложение с помощью таких «оболочек», как Cordova/PhoneGap.

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

Прогрессивные веб-приложения можно охарактеризовать как SPA, которые вводят дополнительные функции, такие как повышенная скорость работы, push-уведомления, автономная функциональность и установка на домашний экран. Как вы, возможно, заметили, большинство этих функций направлены на повышение удобства использования веб-приложений на мобильных устройствах, и именно поэтому мы в Goodbit считаем, что PWA никуда не денутся.

Сделайте мудрый выбор