Docker, the way for DevOps
Sandeep Khuperkar I CTO and Director, Ashnik
DevOps is a way of thinking, it emphasizes on interaction between developers and operation teams. The goal is to improve the quality and speed at which development is done and delivered.
Gene Kim in his Phoenix Project referred to the principles known as “Three Ways of DevOps”. These principles basically describe the process, procedure and practice of DevOps.
In this paper we will talk about how Docker helps you embarking upon your DevOps journey
The First Way : Flow
We can deliver business value to end customer only when we are able to well integrate our process. This First way shows flow from development to delivery or what we can say as from making the things to things what people buy. This flow provides visibility for what it takes to build the end product. Ops team is involved in early process of development, which helps the team to see the new development and changes which are coming up and gives enough time to be prepared. This helps in faster time to market.
Docker Benefit : With Docker you can bundle base OS, middleware, runtime and application in same image. This helps to avoid variation in every stage of delivery process i.e dev, test and production deployment. Dockerizing the development process can help organizations reduce the cost and risk of software delivery.
The Second Way : Feedback
This is the way for feedback which facilitates communication between Ops and Dev. This helps create a stable feedback loop thereby improving the business value being delivered to the customer. This also helps in fixing the defects faster which in turn helps improve the delivery speed.
In this “Second Way” we need to have velocity in entire feedback loop i.e in both the direction. Process should not only be adaptive to defects-detection but also how fast it can bring back to original baseline conditions.
Docker Benefit : Docker’s packaging, provisioning and immutable delivery of images helps organization to shorten changeover time due to defects. Docker immutable images provide key advantages like portability and predictability of the containers running from these images. With immutable images you can be sure that given image will always have the same behavior as the code is contained in the same image. You can run different version of your application and use them for A/B testing.
One of the key advantages of portability is that we can also change the run-time dependencies between the deployments.
Docker help us look at application deployments in different way, not limiting to only code deployment but enable us to handle the entire deployment process much better.
The Third Way : Continuous experimenting and learning
With the First Way we setup the flow from left to right. This helps us to be more experimental and develop quickly as we have involved Ops right from the development process. With the Second Way in place we have a continuous feedback from Ops to Dev which helps to validate the success of the experiment quickly and helps to fix the failures, if any, quickly.
The Third Way actually completes the loop and ties the first two ways together which helps in continuous experimenting and learning.
With this experimentation and learning approach we are able to institute a mechanism of ‘fail fast and learn quickly’ in a controlled environment. This also helps increasing code reliability and in making it production ready with less iteration.
Docker Benefit : Docker helps delivering software and services with great speed to market. Organizations can create a pre-built Docker images that has all the ingredients required to perform any test or experiments quickly. Prior to implementing Docker images, the lead time to build the environment for experimentation used to take 1-2 days. Now organizations can run set of experiments in few hours with the help of Docker images.
Summary of what Docker is well understood by what they say Build, Ship, Run.
- Build – Docker allows you to compose your application from microservices, without worrying about inconsistencies between development and production environments, and without locking into any platform or language.
- Ship – Docker lets you design the entire cycle of application development, testing, and distribution, and manage it with a consistent user interface.
- Run – Docker offers you the ability to deploy scalable services securely and reliably on a wide variety of platforms.
– Sandeep Khuperkar I CTO and Director, Ashnik
Sandeep is the Director and CTO at Ashnik. He brings more than 21 years of Industry experience (most of it spans across Red Hat & IBM India), with 14+ years in open source and building open source and Linux business model. He is on Advisory Board of JJM College of Engineering (Electronics Dept.) And visiting lecturer with few of Engineering colleges and works towards enabling them on open source technologies. He is author, Enthusiast and community moderator at Opensource.com. He is also member of Open Source Initiative, Linux Foundation and Open Source Consortium Of India.
- Need to blend and visualize fast moving data sets on the fly?
- Docker, the way for DevOps
- NGINX Plus Cloud Deployment for Flawless Application Delivery