Apache OpenWhisk — это серверная платформа с открытым исходным кодом, предназначенная для выполнения функций в ответ на события в облаке. Она реализует модель Functions-as-a-Service (FaaS), позволяя разработчикам сосредоточиться на логике приложения, а не на управлении инфраструктурой. OpenWhisk автоматически масштабирует ресурсы и управляет контейнерами, обеспечивая высокую гибкость и производительность.
Изначально разработанная компанией IBM и переданная в Apache Software Foundation в 2016 году, OpenWhisk активно используется в таких продуктах, как IBM Cloud Functions и Adobe I/O Runtime. Платформа поддерживает множество языков программирования, включая JavaScript, Python, Swift, Java и Go, а также предоставляет возможности для создания кастомных сред выполнения с использованием Docker.
- Модель программирования: основана на действиях (Actions), триггерах (Triggers) и правилах (Rules). Действия представляют собой фрагменты кода, которые выполняются в ответ на события, инициируемые триггерами.
- Масштабируемость: поддерживает автоматическое горизонтальное масштабирование, позволяя обрабатывать тысячи одновременных запросов и эффективно управлять нагрузкой.
- Гибкость развертывания: может быть развернута локально или в облаке с использованием популярных контейнерных платформ, таких как Kubernetes и OpenShift.
- Поддержка различных языков: предоставляет возможность разработки функций на различных языках программирования, включая JavaScript, Python, Swift, Java и Go, а также поддержку кастомных сред выполнения с использованием Docker.
- Интеграция с внешними сервисами: позволяет связывать действия с внешними источниками событий, такими как HTTP-запросы, изменения в базах данных или сообщения из очередей, с использованием триггеров и правил.
- Интерфейсы взаимодействия: включает в себя командный интерфейс (CLI) и REST API, обеспечивая удобное взаимодействие с платформой для разработчиков.
- Поддержка контейнеров: использует контейнеры Docker для изоляции выполнения функций, что обеспечивает консистентность среды и упрощает управление зависимостями.