Как развернуть веб-сервис?
В этой статье мы обсудим веб-сервисы, их преимущества, варианты развертывания веб-сервисов и их сравнение с API.
Кроме того, вы узнаете, как развернуть веб-сервис электронной коммерции в облаке без написания собственного кода!
Contents
- 1 Основные выводы
- 2 Что такое веб-сервис?
- 3 Веб-сервис против API
- 4 Преимущества веб-сервисов
- 5 Варианты развертывания веб-служб
- 6 Как развернуть веб-службу?
- 7 Заключение
Основные выводы
- Понимание роли веб-сервисов: Веб-сервисы являются ключевым компонентом современной цифровой инфраструктуры, предлагая такие значительные преимущества, как совместимость, независимость от платформы, масштабируемость и безопасность.
- Изучение вариантов развертывания: Развертывание веб-сервисов может осуществляться несколькими способами, включая обычный хостинг, платформу как услугу (PaaS), контейнеры как услугу (CaaS) и бэкэнд как услугу (BaaS).
- Руководство по развертыванию веб-сервиса в облаке: Статья содержит исчерпывающее руководство по развертыванию веб-сервиса электронной коммерции с помощью платформы BaaS без кода.
Что такое веб-сервис?
Веб-сервис – это программное обеспечение, доступное через Интернет, как правило, по протоколу передачи гипертекста (HTTP). Данные, обслуживаемые веб-сервисом, имеют стандартный формат, такой как XML, JSON, SOAP или YAML.
Веб-сервисы используются для межмашинного взаимодействия, а не для непосредственного потребления конечным потребителем.
Например, ваше мобильное устройство использует веб-службу погоды для получения информации о погоде, а затем отображает ее в удобном формате.
Существует несколько типов веб-сервисов, таких как Representational State Transfer (REST), GraphQL и gRPC.
Типичный жизненный цикл веб-сервиса выглядит следующим образом:
- Веб-сервис прослушивает определенный порт на каком-либо сервере.
- Клиент отправляет запрос на веб-сервис через этот порт.
- Веб-служба выполняет запрос и возвращает ответ. Перед обработкой ответа сервер также может аутентифицировать и авторизовать запрос.
- Клиент обрабатывает ответ.
Веб-сервисы известны своей платформенной и языковой независимостью, возможностью повторного использования, масштабируемостью, гибкостью и свободной связью. В наши дни их использует практически каждая ИТ-компания.
Веб-сервис против API
Веб-сервис и API – похожие термины, но их не стоит использовать как взаимозаменяемые.
Проще говоря, веб-сервис – это API, доступный строго через интернет. Это означает, что все веб-сервисы являются API, в то время как не все API являются веб-сервисами.
API не только являются веб-сервисами, но и могут выполнять другие функции. Например, взаимодействие с операционной системой, взаимодействие с локальными приложениями и интеграция приложений.
Двумя примерами API, не относящихся к веб-сервисам, являются API файловой системы Python и JavaScript DOM API.
Преимущества веб-сервисов
Веб-сервисы – это фундаментальный аспект современной цифровой инфраструктуры, предлагающий множество преимуществ. Давайте поговорим о них!
Операционная совместимость
Одним из ключевых преимуществ веб-сервисов является их способность облегчать взаимодействие между различными системами и приложениями.
Придерживаясь стандартизированных протоколов, таких как HTTP и XML, веб-сервисы обеспечивают безупречную связь между различными программными компонентами, независимо от лежащего в их основе технологического стека.
Независимость платформы
Еще одно достоинство веб-служб – их полная независимость от платформы. Они могут быть реализованы на любом языке программирования и работать на любой операционной системе, включая Windows, Linux и MacOS.
Как уже говорилось в предыдущем разделе, их можно потреблять на любой платформе.
Простота и эффективность
Веб-сервисы легко понять и реализовать. Чаще всего они даже не имеют собственного состояния. Вместо этого они используют базу данных или другой программный компонент.
Они предлагают простой подход к доступу к функциональности по сети. Эта простота помогает обеспечить согласованность взаимодействия, облегчая понимание и использование сервисов на разных платформах и технологиях.
Масштабируемость
Веб-сервисы отличаются высокой масштабируемостью. Они могут обслуживать любой трафик путем вертикального масштабирования, то есть добавления дополнительных ресурсов к серверному узлу, или горизонтального масштабирования, то есть порождения дополнительных серверных узлов.
Это поможет вам значительно сократить расходы за счет того, что ни один вычислительный ресурс не будет потрачен впустую.
Возможность многократного использования
Самое лучшее в веб-сервисах – это возможность многократного использования. Вместо того чтобы интегрировать один и тот же код в несколько приложений, все они могут использовать один экземпляр веб-службы.
Многократное использование приводит к уменьшению объема кодовой базы, улучшению централизации и позволяет экономить ресурсы.
Безопасность
Веб-службы могут использовать аутентификацию, авторизацию, шифрование и другие меры безопасности. Большинство веб-служб защищены с помощью шифрования SSL/TSL.
Все это обеспечивает конфиденциальность (только отправитель и получатель могут прочитать сообщение) и целостность (сообщение не изменяется при передаче).
Варианты развертывания веб-служб
Веб-службы могут быть как самостоятельными, так и развернутыми в облаке. Наиболее популярными облачными вариантами для развертывания веб-служб являются:
- Платформа как услуга (PaaS)
- Контейнеры как услуга (CaaS)
- Бэкэнд как услуга (BaaS)
У каждой облачной модели есть плюсы и минусы, которые следует учитывать при развертывании проекта. Наиболее важными факторами, которые следует учитывать, являются простота использования, бюджет, производительность и возможности.
Обычный хостинг
Обычный хостинг – это традиционный подход к размещению веб-сайтов и приложений. Серверы могут размещаться самостоятельно или предоставляться хостинговыми компаниями.
При традиционном хостинге вы обычно арендуете место на сервере на ежемесячной или ежегодной основе.
Основные характеристики обычного хостинга включают:
- Серверное пространство – различные планы серверного пространства в зависимости от потребностей вашего приложения
- Инструменты управления сайтом – удобные инструменты для управления сайтом, например, cPanel
- Email Hosting — услуги хостинга электронной почты, которые позволяют привязать к ним домен
- FTP-доступ – доступ к файлам сервера можно получить через FTP или защищенный FTP (SFTP)
Одним из главных преимуществ обычного хостинга является его доступность, особенно для небольших сайтов и предприятий.
Однако ему не хватает масштабируемости и гибкости по сравнению с облачными решениями. Кроме того, традиционный хостинг сложнее в настройке.
Платформа как услуга (PaaS)
Платформа как услуга (PaaS) позволяет клиентам создавать, администрировать и распространять приложения в облаке.
Кроме того, PaaS-компании предоставляют множество готовых инструментов для создания, настройки и тестирования приложений.
По сравнению с IaaS, PaaS более прост в использовании и требует меньше опыта в системном администрировании.
Кроме того, вы можете воспользоваться балансировщиками нагрузки, управляемыми базами данных и автоматическим резервным копированием. По сравнению с IaaS, PaaS обладает меньшей свободой и контролем и имеет более высокий риск привязки к поставщику.
Контейнеры как услуга (CaaS)
Контейнеры как сервис (CaaS) – еще одна популярная модель облачных вычислений. CaaS упрощает разработку, выполнение, развертывание и поддержку контейнерного программного обеспечения. Она часто сочетается с Docker и Docker Compose.
Большинство платформ CaaS предоставляют:
- Движок Docker Engine
- Реестр контейнеров
- Возможности масштабирования
Главное преимущество контейнерного программного обеспечения заключается в том, что его можно развернуть где угодно. Нет привязки к производителю, а значит, вы можете свободно переходить от одного облачного провайдера к другому. Это особенно полезно для веб-сервисов.
Бэкэнд как услуга (BaaS)
Backend as a Service (BaaS) – это модель облачных вычислений, которая берет на себя заботу о вашей инфраструктуре и автоматизирует бэкэнд-часть разработки.
Кроме того, он предлагает такие возможности, как база данных в реальном времени, хранение файлов, интеграция с социальными сетями, уведомления по электронной почте и push-уведомления и многое другое.
В результате разработчики могут сосредоточиться на создании фронт-энда, не заботясь об инфраструктуре и бэкэнде.
Фронтенд часто строится с использованием собственных API и SDK поставщика BaaS. Использование BaaS позволяет упростить кодовую базу и сделать ее более удобной для обслуживания.
BaaS обладает всеми преимуществами IaaS и PaaS, обеспечивая при этом уровень абстракции бэкэнда. Используя BaaS, команды сокращают время вывода продукта на рынок и экономят средства на разработку и рабочую силу.
Как развернуть веб-службу?
В этом разделе статьи будет представлено пошаговое руководство по развертыванию веб-сервиса на платформе Back4app. Мы будем использовать бескодовое решение BaaS от Back4app.
Если вас интересуют решения, созданные на заказ, ознакомьтесь со следующими статьями:
- Развертывание веб-сервиса Flask в контейнерах Back4app
- Развертывание веб-сервиса Node.js в контейнерах Back4app
- Развертывание веб-сервиса PHP в контейнерах Back4app
- Развертывание веб-службы FastAPI в контейнерах Back4app
Что такое Back4app?
Back4app – одно из самых популярных решений в сфере Backend as a Service (BaaS).
Используя его, вы сможете значительно ускорить процесс разработки и сосредоточиться на элементарных аспектах вашего приложения – таких как бизнес-логика и фронтенд, а Back4app займется всем остальным.
Back4app обеспечивает развертывание без кода и с пользовательским кодом. Он прост в использовании и практически не требует обучения. Он подходит как для начинающих, так и для более опытных разработчиков.
Самое замечательное в Back4app то, что он автоматически генерирует RESTful и GraphQL API на основе классов вашей базы данных.
Кроме того, он предоставляет SDK практически для всех популярных языков программирования и фреймворков, таких как React, Android, iOS и других!
Основные функции Back4app
- Базы данных, подобные электронным таблицам
- Управление пользователями и аутентификация
- Автоматическая генерация API
- Функции и планирование облачного кода
- Данные в режиме реального времени
Чтобы следить за статьей, вам понадобится бесплатная учетная запись Back4app. Если у вас его нет, вы можете его создать.
Введение в проект
На протяжении всей статьи мы будем создавать простой веб-интерфейс электронной коммерции.
API будет предоставлять функции управления товарами, категориями товаров и покупками. Он позволит нам выполнять операции создания, чтения, обновления и удаления (CRUD) для каждого класса базы данных.
Кроме того, с помощью Cloud Code мы реализуем пользовательские функции для подсчета статистики электронной коммерции, например, общего объема продаж и самых популярных товаров.
Наконец, мы протестируем API с помощью встроенной консоли Back4app REST и GraphQL Console.
Создать приложение
Чтобы работать с Back4app, вам сначала нужно создать приложение. Для этого авторизуйтесь, используя свою учетную запись Back4app, и нажмите “Создать новое приложение” на панели приложений.
Платформа Back4app позволяет развертывать два типа приложений:
- Бэкэнд как услуга (BaaS)
- Контейнеры как услуга (CaaS)
Обе модели облачных вычислений позволяют развертывать веб-сервисы.
Основное отличие заключается в том, что BaaS – это полноценный бэкенд, а CaaS позволяет развертывать контейнерные веб-сервисы.
Другими словами, BaaS – это решение, в основном не требующее кода, а CaaS – решение с пользовательским кодом.
Мы будем использовать Backend as a Service (BaaS).
При создании приложения Back4app вы можете выбрать базу данных NoSQL или SQL. Для нашего случая это не имеет значения, поэтому мы остановимся на NoSQL.
Дайте своему приложению хорошее название и нажмите “Создать”.
Подождите, пока Back4app позаботится обо всем, включая базу данных, уровень приложений, масштабирование, настройку управления пользователями и т.д. Это займет примерно 2 минуты.
После этого вы будете перенаправлены к представлению вашей базы данных.
Разработка базы данных
Двигаясь дальше, давайте разберемся с базой данных.
По умолчанию приложение Back4app поставляется с классом базы данных _Role
и _User
. Эти два класса используются для управления пользователями и аутентификации.
Эти темы выходят за рамки данного руководства, но вы можете ознакомиться с ними в других наших статьях.
Чтобы создать веб-интерфейс электронной коммерции, мы создадим следующую структуру базы данных:
Начнем с создания класса ProductCategory
.
Нажмите “Добавить класс” на боковой панели, чтобы создать новый класс базы данных. Назовите его “ProductCategory”, включите “Public Read and Write” и нажмите “Create class & add columns”.
Добавьте в него следующие столбцы:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
Далее выполните те же действия, чтобы создать класс Product
:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories | true | yes |
+-----------------------------+-------------+---------------+----------+
| Number | price | 0.0 | yes |
+-----------------------------+-------------+---------------+----------+
| Boolean | inStock | true | yes |
+-----------------------------+-------------+---------------+----------+
И наконец, позаботьтесь о классе Purchase
:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product | product | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| Number | quantity | 1 | yes |
+-----------------------------+-------------+---------------+----------+
Отлично, вы успешно создали структуру базы данных.
Как видите, тип данных Pointer
обрабатывает отношения 1:n
(один ко многим), а тип данных Relation
– отношения n:m
(многие ко многим).
Последнее, что необходимо сделать, – заполнить базу данных несколькими категориями товаров, продуктами и покупками. Это позволит нам позже протестировать веб-службу, чтобы убедиться, что все работает так, как ожидалось.
Чтобы заполнить базу данных, вы можете либо:
- Самостоятельно создайте несколько категорий товаров, продуктов и покупок
- Импортируйте эти экспорты баз данных с GitHub (“More > Import > Class Data”).
Использование веб-сервисов
Чтобы подключиться к веб-сервису, Back4app использует несколько подходов:
- Автоматически генерируемый RESTful API
- Автоматически генерируемый API GraphQL
- Parse SDK
Давайте рассмотрим каждый из них!
REST API
Передача репрезентативного состояния (REST) – это протокол на основе HTTP, использующий такие методы HTTP, как OPTIONS
, GET
, POST
, DELETE
и так далее.
Большинство API, с которыми вы взаимодействуете в наши дни, основаны на REST. Он поддерживает множество форматов данных, но наиболее часто используется JSON.
REST – это эффективный, высокомасштабируемый и платформонезависимый протокол. Его можно использовать с любым языком программирования или фреймворком.
Его главные минусы – избыточная или недостаточная выборка данных, отсутствие подписок в реальном времени и системы версионирования API.
Чтобы протестировать REST API, выберите “API > Консоль > REST” и выполните следующий запрос:
Этот запрос должен дать следующий ответ:
Чтобы узнать больше, прочитайте статью Как создать REST API?
API GraphQL
GraphQL – это серверный язык выполнения и запросов, используемый для создания интерфейсов прикладного программирования (API).
GraphQL позволяет клиентам запрашивать конкретные данные из API, а не полагаться на то, что бэкэнд предоставит заранее определенный набор данных.
К его преимуществам относятся гибкость, удобство обслуживания и наличие расширений GraphQL. С другой стороны, минусами являются сложность, более сложная кривая обучения и отсутствие стандартизации.
Чтобы протестировать API GraphQL, выберите “API > Консоль > GraphQL” и выполните следующий запрос:
Чтобы узнать больше, прочитайте статью Как создать GraphQL API?
Parse SDK
Parse SDK – это рекомендуемый подход, если ваш фронтенд построен на языке программирования или фреймворке, которые поддерживает Parse SDK.
Среди них React Native, Flutter, Android, iOS, JavaScript, IONIC и Xamarin.
Набор средств разработки программного обеспечения (SDK) Parse предоставляет классы и функции для поиска данных, манипулирования ими, аутентификации пользователей, работы с данными в режиме реального времени, функции Cloud Code и многое другое.
Пример кода получения данных на JavaScript выглядит следующим образом:
Документация API
Еще одна замечательная особенность Back4app заключается в том, что он автоматически генерирует документацию для всех классов вашей базы данных.
Документация включает описания моделей, практические примеры, инструкции по работе с ошибками и многое другое.
Выберите “API > API Reference” на боковой панели, чтобы просмотреть документацию.
Облачный код
Автоматически генерируемые API – это здорово, но с их помощью можно сделать далеко не все. Например, если вы хотите выполнить сложные запросы, агрегировать данные или выполнить пользовательский код, вам необходимо использовать функции Cloud Code.
Функции Cloud Code – это предложение компании Back4app по предоставлению функций как услуги (FaaS). Они позволяют вам определять пользовательские функции JavaScript, которые вы можете запускать через API или планировать на определенное время.
Создание функций облачного кода
Давайте создадим две функции Cloud Code для расчета статистики электронной коммерции:
totalRevenue()
вычислит общую выручку, суммируя покупкиtopTenPopularProducts()
вернет самые популярные товары на основе покупок
Сначала перейдите к разделу “Cloud Code > Функции и веб-хостинг” на боковой панели.
Вы заметите, что экран разделен на две панели. Слева – структура каталогов, справа – ввод кода.
По умолчанию используются следующие каталоги:
- облако, используемое для функций Cloud Code и другого кода
- публичный каталог, автоматически обслуживаемый Back4app (статические активы, CSS, HTML)
Перейдите к файлу main.js.
Затем поместите внутрь следующий код:
И наконец, нажмите кнопку “Развернуть”, чтобы развернуть функции в облаке.
Приведенный выше код был сгенерирован с помощью Back4app Agent – AutoGPT для разработчиков. Агент тесно интегрирован с Back4app и Back4app Containers. Он позволяет создавать приложения, изменять их настройки, генерировать пользовательский код и многое другое.
Тестирование функций облачного кода
В этом последнем разделе мы протестируем только что реализованные функции Cloud Code.
Сначала выберите “API > Консоль > JavaScript” на боковой панели, а затем вставьте следующий код:
Чтобы запустить его, нажмите “Run” в правом верхнем углу экрана.
Вы должны получить следующие ответы:
// `totalRevenue` output
{
"result": 9385.389999999994
}
Чтобы запустить другую функцию, замените totalRevenue
на topTenPopularProducts
.
// `topTenPopularProducts` output
{
"result": [
{"objectId": "SA5mUfq9Ll", "name": "Science Fiction Novel", "count": 3},
{"objectId": "fV0DFPFlnz", "name": "Yoga Mat", "count": 3},
{"objectId": "gA4zn19Udo", "name": "Smartphone", "count": 2},
{"objectId": "UKeOHJkJ7l", "name": "Winter Jacket", "count": 2},
{"objectId": "8PodlEps2R", "name": "Espresso Machine", "count": 2},
{"objectId": "S15WrDgrpk", "name": "Hair Dryer", "count": 2},
{"objectId": "8O2D1egX51", "name": "4K Television", "count": 1},
{"objectId": "RriSWMDg48", "name": "Face Cream", "count": 1},
{"objectId": "Cq3Hqww69Q", "name": "Blender", "count": 1}
]
}
Заключение
В заключение вы узнали о веб-сервисах, их преимуществах, вариантах развертывания и о том, чем они отличаются от API. Теперь вы также должны быть в состоянии развернуть свой собственный веб-сервис в Back4app BaaS.
Дополнительные ресурсы статьи смотрите в репо back4app-web-service.