Что такое бессерверные функции?

Функция как услуга (FaaS)

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

Contents

Что такое бессерверная функция?

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

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

Как работают бессерверные функции?

Большинство современных приложений разделены на две части: фронтенд и бэкенд. Фронтенд – это то, что видит пользователь и с чем он может взаимодействовать, а бэкенд – это все, что пользователь не видит. Это бизнес-логика, хранилище данных, базы данных, API и так далее.

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

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

Наш бессерверный бэкэнд, скорее всего, будет включать следующие функции:

getProductList()                       -> retrieves the products from the database
getProduct(productId)                  -> retrieves a specific product from the database
getCart(user)                          -> returns the products in the user's cart
addToCart(user, productId)             -> adds a product to the user's cart
removeFromCart(user, productId)        -> removes the product from the user's cart
clearCart(user)                        -> clears user's cart

Кроме того, у нас есть более сложные функции, использующие другие бессерверные функции:

checkout()
    cart = getCart(user)
    finalizeCheckout(user, cart)       -> deducts money from user's account
    clearCart(user)
    sendConfirmationEmail(user, cart)  -> sends a confirmation email to the user

Хорошо, но как работают бессерверные функции под капотом?

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

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

Какие существуют различные архитектуры программного обеспечения?

Монолитная архитектура vs микросервисы vs бессерверная архитектура

Помимо бессерверных функций, у нас есть монолитная архитектура и архитектура микросервисов. Давайте рассмотрим их.

Монолитная архитектура

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

Архитектура микросервисов

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

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

В чем преимущества бессерверных функций?

Функции как услуга (FaaS) имеют множество преимуществ.

Ускоренная разработка

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

Высокая масштабируемость и доступность

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

Также можно развернуть свои функции как услугу (FaaS) в нескольких зонах. Это поможет вам повысить доступность вашего приложения, распределив функции по всему миру.

Большая гибкость

Бессерверные функции позволяют разработчикам выбирать язык программирования и инструменты, которые лучше всего соответствуют их потребностям. Большинство поставщиков бессерверных функций поддерживают несколько языков, таких как JavaScript, Java, Python, Go и .NET. Это обеспечивает большую гибкость при разработке и развертывании приложений.

Экономическая эффективность

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

Каковы некоторые примеры использования бессерверных функций?

Бессерверные функции можно использовать практически в любом проекте. Вы можете использовать бессерверные функции для создания проекта с нуля или просто для решения конкретных задач. Основные сценарии использования включают:

  • Веб-приложения
  • Создание RESTful API
  • Задачи на основе триггеров
  • Автоматизация задач по расписанию
  • Асинхронная обработка
  • Интернет вещей (IoT)
  • CI/CD

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

Каковы примеры бессерверных сред?

Платформа как услуга (PaaS)

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

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

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

К PaaS-сервисам относятся: Heroku, AWS Elastic Beanstalk, DigitalOcean App Platform и Fly.io.

Бэкэнд как услуга (BaaS)

BaaS оптимизирует и упрощает разработку бэкенда, предоставляя платформу для управления облачной инфраструктурой.

Он решает все утомительные задачи, связанные с созданием бэкенда, позволяя разработчикам сосредоточиться на создании приложений. Автоматизируя многие из этих процессов, BaaS помогает разработчикам быстро и эффективно создавать надежные приложения.

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

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

Некоторые поставщики BaaS также позволяют нам развертывать бессерверные функции:

Среди других поставщиков BaaS – Supabase, Kinvey и Parse.

Функция как услуга (FaaS)

Function as a Service (FaaS) – это модель облачных вычислений, специализированная для бессерверных функций. FaaS позволяет разработчикам сосредоточиться на написании и развертывании отдельных функций, а не на создании и управлении полным стеком приложений. Бессерверные функции обычно интегрируются с API сторонних производителей и другими облачными сервисами. Эта вычислительная модель может автоматически и быстро масштабироваться под любой трафик.

Основные различия между BaaS и FaaS заключаются в следующем:

  • Конструкция приложения
  • Масштабируемость
  • Модель ценообразования

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

Несколько примеров FaaS включают: AWS Lambda, Google Cloud Functions и Azure Functions.

Создание бессерверного бэкенда на Back4app

В этом разделе руководства мы покажем, как кодировать и развертывать функции Cloud Code в Back4app. Кроме того, мы узнаем, как подключить фронтенд к бессерверному бэкенду.

Задачи:

К концу этого урока вы сможете:

  • Объясните, что такое функции облачного кода и как они работают
  • Кодируйте свои функции Cloud Code, которые могут манипулировать базой данных
  • Используйте функции Cloud Code для получения данных из API сторонних производителей.
  • Создавайте собственные облачные задания и планируйте их выполнение
  • Подключите фронтенд-проект к бессерверному бэкенду

Что такое Back4app?

Back4app – это ведущая платформа BaaS – Backend as a Service, которая предоставляет разработчикам инструменты и функции, необходимые для легкого создания веб- и мобильных приложений.

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

Комплексное решение поставляется с интерактивной приборной панелью и гибким интерфейсом командной строки CLI для максимального удобства. Кроме того, оно предоставляет SDK, совместимые с React Native, Flutter, Node.js, Angular, iOS, Android и другими, что делает интеграцию в существующие системы легкой!

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

Для получения дополнительной информации, пожалуйста, прочитайте раздел Особенности Back4app.

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

Введение в проект

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

Интерфейс метеостанции Back4app

Создать приложение

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

Чтобы начать использовать Back4app, вам нужно создать приложение. Войдите в свою приборную панель, чтобы просмотреть список приложений, и нажмите на “Создать новое приложение”, чтобы начать создавать свое приложение.

Back4app Создать приложение

Поскольку мы будем использовать фреймворк Parse для создания нашего приложения, выберите “Backend as a Service”.

Затем введите название приложения, выберите “NoSQL Database” в качестве базы данных и нажмите “Создать”.

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

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

Back4app App Dashboard

База данных

Давайте определим наши модели баз данных. Мы создадим две модели:

  1. WeatherStation представляет собой виртуальную метеостанцию, расположенную в некотором месте.
  2. WeatherRecord представляет собой измерение погоды на определенной станции WeatherStation.

Перейдите в “Базу данных” и нажмите на “Создать класс”. Назовите его WeatherStation, убедитесь, что включено “Публичное чтение и запись”, и добавьте в него следующие поля:

+---------------------------+-----------------+---------------+----------+
| Data type                 | Name            | Default value | Required |
+---------------------------+-----------------+---------------+----------+
| String                    | name            | <leave blank> | yes      |
+---------------------------+-----------------+---------------+----------+
| String                    | location        | <leave blank> | yes      |
+---------------------------+-----------------+---------------+----------+

Далее выполните те же действия, чтобы создать другой класс с именем WeatherRecord и следующими полями:

+---------------------------+-----------------+---------------+----------+
| Data type                 | Name            | Default value | Required |
+---------------------------+-----------------+---------------+----------+
| Pointer -> WeatherStation | weatherStation  | <leave blank> | yes      |
+---------------------------+-----------------+---------------+----------+
| String                    | weatherText     | <leave blank> | yes      |
+---------------------------+-----------------+---------------+----------+
| String                    | weatherIcon     | <leave blank> | yes      |
+---------------------------+-----------------+---------------+----------+
| Number                    | weatherCode     | <leave blank> | yes      |
+---------------------------+-----------------+---------------+----------+

Наконец, перейдите к модели WeatherStation и создайте две метеостанции. Пример:

+---------------------------+---------------+
| name                      | location      |
+---------------------------+---------------+
| Sunnyvale Station         | sunnyvale     |
+---------------------------+---------------+
| Mountain View Station     | mountain view |
+---------------------------+---------------+

Отлично, это все для базы данных.

WeatherAPI

Для получения информации о текущей погоде мы будем использовать бесплатный API под названием WeatherAPI.

Следующие шаги потребуют от вас наличия учетной записи WeatherAPI. Если у вас его еще нет, зарегистрируйтесь, иначе войдите в свою панель управления.

После того как вы вошли в систему, запишите свой ключ API:

Ключ API WeatherAPI

Затем откройте терминал и попробуйте получить текущую информацию о погоде для “Саннивейла”, используя свой API-ключ:

curl "https://api.weatherapi.com/v1/current.json?key=<your_api_key>&q=<location>&aqi=no"

# Example:
# curl "https://api.weatherapi.com/v1/current.json?key=354fc376a4c&q=Sunnyvale&aqi=no"

Вы должны получить ответ, похожий на этот:

{
    "location": {
        "name": "Sunnyvale",
        "region": "California",
        "country": "United States of America",
        "lat": 37.37,
        "lon": -122.04,
    },
    "current": {
        "temp_c": 7.0,
        "temp_f": 44.6,
        "is_day": 1,
        "condition": {
            "text": "Light rain",
            "icon": "//cdn.weatherapi.com/weather/64x64/day/296.png",
            "code": 1183
        },
        ...
    }
}

В следующем разделе статьи мы будем использовать функции Cloud Code для получения информации о погоде из WeatherAPI и последующего сохранения ее в базе данных.

Облачный код

Функции Cloud Code – это мощная функция Parse Server, которая позволяет разработчикам выполнять пользовательский JavaScript-код на стороне сервера. Разработчики могут использовать эти функции для реализации бизнес-логики, проверки данных, обработки сложных данных и создания бессерверных бэкендов в целом.

Перейдите на приборную панель приложения Back4app и выберите “Функции и веб-хостинг” в разделе “Облачный код” на боковой панели.

Облачный код Back4app

Пользовательский интерфейс Back4app Cloud Code прост в использовании. В левой части экрана вы можете увидеть структуру каталогов. По умолчанию есть две директории:

  1. cloud – это каталог для всего облачного кода.
  2. public – это каталог для общедоступных файлов, таких как изображения, таблицы стилей и многое другое.

А в правой части экрана находится встроенный редактор кода.

Определение функций облачного кода

Мы определим следующие функции:

  1. weatherLocations возвращает список местоположений метеостанций.
  2. WeatherInfo возвращает прогноз погоды для определенного места.

Но перед этим давайте установим сторонний пакет под названием axios. Axios – это основанный на обещаниях HTTP-клиент для JavaScript, который значительно упрощает выполнение HTTP-запросов.

Создайте новый файл package.json в папке с облаком и поместите в него следующее:

{
  "dependencies": {
    "axios": "*"
  }
}

Затем определите функции Cloud Code в файле cloud/main.js следующим образом:

// cloud/main.js

const axios = require("axios");

// make sure to replace `<api_key>` with your actual WeatherAPI key
const WEATHER_API_BASE = "https://api.weatherapi.com/v1/current.json?key=<api_key>";

Parse.Cloud.define("weatherLocations", async (request) => {
  const WeatherStation = Parse.Object.extend("WeatherStation");
  const weatherStationQuery = new Parse.Query(WeatherStation);
  const weatherStationResults = await weatherStationQuery.find();

  return weatherStationResults.map(result => result.get("location"))
});

Parse.Cloud.define("weatherInfo", async (request) => {
  let location = request.params.location;

  if (!location) {
    throw new Parse.Error(400, "Location not provided.");
  }

  const WeatherStation = Parse.Object.extend("WeatherStation");
  const weatherStationQuery = new Parse.Query(WeatherStation);
  weatherStationQuery.equalTo("location", location);
  const weatherStationResults = await weatherStationQuery.find();

  if (weatherStationResults.length == 0) {
    throw new Parse.Error(400, "Invalid location.");
  }

  const WeatherRecord = Parse.Object.extend("WeatherRecord");
  const weatherRecordQuery = new Parse.Query(WeatherRecord);
  weatherRecordQuery.equalTo("weatherStation", weatherStationResults[0]);
  weatherRecordQuery.descending("createdAt");
  weatherRecordQuery.limit(5);
  const weatherRecordResults = await weatherRecordQuery.find();

  return weatherRecordResults;
});

И наконец, нажмите кнопку “Развернуть” в правой нижней части экрана, чтобы развернуть ваши функции в Back4app.

Работа в облаке

Cloud Jobs позволяет разработчикам запускать фоновые задания, например, отправку push-уведомлений или обработку данных. Эти задания пишутся аналогично функциям Cloud Code и могут быть запланированы на разовый или периодический запуск.

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

Определить облачное задание

Выберите “Код облака” на боковой панели и вставьте следующий код в нижнюю часть файла cloud/main.js:

// cloud/main.js

// ...

Parse.Cloud.job("weatherCapture", async (request) => {
  const {params, headers, log, message} = request;
  message("weatherCapture just started...");

  const WeatherStation = Parse.Object.extend("WeatherStation");
  const weatherStationQuery = new Parse.Query(WeatherStation);
  const weatherStationResults = await weatherStationQuery.find();

  for (let i = 0; i < weatherStationResults.length; i++) {
    let weatherStation = weatherStationResults[i];

    try {
      const response = await axios.get(
        WEATHER_API_BASE + "&q=" + weatherStation.get("location") + "&aqi=no"
      );
      const currentWeather = response.data.current.condition;
      let icon = currentWeather.icon
        .replace("//", "https://")
        .replace("64x64", "128x128");

      const WeatherRecord = Parse.Object.extend("WeatherRecord");
      const weatherRecord = new WeatherRecord();
      weatherRecord.set("weatherStation", weatherStation);
      weatherRecord.set("weatherText", currentWeather.text);
      weatherRecord.set("weatherIcon", icon);
      weatherRecord.set("weatherCode", currentWeather.code);
      weatherRecord.save();
    } catch (error) {
      throw new Parse.Error(400, error);
    }
  }

  message("weatherCapture just finished!");
});

Этот код определяет новое облачное задание с именем weatherCapture. Это задание обходит все WeatherStation, получает информацию о погоде из WeatherAPI и сохраняет ее в базе данных.

Чтобы проверить, работает ли это, перейдите в раздел “Задания > Все задания” на боковой панели и попробуйте запустить задание. Если все прошло успешно, в базе данных должны появиться две новые записи WeatherRecord.

Back4app Записи о погоде

Расписание работы в облаке

Запланируем выполнение задания на каждые 30 минут.

Выберите “Настройки приложения > Настройки сервера” на боковой панели и найдите “Фоновые задания”. Затем нажмите на кнопку “Настройки”:

Back4app Background Jobs

Затем запланируйте новое задание со следующими данными:

  1. Описание: Измеряет погоду на всех станциях
  2. Работа в облаке: weatherCapture
  3. Параметры: Оставьте пустым
  4. Время расписания: Начало работы немедленно
  5. Стоит ли повторять? Да
  6. Частота: Интервал
  7. С каким интервалом он будет повторяться? 30 минут

Вот и все. Теперь задание WeatherCapture будет выполняться каждые 30 минут.

Теперь наш бессерверный бэкенд готов. В следующем разделе мы рассмотрим, как подключить фронтенд к бессерверному бэкенду.

Frontend

Создание собственного фронтенда с нуля выходит за рамки этого руководства. Тем не менее, я опишу основные шаги по подключению JavaScript-фронтенда к бессерверному бэкенду.

  • Установите Parse с помощью npm или yarn и импортируйте его.
  • Инициализируйте Parse в вашем App.js или _app.js следующим образом:
import Parse from "parse/dist/parse.min.js";
    
// to get the keys navigate to your Back4app app > App Settings > Security & Keys
Parse.initialize(
  "<your_app_id>",              // replace me
  "<your_javascript_key>",      // replace me
);
Parse.serverURL = "https://parseapi.back4app.com/";
  • Затем вы можете вызывать функции Cloud Code следующим образом:
const fetchWeatherLocations = async () => {
    return await Parse.Cloud.run("weatherLocations");
};

Для получения дополнительной информации обратитесь к официальной документации.

Я также подготовил пример проекта для бэкенда нашей метеостанции. Проект доступен на GitHub. В README.md содержится вся информация, необходимая для локального запуска проекта. Не стесняйтесь форкнуть его и поиграть с ним.

Заключение

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

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

Окончательный исходный код можно найти в репозитории back4app-serverless на GitHub.

Будущие шаги

  1. Посмотрите на Parse Server Security, чтобы сделать ваш бэкэнд более безопасным.
  2. Ознакомьтесь с The Ultimate Guide to Deploy Docker Apps, чтобы узнать, как создать и развернуть пользовательский фронтенд на контейнерах Back4app.
  3. Узнайте о триггерах Parse.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Что такое серверлесс функции?

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

Почему использовать серверлесс архитектуру?

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

Какие существуют различные архитектуры программного обеспечения?

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

Какие преимущества у серверлесс функций?

– Быстрая разработка
– Высокая масштабируемость и доступность
– Большая гибкость
– Экономическая эффективность

Как развернуть серверлесс функции?

1. Создайте аккаунт на Back4app.
2. Используйте редактор Cloud Code от Back4app или локальную IDE для написания серверлесс функций.
3. Используйте редактор Cloud Code от Back4app или выполните команду b4a deploy для развертывания ваших функций.
4. Протестируйте функции.


Leave a reply

Your email address will not be published.