Containers, clusters and coding: Here’s what’s coming in 2017
Everyone talks about containers. It became so huge that we think Docker has existed for a long time. The fact is that it has only started. We can observe that by the amount of changes we are seeing. Docker from two years ago is very different than Docker today. Products in its ecosystem are appearing every day and many are disappearing just as quickly. If there is a space we should turn our attention to, that’s containers. At the same time, we have already switched our focus to other areas. Containers, by themselves, are the old story. We know what they are, we did our proof of concept (PoC), and we adopted them. The real question is what should we focus on now? What will 2017 bring?
The significant change will be that 2017 will be focused not that much around running containers but on scheduling them inside clusters. Now that most of us are comfortable with using Docker, it is time to take it to the next level and gain the real benefit containerization brings. While using containers as a way to create developing and testing environments is great in itself, the real benefit comes to light once we adopt it on a cluster level. Solutions like Docker Swarm, Kubernetes and Mesos (just to name a few) will become mainstream. More and more companies will leave the PoC phase and start going big with container schedulers. At the same time, we will see more and more solutions that will go beyond simple scheduling. We will see the rise of self-healing systems. In 2017, the battle for the “uber orchestrator” will become much more prominent. This time, next year, we’ll be talking about 2017 as a year of container schedulers and we’ll taking bets which one will prevail.
With the broader container adoption, continuous deployment (CDP) will become a thing again. For quite some time, we had a lot of talk around CDP but not enough real-world use cases. The idea was there, but we lacked the tools to support it. Since containers will enter enterprise organizations, enterprises will revisit CDP and start implementing it in parallel with container adoption. As a result, we will see new solutions around CDP. The focus will be on automation of all the steps that follow the commit. While some think that this subject is already being talked about, I think that it will continue being the focus, but in a more practical way. We will get away from theory and move towards CDP being a practice exercised in the majority of companies. Moreover, enterprise companies will start realizing that tools are not the major obstacle towards CDP. They will start thinking about major refactoring of their services to accommodate architectural styles that are more appropriate for cloud-based clusters running scheduled services. Realization that tools cannot solve all the problems nor that everything can be fixed by adding another layer will be a hard hit.
One of the most exciting areas that will become prominent in 2017 will be unikernels. While the majority of the industry is still trying to scratch their heads around cloud-native applications running inside containers, we will start seeing unikernels taking over the stage. They will, in a way, unify functionalities provided by VMs and containers. They will not take the world by storm, but will step out of the shadows and set the scene for what will come in 2018.
Machine learning will be entering the mainstream as well. At the moment, its usage is still very limited to a few industry leaders and many scientific institutions. In 2017, we will see it extending in reach to a much broader audience and use cases. We will see them being applied not only by industry leaders but also by their followers. Machine learning engineers will be sought after, companies will start thinking about opening separate divisions dedicated to it, and so on. We will see the beginning of wide adoption.
Instead of discussing the topics that will be the focus during 2017, I think it would also be interesting to predict which subjects will be on their way to oblivion. For one, I believe that we will stop caring about operating systems. As we move towards immutable deployments through containers and, possibly, unikernels, it will become almost irrelevant which OS we use. Big Linux distributions will start losing ground for very light ones. For end users, the OS will start becoming something they do not care about. We will not provision servers, nor will we configure them. There will be no need for such a thing. As a result, not only will the OS become marginalized, but also configuration management and provisioning tools. As users, our lowest level interaction will be with schedulers. Everything else below it will become a commodity and obtained as a service. The only thing we will care is how many CPUs our cluster has, how much memory there is and a few other resources. Everything else will be a service that exposes a scheduler endpoint.
We will see the rise of Go as the programming language of choice. While 2016 marked it as the preferable language for the new open source projects, in 2017 it will start entering enterprise organizations as they move towards microservice architectures and distributed systems. Its small footprint and very low resource usage will make it a worthy choice for backend services, especially those that should be close to the system.
With the increase in adoption of Go, we will continue witnessing the acknowledgement that there is no single programming language, framework or tool that should be adopted across the whole organization. Teams will be gaining more freedom to choose a stack that best fits their use case. As a result, software vendors will have a harder time selling their products. Tooling decisions will become more decentralized. Such a situation will favour open source solutions over enterprise versions.