Docker And Friends.

When we start a Docker project, many other technologies are often involved, technologies that we might not have considered at the start. In this post I will tell about my views about Docks, and what to think about before starting with Docker.

Docker for private use

A few years ago I wrote a Python script that would make sure I got more Twitter followers. The script had some addictions to modules that I installed with pip - a packet manager for Python. I remember that the installation of Python and beep was bumpy. The Ubuntu version I used came with Python 2, but I needed Python 3 and a similar version of the pip. It took some time before everything was in place, just because I had not used these technologies before. I put the script and addictions into a Docker image. This way I avoid installing again later.

Two years later, I was motivated enough to continue with my Twitter project. I remembered that I used Python and that I had everything put into a Docker image and stored on my Docker Hub page. I did not spend a lot of time figuring out how to install, configure, start and stop the script, ie Docker image. All I had to do was install docks on my machine. Docks helped me get started quickly. But, how does it look with our customers who run the big projects?

Docker in smaller businesses

With our customers, it is not that easy to use Docks only for their services. The services often require high availability and several docker hosts are required to scale them. In that case, tools that can handle this are needed. Kubernetes is such a tool and has become very popular in recent years. Unfortunately, this is not enough. In a high-availability environment, we need a load balancer, logging and monitoring tools, and configuration management tools. What I want to say is the following: Docks come rarely alone. A well-functioning docker platform requires a lot of knowledge about many technologies other than Docker.

Autumn 2016 I started in the DevOps department at Sopra Steria. I was going to help a customer create a docker platform where several smaller major services would run. We had many challenges. The task was very fun, but when I think back, I often ask if it was worth it. The task was huge and it felt like building a giant castle gets a three-child family. Managing a Docker Platform is a full-time job for two or more people. Being proven about the consequences Docks are an important prerequisite for the choice you make.

Docker Platform as a Service

I claim, and there is probably someone who disagrees with me that Docker as Platform as a Service (DPaaS) is a prerequisite for a customer project to and should use Docker. DPaas is a prerequisite for developers to focus 100% on user stories. NAV has developed such a platform, NAIS - NAV Application Infrastructure Service. The platform consists of docks - of course -, Kubernetes, Træfik, Grafana, InfluxDB and some other technologies. NAIS is maintained by a team of 4-6 people, ensuring that the platform is easy to use and always available. For those who deploy their services to NAIS, the platform is a simplification of everyday life.

Before NAIS was developed, developers had to deploy a service agency to their own JBoss server where only one application was run. If you ran several instances of the same application, then you needed more JBoss servers. Today, when we roll out several service agencies to NAIS, these spread over all NAIS hosts automatically. Should a host have problems and need to be restarted - it means that the Docker containers that run the applications will be stopped - then NAIS will start these on another host, also automatically.

DPaaS makes developers less dependent on the people who previously run JBoss. In addition, developers get more responsibility. The docker file that describes how an application should run into a container has now become part of the application project. The file is attached to a NAIS configuration file and all application code into the project. The advantage is that everything is connected to one and the same project. This way developers want to take more ownership - you build it, you run it.

Conclusion

I’m glad I can use Docker Private. The technology helps me to take care of my applications over time. I relate to a technology. In our customers, I prefer a well-functioning and user-friendly interface for Docker, so I can focus on user stories and the services themselves to be created. NAIS is such a platform. It’s very custom NAV, but more and more Docker platforms are just as fun to work with.