Функция как услуга
Функция как услуга (англ. 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].
Примечания
- Serverless architecture (англ.). ThoughtWorks Technology Radar.
- Tom Maiaroto. Azure Cloud Functions vs. AWS Lambda (англ.). serifandsemaphore.com (4 апреля 2016).
- Google Cloud Functions Documentation (англ.). Google Cloud Platform.
- Mike Roberts. Serverless Architectures (англ.). MartinFowler.com (17 июня 2016).