22 January 2018
The adoption of DevOps principles to achieve digital transformation calls for applications that can be developed quickly and efficiently, and which scale easily according to demand. Traditional monolithic application development techniques which treat an application as a single, complete entity do not meet these criteria – which is why microservices are rapidly becoming the application model of choice.
This new development paradigm splits an application into a series of components and services each designed for a single task. By focusing on single-purpose microservices, software engineers can be sure that each component is fully optimised for that specific task.
The role of Docker in microservices
Microservices are the latest step towards “serverless computing”, where application functionality is separated from the underlying operating system. Using Docker, application code is “containerised” with the bare minimum of supporting libraries – nothing more than what is required by that specific service is included.
Containerisation is important on several levels. First, Docker apps are built to be lightweight and fast – without the overheads of a full server image that includes an operating system. Like virtual server images, Docker containers can be copied, moved and restored as when required.
Second, because Docker apps are self-contained units, they have a significantly smaller footprint on Cloud platforms than a traditional virtual server image. In the pay-as-you-use charging model employed by most Cloud providers, the less CPU cycles, RAM and storage place consumed by your app, the cheaper it is to run.
Businesses like Netflix, eBay, Amazon, Twitter and PayPal use containerised applications to deliver almost infinite scalability and lightning-fast services to their users.
A skills upgrade is required
The concept behind containerised applications may be similar to virtual servers, but Docker is functionally different to VMWare for instance. Similarly, developers will need to undergo Docker training to prepare them for those differences. Where once they could rely on the underlying OS to provide certain functionality – like networking services – their containerised app will need to include the relevant libraries.
A complete application built using microservices typically relies on several Docker containers. Even experienced Java developers will need to learn how to network containers to ensure data can be passed between each Java microservice as efficiently and effectively as possible. Which also raises the issue of data in containers, and the difference between data volume containers and processes in containers.
The fact is that deploying Docker, or attempting to adopt DevOps principles will not, on their own, improve operations, or the service offered to your customers. But if your team are properly trained in microservices architecture and design, they will be able to effectively unite technology and processes to deliver the gains your business is needs.