Serverless computing can advance real-time applications by providing developers with access to a framework employing an event-driven architecture.
Serverless computing has a lot of potential to advance real-time applications by providing developers with access to a framework employing an event-driven architecture that makes IT infrastructure resources seamlessly available on demand. The trouble is that the existing serverless computing frameworks are too slow to support real-time applications.
At the Kubecon + CloudNativeCon 2017 conference this week iguazio moved to address that issue by making available a high-speed serverless computing framework as an open source project that it developed in support of the company’s real-time analytics database
See also: Why putting IoT into Docker containers will unlock it
Dubbed nuclio and written in the Go programming language, iguazio CTO Yaron Haviv says this serverless computing framework is unique because it allows developers to employ function within the context of a Docker container running on a Kubernetes cluster or a software development kit (SDK) that iguazio developed. That approach differs considerably from a proprietary serverless framework such as the Lambda service developed by Amazon Web Services (AWS), which Haviv also notes requires organizations to also consume a raft of complimentary AWS compute and storage services to work. Supported programing language include supports Golang and Python, with support for Java and Node.js coming soon.
Haviv says the high-speed function-as-a-service (FaaS) layer of software iguazio developed for nuclio makes it possible for real-time applications to invoke IT infrastructure in parallel on a truly elastic basis.
“Nuclio uses Flash directly,” says Haviv. “In an on-premises environment, it can fit in a 2u box.”
In addition, Haviv says nuclio includes tools to enable simple debugging, regression testing and even a multi-versioned continuous integration/continuous development (CI/CD) pipeline to drive DevOps processes. Function images can also be stored in a shared repository.
The foundational element of nuclio is a function processor that provides the equivalent of an operating system for functions calling IT infrastructure resources. This layer of abstraction provides access to events in addition to plug-ins that support HTTP, Kinesis, Kafka, RabbitMQ, MQTT, NATS, iguazio’s V3IO, and various emulators. External data such as objects, files, databases and streams are accessed through a data binding interface which takes care establishing data connections, security and caching.
Haviv says a single nuclio function processor can run 400,000 function invocations per second and respond with0.1ms latency. Key to that capability is the fact that nuclio is based on a zero-copy, smart memory/thread reuse and non-blocking IO architecture that Haviv says is 100 times faster than alternative serverless computing frameworks because access between the Go-based processor and other language runtimes is accomplished via low-latency shared memory to eliminate context switches or process start overhead.
As cloud computing continues to evolve multiple serverless computing frameworks are likely to be deployed on the same public cloud to address specific application requirements. The challenge IT organizations now face is making sure they select not the appropriate framework with an eye towards not locking themselves into an implementation in a category that is still dynamically evolving.