“Kubernetes is becoming central to cloud adoption”: More innovation coming
In the “orchestration war” between Docker, Swarm, and Kubernetes, it seems like Kubernetes is the clear winner. In this interview, Ramon Guiu, Vice President of product management at New Relic, talks about the reasons why. He discusses how to avoid problems with building a container ecosystem and how to make it run safe and smooth.
JAXenter: Kubernetes has prevailed as an orchestration platform over Docker Swarm. Why did Swarm lose the “orchestration war”?
Ramon Guiu: There are two important aspects which have helped drive Kubernetes adoption. First, it was built for scale. The developer community readily turned to it because of the proven success of Google having used it for their own services at their massive scale. From a technical perspective, Kubernetes makes it easy to deploy and operate applications based on a microservice architecture by getting the API right and provides a good level of abstraction. Specifically, Kubernetes does things like:
- control resource consumption by application and/or by team,
- decide which hosts the application should run to evenly spread the load across your infrastructure,
- automatically load balance the requests across the different instances of your application,
- monitor resource consumption and resource limits to automatically stop applications consuming too many resources and restarting them again,
- moving an application instance from one host to another if there is a shortage of resources in a host, or the host dies,
- automatically leverage additional resources made available by adding a new host to the cluster, and;
- easily perform canary deployments and rollbacks.
JAXenter: What are Swarm’s strong suits compared to Kubernetes?
Ramon Guiu: Our customers are investing in Kubernetes, so we’ve focused our research there and we can’t speak to Swarm’s capabilities.
JAXenter: How can one avoid big mistakes while building the container ecosystem? Are there any best practices?
Ramon Guiu: There are of course trade-offs moving to any new technology architecture and specifically with containers it’s considerably more complex and really hard to understand what’s going on. You are going from essentially keeping track of hundreds of services to thousands of services.
To understand, manage, and know everything necessary to build services in this environment, we obviously see monitoring being really important. Having measurement in place to understand the relationships between different components and the infrastructure that it’s running on, all the way up to how customers are interacting with the customer-facing components. Development teams have to fundamentally change the way you operate and troubleshoot the system.
Containerization, serverless, microservices, and other new technologies are pushing people to reevaluate all the ways of doing things which simply don’t scale to this new model and direction.
JAXenter: How can we make containers safe and keep them stable after building the ecosystem?
Ramon Guiu: The reason teams look to containerize applications is to create more reliable and efficient infrastructure in service of those applications. The best way to assure that containers are stable and running optimally is to monitor both the container itself as well as the applications living inside those containers.
This strategy enables you to understand the health of the application from all the necessary perspectives:
– Applications: The performance and availability of applications running inside containers by measuring things like request rate, throughput, and error rate.
– Containers: Monitor CPU and memory consumption and how close it is from the limits which have been configured.
– User experience: Track and monitor mobile application and browser performance to gain insight into things like response time and errors. It’s also imperative to monitor load time and availability to ensure the application is behaving as designed for your customers.
JAXenter: Let’s talk about serverless: what do you think about this hype right now? Is serverless the next step in evolution for developers and will it replace containers soon?
Ramon Guiu: We’re seeing a massive amount of interest and experimentation with serverless technologies, and even success stories with applications in production. Companies are investing in automating software delivery pipelines and release automation so serverless and containerization strategies can come into play. Importantly, there are real business drivers behind this: improving the speed of development and future velocity so that the company is able to react to market conditions faster.
As with any technology decision, whether to use a serverless service such as AWS Lambda or containers, entirely depends on a variety of factors including what is the purpose of the application, is it being refactored or developed from the ground up, and ultimately what will deliver the best customer experience.
SEE ALSO: “Kubernetes is not an afterthought”
JAXenter: What about the future of container technology in general? What’s the next big bang in container technology?
Ramon Guiu: Many enterprise organizations are adopting containers because of their portability. Container portability mitigates cloud vendor lock-in and reduces costs through better infrastructure capacity utilization. This trend will only increase over the next 12 to 24 months.
Kubernetes, in particular, is becoming central to cloud adoption, as it’s quickly become the central container orchestration engine for most major cloud providers, including Amazon Web Services, Microsoft Azure, Google Cloud Platform, IBM Cloud, and Red Hat OpenShift. With services like Amazon EKS, Azure Kubernetes Service, and Google Kubernetes Engine the developer experience is becoming more seamless and doesn’t require a developer to install, manage, or operate Kubernetes clusters. We’re going to see further innovation here so that a developer can just drop an application and run it in Kubernetes without having to build the Docker image.
Also as enterprises are embracing a DevOps culture, moving to containers and container orchestration are critical steps. Tools like Docker and Kubernetes fit precisely into the twelve-factor app model, a key reference for organizations transitioning to a modern continuous-delivery business model so we’ll continue to see new and improved tooling and integrations with CI/CD platforms.