“Containers can make your life easier”
Containers revolutionize the way modern software is being developed and operated. We talked to Johannes Unterstein, Distributed Applications Engineer at Mesosphere and JAX DevOps speaker about container tools and technologies and containers’ usefulness in a DevOps context.
JAXenter: Mesosphere CEO Florian Leibert explained in a blog post that “Container 2.0 is the ability to run (and orchestrate) both stateless and stateful services on the same set of resources.” What’s your take on that?
Johannes Unterstein: Persistence is one of the challenges in today’s container landscape. Stateless containers are fairly easy to handle: for example, they can be rebooted on each and every node after failing. Stateful containers are not that easy, though. What will happen after some network issues were fixed and a container with persistent data goes back online when another instance has already been launched?
Container 2.0 addresses both stateful containers and the combination with “big data” frameworks like Spark, Cassandra, Kafka, ideally running on the same cluster as the container.
JAXenter: Is Container 2.0 already upon us? How does it look like — what are its key elements?
Johannes Unterstein: Sure! My session at JAX DevOps is all about container 2.0, resource (CPU, mem, disk) sharing between all parts of your datacenter and how DC/OS can help you to use your cluster in the most efficient way. When doing static partitioning within your datacenter, you need to optimize each part individually against peaks and failures. If your infrastructure is capable of being shared across your microservices, traditional databases, as well as big data and fast data applications, you are able to be more flexible in case of scaling, utilization, fault tolerance and also be able to save nodes and therefore money.
Containers make it really easy to share applications with all dependencies in one single archive, which is executable on each suitable container runtime.
JAXenter: What is the next step in the container world?
Johannes Unterstein: In the field of shipping containers to production easily and running them reliably, there have been many interesting novelties recently. In the current discussion, it’s particularly interesting for me to see how fast levels are changing. Be it on some fine-grained field like in the controversial discussion about Docker runtime or on some abstract level addressing how to run hundreds or thousands of containers. Furthermore, it’s interesting to keep an eye on the development of different standards like CNI for networking.
JAXenter: What are your favorite container tools right now?
Johannes Unterstein: Maybe I am a little bit biased because I am helping to build DC/OS but I really like using and extending DC/OS :-). I like the flexibility of DC/OS and the underlying Apache Mesos to run Docker containers, containers out of AppC images or regular programs isolated (a.k.a containerized) on the fly by Apache Mesos itself. And more than this, you could also choose if you want to use Docker daemon or run Docker images directly on Mesos universal containerizer.
JAXenter: Why should developers be interested in container technologies? What’s in it for them?
Johannes Unterstein: Because they can make your life easier. Containers make it really easy to share applications with all dependencies in one single archive, which is executable on each suitable container runtime. Infrastructure like Docker hub makes developer life so easy in comparison with the time where it took more than one shell command to launch a particular application.
The other big advantage is that using containers makes us think about what is needed inside the container. It is necessary to have a fully automated setup of the container and therefore have a full documentation what is needed to launch and operate an application. And all this in a human readable Dockerfile.
JAXenter: Are containers useful for the implementation of DevOps?
Johannes Unterstein: Sure. When talking about documenting dependencies and easily sharing applications, we are at the point of making it easy to build automated infrastructure. Now you have easy to share and easy to start applications, which do not have dependencies on the host machine, except the container runtime. On top you tools like DC/OS which supports to run your container landscape and expose an API to develop automation.
Container 2.0 addresses both stateful containers and the combination with “big data” frameworks like Spark, Cassandra, Kafka.
JAXenter: What should participants learn from your session at JAX DevOps?
Johannes Unterstein: This session is all about container 2.0 and best practices for keeping them running in production environments. Current container technology enables us to launch containers dynamically all across our datacenter but we still have persistent data somewhere within our applications. And we want to keep our data, even if a container fails or -even worse- if an entire node fails.
On the other hand, a huge amount of nodes is required to run big data and fast data applications, which usually have different scheduling strategies than containers.
To maximize cluster resource utilization and be more flexible in terms of scaling and fault tolerance it is good to avoid static cluster partitioning and run all parts of the application in the same datacenter. Often evaluations stop once a POC has been successfully deployed, but the actual challenge in my experience to keep it running despite upgraded and the above-mentioned failure cases. That is why we will spend some time on discussing best practices for so-called Day 2 operations which include monitoring, debugging, upgrades, and failure handling.
Please complete the following questions:
Dev and Ops work best together if … they communicate well and understand all facets of both worlds.
The biggest obstacle for DevOps is … communication.
What promotes employee satisfaction is … having fun doing work that matters.
The biggest advantage of autonomously-working teams is … having full control over development, deployment and operations.
It is important for a positive company culture to … communicate.
Johannes Unterstein will be delivering one talk at JAX DevOps which will focus on Container 2.0. He will explain how DC/OS and Apache Mesos deliver Container 2.0 to optimize cluster resource sharing for all parts of your application.