Serverless computing is getting ready to fulfill the dream of cloud computing. Even though cloud computing has been a huge success by any measure and has profoundly changed the software industry, it never fully lived up to its original promise of making software development and operation simple without the need to worry about servers and resources. The new serverless cloud computing paradigm is finally delivering on this promise. Serverless computing allows software to be written as a set of small, well-defined functions, each of which handles a specific type of event. Events can range from an HTTP request from a Web-client to an IoT sensor reading or an entry in a database. Whenever an event occurs, its associated function is automatically executed.
The event-driven nature of serverless computing facilitates software development and deployment and enables running services to quickly adjust to changing workloads. These advantages are generating a strong interest in using serverless systems for many cloud computing applications. Unfortunately, there is one drawback holding current serverless systems back.
The time between when an event is received and when the corresponding function starts executing is significant and can lead to prohibitive delays and poor resource usage. For example, robots that move through their environment using sensors to navigate could not fully take advantage of serverless computing because any sensor reading would become obsolete before the serverless platform could begin processing those functions.
Nokia Bell Labs, however, believes we’ve addressed this problem. This month we introduced a new type of serverless system that dramatically reduces function start time and operational overhead. We call it KNIX, after Kubernetes (the container orchestration platform it extends) and UNIX (the famous Bell Labs OS from which it borrows ideas), and we’re inviting the world to test it out. First, let me provide a more detailed explanation of the problem KNIX solves.
Function startup latency in serverless computing can add 200ms or more to the time it takes to start executing a function, easily doubling the runtime of simple functions. Despite many efforts to reduce this overhead, even highly optimized systems today operate at a typical invocation latency of around 50ms for recurring functions and five times that for first-time invocations. This is particularly problematic as serverless computing requires function invocations every time an event occurs. In other words, the inherent delay in today’s serverless platforms is continuously compounded as the system operates.
The Nokia Bell Labs KNIX serverless platform has overcome this fundamental limitation by revisiting what functions truly are – a part of an overall service. KNIX exploits this fact by executing functions that share context together and providing industry-grade isolation between different services. This approach enables KNIX to execute functions with a much lower startup latency of 8ms or less. KNIX does not need to differentiate between recurring functions and first-time invocations as both can be processed at full speed. The KNIX design enables it to intelligently pre-load an initialized copy of a function. It then uses highly optimized techniques from the operating system domain to clone this copy into executable function instances, each of which processes an incoming event.
A common concern about serverless platforms is the incompatibility between different platforms and the associated vendor lock-in. KNIX avoids this problem by being compatible with Amazon Web Services (AWS) Step Functions. KNIX functions run on AWS Step Functions and vice versa. KNIX also supports the development of an industry standard for events in the Cloud Native Computing Foundation (CNCF). KNIX runs on top of Kubernetes and can be deployed in private and public Kubernetes-based clouds as well as in VM-based and bare metal environments.
For those of you that wish to try out KNIX, get hands-on experience with the platform or create a quick serverless application, we have set up a hosted version of KNIX available on the KNIX site. For those who want to create a local KNIX installation and get engaged with the community, KNIX is available as open source software on GitHub.