Функция как услуга (англ. function-as-a-service, FaaS) — архитектурный шаблон, предполагающий возможность вызова экземпляра управляющего кода без необходимости управления серверами и серверным приложением; ключевой компонент бессерверных вычислений[1]. Одной из первых широко известных реализаций является представленный в 2014 году сервис AWS Lambda, аналогичные[2] предложения среди публичных PaaS есть у Google (Cloud Functions[3]), IBM (на Apache OpenWhisk в составе платформы Bluemix) и Microsoft (Azure Functions), Oracle (Fn, код опубликован на GitHub).

Идея состоит в том, что серверная часть разбивается на набор не зависящих от состояния (stateless) функций для обработки событий (которыми могут быть приходящие HTTP-запросы, появление новых сообщений в очереди, наступление указанного в планировщике времени и тому подобные события). Состояние в данном случае понимается в контексте развёртывания (deployment), то есть результат выполнения функции не должен зависеть от состояния памяти сервера (за вычетом переданных параметров вызова) и содержимого локальной файловой системы. При таких ограничениях, горизонтальное масштабирование выполняется автоматически провайдером, который может использовать любое доступное ему в данный момент вычислительное устройство, обеспечивающее требуемый уровень производительности. Также, как правило, время выполнения функции принудительно ограничивается несколькими минутами[4].

Примечания

править
  1. Serverless architecture (англ.). ThoughtWorks[англ.] Technology Radar. Дата обращения: 20 июня 2016. Архивировано 27 августа 2016 года.
  2. Tom Maiaroto. Azure Cloud Functions vs. AWS Lambda (англ.). serifandsemaphore.com (4 апреля 2016).
  3. Google Cloud Functions Documentation (англ.). Google Cloud Platform. Дата обращения: 20 июня 2016. Архивировано 2 августа 2016 года.
  4. Mike Roberts. Serverless Architectures (англ.). MartinFowler.com (17 июня 2016). Дата обращения: 20 июня 2016. Архивировано 18 июня 2016 года.