This week at The New Stack, in a series called “The Year Ahead,” we will examine a few technologies and technology issues that we predict will be important for our readers in 2016. Stateless computing is one area we plan to cover closely in 2016.
When New York serial entrepreneur Daniel Ilkovich wanted a start a new business, one that would allow businesses to easily create their own business workflows, he based his technology on the Amazon Web Services’ Lambda service. The resulting service, called Dexter, provides a way to build simple applications by linking together services from different APIs.
One sign of a promising new technology is how it opens the door to more features, or even new business models. Lambda, a form of stateless computing AWS introduced a year ago, certainly meets the criteria here.
The Lambda service makes things easy for both Ilkovich and his customers by abstracting away all the operating and development infrastructure needed to run applications, from servers to storage. This is why Lambda is called a “stateless” service. Lambda runs a user-defined function that collects data from an outside service, works on the data in some way, and delivers the output to some other service.
The code has to be triggered by an external event, such as an incoming call from a mobile app, web service or by another AWS service. A change in an Amazon S3 bucket or DynamoDB table can trigger a function call.
“You just give the work to Lambda, and it will do the compute on your behalf, ” said AWS Lambda general manager Tim Wagner in a breakout session at the company’s re:Invent conference on October. “So the problem of having too many or too few servers doesn’t occur.”
AWS is betting big on Lambda, and not surprisingly, other companies are developing or are already running similar services. Microsoft, for instance, offers similar functionality with Azure Event Hubs.
“If you talk about all the things that Lambda consists of — lightweight tasks execution, notifications, high-speed messaging — Event Hub does all that,” said Mark Russinovich, chief technology officer for Microsoft Azure. Other companies, such as Iron.io and StackHut, offer their own services. We predict you’ll be hearing a lot more about them in 2016.
Stateless vs. Servers
The largest benefit to working with stateless computing is the ability to break projects down into manageable segments. For enterprise-level organizations with data across multiple data centers, stateless computing represents a marked improvement in not only accessing data but manipulating and acting upon it.
“Stateless computing fundamentally shifts how developers and operators think about the software being built. Rather than thinking in terms of large monolithic applications, they think in terms of jobs that are easily understandable,” said Chad Arimura, CEO at Iron.io. When working with microservices, which provide segments of an application, teams can quickly view failed tasks and act upon them, or distribute a particular workload across a series of teams, rather than dedicate large amounts of time to upkeep on a monolith application.
One of the primary advantages to stateless computing is one which Lambda and its alternatives focus on as a key point to their platforms: Ease of use. Not only does stateless computing scale with ease, containers running Lambda functions or tasks executed in Docker containers can be restarted or launched based on free system capacity available. Stateless computing enables tasks to be run at scale without requiring configuration delays, as can often be present when operating in a traditional server-based architecture provisioned across VMs.
“There’s a shift to put more applications into containers as opposed to VMs, partly because of some extra advantages in terms of reduced overhead, disk space and efficiency, but also because of speed of startup since these services can start your application instantly while in a VM you typically still have to go through a normal boot process,” said Wim Coekaerts, senior vice president of Linux and Virtualization Engineering for Oracle.
As automation becomes more of a part of the development process, stateless computing platforms allow for developers to shift their focus from managing deployment of servers, allocation of storage space, and complex scaling issues — to creating their products. With enterprises running applications handling hundreds of thousands of user requests a day, stateless computing has become a requirement for operating at scale and will undoubtedly continue to do so.
Deploying code with StackHut
Another feature of stateless technology is how abstraction comes into play based on what organizations wish to accomplish. When running a stateless service, abstracting configuration and setup allow for flexibility in application deployment without traditional roadblocks, such as maintaining servers or provisioning VMs.
For many organizations, Lambda does not fit into their current infrastructure. As such, the future of stateless computing has arisen in service providers which allow for agnosticism, giving developers the opportunity to utilize the benefits of stateless computing across whichever OS and cloud they are running in their stacks.
“For stateless computing to reach its potential, applications need to see scalable, fast access to resources,” said Bill Bain, CEO and founder at ScaleOut Software, a provider of in-memory computing software. Lambda also falls short for today’s demand to monitor application dependencies. In contrast, many container platforms and monitoring services now offer developers the ability to trigger alerts sent to their team if an application dependency requires updating, or has failed while building a container.
In companies where privacy is crucial, alternatives to AWS Lambda have shown that they offer potential customers significant benefits. Iron.io and StackHut can both be run on public, hybrid and private cloud platforms. While AWS Lambda does not currently allow for this level of flexibility, this is something that will hopefully come to fruition in 2016 from Amazon.
The Future of Stateless Computing
Platforms which utilize stateless technology to their clients have seen a marked increase in not only adoption of their services, but the use cases attributed to the technology. In particular, larger organizations processing batches of data across multiple data centers will find stateless computing to be particularly of use to them. As more companies collect data from their customers based on their connected devices, Internet browsing history, and internal metrics, developers can write code that uses the collected information to trigger Lambda functions.
Configuring these functions often requires a higher amount of code to ensure that processes run correctly. This results in reduced time spent programming new projects, with much of a developer’s workday taken up by configuring or maintaining server dependencies.
Stateless computing offers developers the flexibility to not only automate this workflow and abstract it away from a physical server setup, but to configure the OS, declare dependencies, run on any container or cloud platform and more. Calling services when events trigger can be handled via frontend or backend code in these futuristic platforms, which provides another layer of elasticity when developing in a hybrid environment or via private cloud.
“To make this easier, we include client-side proxy-libraries for JS/ES6 and Python, along with a standard HTTP plus JSON fallback.This makes it simple to integrate StackHut services within a company’s existing systems and code bases,” said Leo Anthias, cofounder at StackHut.
In the case of Iron.io, Arimura notes that developers using the platform will write small, contained jobs packaged into Docker containers. Iron.io has launched over one billion Docker containers in 2015, 10 times the amount it launched in 2014. In 2016, this number is sure to grow as more companies embrace stateless computing for their own infrastructure.
“We allow for users to write their server-based business logic, removing the tedious boilerplate required to configure servers, OSes, APIs, etc. We take this code and wrap it up with our custom runtime into a Linux container that we can spin up on demand in response to requests,” notes Anthias.
Despite its promising future, some will find their workload is unsuitable to a stateless approach. “Not every application is well suited for this model, so it may take some time to sort out what can or will shift to a more stateless model. Stateless computing is well suited for cloud deployments, since they’re dynamic by design and you get a model of scale-out based on need that fits well in a metered environment,” said Coekaerts.
Containers remain a steady, consistent way to manage and deploy applications at scale. Stateless computing is a natural extension to the growing landscape of container platforms such as Docker, Kubernetes and Amazon EC2. With stateless technology now available across a variety of cloud providers both public, hybrid, and private, its adoption rate will continue to increase. This will undoubtedly shape the future of software development as it does so, allowing for developers to craft a new, flexible approach to developing microservices and working with containers in their stack.
The New Stack Managing Editor Joab Jackson contributed to this story.
Docker is a sponsor of The New Stack.