Continuous Delivery Expert Check 2020 – Kubernetes and the future of CI/CD (Part 2)
JAXenter: The rise of containers and Kubernetes has changed software development significantly. How has it changed the way that software is delivered?
Tracy Miranda: It has made it more complex. In a distributed system, with multiple environments, if you haven’t set up CI/CD you can end up in big trouble if something goes wrong. Things you might have gotten away with before are quite difficult to get away with in a cloud native world. Combine that with the proliferation of new tools in the industry, tools that don’t necessarily interoperate well and it is very difficult for users to know what is best. This is one of the key reasons many in the industry worked together to launch the Continuous Delivery Foundation which aims to tackle challenges like this and help people deliver software in whatever their chosen environment is.
Containers have become the expected packaging format for software.
Priyanka Sharma: The rise of containers and Kubernetes or the advent of cloud native has changed software development and delivery alike. Developers can build faster with microservices. However, that is not useful if the code cannot be tested and rolled out quickly as well. So, the age of Kubernetes has ushered in the age of continuous delivery and deployment.
Clark Boylan: Containers have become the expected packaging format for software. Potential users expect prebuilt container images that they can start and immediately begin evaluating your software. From a CI/CD perspective they present a convenient format to ensure the software you tested and is known to work is the same software you deploy into production. Kubernetes builds on this and makes managing those containers in production simple and approachable, and encourages developers to think in terms of composable microservices. But this focus on microservices introduces new testing and integration challenges on the CI side.
Baruch Sadogursky: I am stepping on the minefield here because I represent JFrog, so full disclosure. We have a continuous integration/continuous delivery tool called JFrog Pipelines. It’s based on Shippable, which we acquired. We are going to release this tool in the beginning of January. I know from within that this is going to be an amazing tool. JFrog aside, there are other great tools in the market. If we’re talking about continuous delivery and continuous deployment, obviously, Spinnaker comes to mind. Although it has some years under its belt, it’s getting better. It’s a great tool that I recommend hardily for continuous delivery and deployment. For continuous integration, very interesting aspects are in development.
SEE ALSO: DevOps in 2020 – our big DevOps survey
Tekton, an open source cloud native engine for continuous integration is being worked on with different contributors. There are already continuous integration tools that use Tekton, such as Jenkins X. These are part of a new foundation under the umbrella of the Linux Foundation: The Continuous Delivery Foundation. I recommend keeping an eye on what’s going on there. Outside of the foundation, there are a lot of tools which embrace the cloud native way of doing things. They build in the cloud using containers and Docker and use a configuration that is very dear to the heart of the cloud native world. CircleCI comes to mind, but also many others.
Joonas Lehtimäki: It has made software deployment a lot easier for sure. Kubernetes helps teams to deploy software in scale, but the actual benefit came from containers itself. If you think about how people deployed software before that, the actual process was slow, and it was hard to keep all systems identical. Containers tackled that issue by packaging all the necessary ingredients to a single package. That made every single deployment identical. Kubernetes then just made it easy to deploy on a bigger scale, solved networking issues, and so on. But Kubernetes is not perfect for every single software, for example, it doesn’t make sense to deploy a static web application to a Kubernetes cluster. It would make more sense to use in this situation, something like Google Cloud’s App Engine.
Nir Koren: In almost all aspects. I think the main benefit we experience is the fact that the image is almost identical in dev and in prod so we have no last-minute chaos after production deployments.
Christian Uhl: The reproducibility of containers and the rise of Kubernetes have simplified the delivery process of software immensely. With these technologies, we can perform the same clever deployment strategies with one team of software engineers what needed whole departments of people before. This allows small players to play in the big league, so to speak. It also amounts to some really hard to debug problems 🙂
JAXenter: Which CI/CD tools do you recommend? Do you know of any hidden treasures you’d like to share?
Tracy Miranda: The open source tools that are part of the CD.Foundation, and in particular Jenkins X especially if you are looking at modern app development. Don’t be fooled by the name – Jenkins X is a completely new tool that provides best-in-class CI/CD support for modern applications running on Kubernetes. It achieves this by incorporating other great open source tools such as Tekton  and Kubernetes. Jenkins X provides pipeline automation, built-in GitOps, and preview environments to help teams collaborate and accelerate their software delivery at any scale.
Priyanka Sharma: As a company and builds and uses its own CI/CD tools, I can’t help but recommend GitLab CI and CD. There is a lot of innovation in the space and we can expect to see a lot of standardization coming from the continuous delivery foundation as well.
The rise of edge computing makes the future of software delivery very, very exciting.
Clark Boylan: We are proud users and maintainers of Zuul, a purpose-built CI/CD tool that focuses on project gating. Zuul ran more than two million jobs over six months to produce the OpenStack Train release. It is self-hosting (tests itself), and performs CI/CD for our OpenDev services. BMW and Volvo are major users that show Zuul has a wide range of applicability. From open source software development to self-driving cars, Zuul helps to make your software better.
One major benefit to using Zuul for CI/CD, particularly in a containerized world, is its ability to test complex change trees across multiple projects. As microservices become more prevalent you need to be able to test the combination of many different pieces of software all working in concert. Zuul is able to test these change combinations and does so before a single change merges. This enables complex integration testing, and ensures that your application is always functional.