Continuous development using containers

Are you familiar with the “throw it over the fence” method? If so, you’ll know that it is not very productive.

The method refers back to the old times of web development, when humans and technology often failed to work together optimally. Once new code runs well on the developers’ machines, it was ‘thrown over the fence’ to the test and operations layer. There, the setup may be so different that the code fails. It then needs to be thrown back, or a lot of work put into getting it to run.

As if that’s not enough, the procedure then has to be repeated more or less for every update.

Break down the barriers

“A complete and coherent programming process is much better”, claims Basefarm system architect, Andreas Skoglund.

What he has in mind are Docker containers, Kubernetes, a continuous development cycle, databases, message queues, monitoring and logging tied together into a single solution.“OpenShift Container Platform is a Kubernetes distribution with a robust bunch of other technologies that deliver precisely that”, he explains.

The setup works equally well in private clouds and cloud services like Microsoft Azure and AWS.

At the base are Docker containers. Docker is a way of packaging applications together with all their dependencies. This contrasts with traditional packaging like .exe, .rpm and other application types whose operability is sensitive to library and version differences in the operating environment.

Containers can be set to be ‘immutable’, to prevent them being changed. This ensures consistency of behaviour during development, testing and production.

To avoid software conflicts, current practice has been to run a single application per virtual machine (VM). Using containers avoids this problem, and a VM is easily able to run several containers, which both saves resources and simplifies administration.

Kubernetes – a building block

Kubernetes is a modular framework that can be assembled in many different ways, but also gives developers and technicians the same experience no matter where under the bonnet they are working.

A major benefit of this is familiarity, regardless of the system’s location, whether in the cloud using Microsoft Azure for instance, or on a server in the basement.

Kubernetes also simplifies many of the technician’s tasks, distribution and siting of the containers is automatic, and extra capacity can be provisioned at very short notice to handle increased load, e.g. for Black Friday.

“The platform automates container-based architectures.”

 

OpenShift is one way of deploying Kubernetes. In OpenShift, Kubernetes is combined with a number of other services that are often required in agile and DevOps oriented environments.

In this way, OpenShift is able to realise the dream of most IT environments – a coherent, integrated programming process. OpenShift also allows for multiple, separate, independent CI/CD processes and the necessary support around Kubernetes such as image administration, build tools, monitoring and consistent security across all the services.

That’s why we in Basefarm are working more and more with Kubernetes on OpenShift – to help our customers make the most of their multi cloud environments, develop and deploy quickly, in a safe way.

From application to container

So, what about the pathway from application to container?

Here too OpenShift helps in several ways. One of these functions is called source-to-image (S2I). OpenShift stores the containers for you based on S2I recipes available for all the most popular languages and frameworks.

Supporting technologies such as message queues, databases and so on are also supported in OpenShift via the Service Catalog. These can be provisioned outside of OpenShift, for example in AWS, but at the same time be tied to your application and controlled from OpenShift.

Want to know more about Continuous Dilivery, read the blog post “How to move mountains – our road to continuous delivery” here

Author: Andreas Skoglund, Solution Architect, Basefarm

Andreas Skoglund is a solution architect at Basefarm. He describes this as a creative and varied job that mostly revolves around designing and developing technical solutions for solving customers’ dilemmas. His leisure hours are taken up with programming for fun, home automation and building an overcomplicated home network.