What Comes Next After Microservices, Kubernetes, and Serverless
It’s 2019 and Docker containers are already old news — or at least, they’ve become so mainstream that they are no longer cutting-edge technology. You could say the same about microservices architectures, Kubernetes, serverless functions, service meshes and many of the other cloud-native infrastructure technologies that have been at the forefront of innovation over the past several years.
That begs the question: What comes next? Which new technologies and processes will shape cloud-native computing stacks going forward?
Predicting the future is always a risky business, but here are some thoughts about what might be the next big thing in infrastructure technologies for cloud native organizations.
To be clear, many of the cloud native technologies discussed below won’t replace existing ones, like containers, as much as they will build upon or extend them. But that makes sense; despite the myth of disruption, most innovations are just incremental improvements upon things that already exist, not radical breakthroughs that appear out of thin air.
Unless you’re a computer scientist, you probably have not heard of unikernels, which for the most part remain experimental today. But they’re an interesting technology for cloud native environments that could help organizations double-down on the benefits of containers.
Unikernels put everything required to run an application (including operating system libraries) into a portable package, and they exclude everything else. In other words, a unikernel contains only the very specific bits of code required to run a specific application. That makes them even lighter-weight and more secure than Docker containers.
Unikernels are also theoretically ultra-portable because they include everything they need to boot themselves. That means they should be able to boot on any kind of hardware. (In practice, most of the unikernels that have been created to date work only in specific types of virtualized environments, like ones created using the Xen hypervisor, but that could change as unikernel technology matures).
Projects like MirageOS are working to make unikernels a practical solution for production workloads. Unikernels are a technology to follow if you want to stay ahead of the cloud native curve.
Short for (depending on whom you ask) either “artificial intelligence operations” or “AI operations,” AIOps is a buzzword we’re hearing more and more these days. And while I don’t usually like speaking in buzzwords, AIOps is a genuinely innovative technological concept that’s worth watching closely.
The premise behind AIOps is that by using machine learning and artificial intelligence, we can build tools that fully automate much of the work traditionally done by IT Ops teams. Instead of relying on human engineers to figure out why a cloud native application service has slowed down, for example, or to pinpoint the root cause of a complex system failure, AIOps tools can use data to interpret the problem, then fix it automatically.
So far, there has been much more talk about AIOps than real-world solutions. The concept is easy enough to implement at a basic level, and some APM vendors (I won’t name names here, in the interest of neutrality) are already starting to build AIOps into their offerings.
In the future, we’re likely to see the AIOps concept extended more broadly, including to the realm of security.
Initially, Docker containers required a lot of effort to manage. Then, orchestration tools like Kubernetes matured and simplified container management, although they left some gaps that engineers had to address by hand.
I suspect that one of the prevailing trends we’ll eventually see is the rise of a new generation of tools that simplify container management even more. We’ve already seen this happening with the introduction of services like AWS Fargate, which eliminates most of the burden related to managing container infrastructure, and KNative, which makes it easier to integrate Kubernetes into fully automated CI/CD pipelines. Expect more new tools to appear within this vein of solutions for making containers (and other cloud native technologies) easier to manage and deploy.
Broader Serverless Support
Serverless functions are great for running code in a highly scalable, cost-efficient way and make infrastructure management easier. However, most of the serverless solutions that have appeared to date are subject to two significant limitations: They’re tied to specific vendors (usually, a particular public cloud), and they support only certain programming languages.
There’s room for improvement on this front, and I think we’ll see it happen in the form of serverless frameworks that are infrastructure-agnostic, meaning that they can work with multiple clouds or even on-premises infrastructure. They’ll also likely support any type of programming language.
Things are already headed in this direction. The number of languages supported by the major cloud-based serverless environments available today has been steadily increasing, and open source projects like Fn are building infrastructure-agnostic serverless frameworks, although they have yet to achieve the market share or mindshare of cloud-based alternatives like AWS Lambda and Azure Functions.
Containers, microservices and the other types of cloud-native technology that are widely used today have enabled us to build environments and software stacks that are magnitudes more scalable, flexible and efficient than those that prevailed just a decade ago. However, we can do even better.
As the next generation of cloud native technologies emerges, I suspect we’ll see unikernels, which promise even more portability and efficiency than containers; AIOps, which takes IT Ops automation to the next level; better container-orchestration solutions that allow for better CI/CD pipeline automation and more flexible serverless frameworks emerge as the cutting edge of modern cloud native infrastructure.