In life, no two situations are the same, or so the saying goes. The same can be said for testing environments. Test something in one, it works. Test it in another, it doesn’t. The key is consistency.
“Ensuring software runs perfectly when moved from one computing environment to another can be problematic,” says Bala Ethirajalu, senior manager and head of testing at Brickendon. “Whether it’s from a development environment to test, from a staging site into production, or a physical machine in a data centre to a virtual machine in a cloud, the situations are always different.”
Introducing Dockers. Dockers is a container that wraps a piece of software in a complete file system that contains everything needed to run it – code, runtime, system tools or libraries; basically anything that can be installed on a server. In short, it containerises the application platform and its dependencies, removing any differences in operating system distributions and underlying infrastructure.
In one way Dockers looks very much like virtualisation. With virtualisation technology, the entity involved is a virtual machine and it includes an entire operating system as well as the application. A physical server running three virtual machines would have a hypervisor and three separate operating systems running on top of it. By contrast, Dockers runs on a single operating system and a server running three containerised applications with each Docker sharing the operating system (OS) kernel with the other Dockers. Shared parts of the operating system are ‘read only’ and each container has its own way to access the container for writing. As a result, the containers are much more lightweight and use far fewer resources than virtual machines.
“Dockers has a huge potential to save millions and it’s not just the infrastructure costs,” says Ethirajalu. “A stable integrated environment means highly-productive development with all interfaces on board and seamless testing. This will lead to robust and safer production releases, which can in turn, save reputation.”
So what are the benefits of using Dockers?
Firstly size. A container can be just tens of megabytes in size, whereas a virtual machine may be several gigabytes. As a result, a single server can host far more containers than virtual machines.
Secondly speed. Virtual machines may take several minutes to boot up their operating systems and begin running the applications they host. Containerised applications can be started almost instantly.
Thirdly, and probably most importantly, is versatility. The same Docker configuration can be used in a variety of environments, effectively decoupling the infrastructure requirements from the application environment.
“The freedom to run your applications across multiple configurations without any extra tweaks is the ultimate dream that Docker can help achieve,” says Ethirajalu.
Traditionally, code has to travel through many different environments as it moves from a developer’s machine to production. Each of these may be slightly different, making replication difficult. Docker provides a consistent environment for the application, easing the code development and deployment pipeline. Each Docker can be shared across the development, test and UAT teams as applicable and available.
Furthermore, there is the issue of cost. A development environment should be as close to the production environment as possible. In order to achieve this, every service needs to run on its own virtual machine (VM), have an internet connection and the necessary management resource. Docker is low on memory overhead and enables a few dozen services to run. In addition, the application isolation abilities of Docker allows multiple servers to be consolidated and hence saves money.
“Before VMs, bringing up a new hardware resource took days,” says Ethirajalu. “Virtualisation brought this down to minutes. By creating just a container for the process and not booting up an OS, Dockers brings it down to seconds.”
In complex programmes, as in most financial institutions, there can be dedicated Dockers for databases, App servers and Webs devices. Hundreds of Dockers can be loaded onto a server, which is known as Docker compose. This enables the development team to rapidly activate their code in the test environment, which in turn enhances the feedback time by quality assurance.
So to sum up, using the Docker containerisation system makes the testing process faster, cheaper and more efficient. While its use is currently confined in most part to some of the larger technology players, it is starting to creep into financial service institutions and is only a matter of time before its use is more widespread. Watch this space…