8.2.2 Функции FaaS ГОСТ Р 70860—2023

Использование FaaS подразумевает написание одной или нескольких функций, где каждая функция — это часть программного кода, предназначенная для выполнения одной конкретной задачи. Именно из-за этой особенности программирования бессерверной среды выполнения эти облачные сервисы получили такое название — «функция как услуга» (FaaS). По сути, это серьезное изменение способа разработки приложений и сервисов, включая добавление отдельных принципов архитектуры микросервисов (см. раздел 9). Существуют определенные принципы, которые действуют в отношении функций и способа их выполнения.

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

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

Функции ограничены по времени, т. е. они не могут выполняться дольше заданного времени, определяемого поставщиком облачной службы. Лимит времени зависит от конкретного предложения FaaS, но часто он не превышает нескольких минут. Таким образом, какие-либо длительные задачи не подходят для обработки в качестве функции.

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

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

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

Поскольку за один раз можно развернуть только одну функцию, бессерверный подход обеспечивает значительную гибкость в этом плане. Приложения могут создаваться по одной функции за раз, каждая из которых развертывается и масштабируется отдельно. Это также позволяет ускорить разработку и развертывание (нет необходимости ждать сборки приложения или сервиса, содержащего несколько функциональных возможностей). Каждая функциональная возможность может быть создана, протестирована и развернута отдельно [из 8.2.2 Функции FaaS ГОСТ Р 70860—2023]