Today’s loop of code from build to testing to production has evolved into a never ending cycle. Instead of pushing code to production once every quarter, companies now expect code to be tested and deployed every few minutes with little to no failure. How is this possible? What has changed?
The competitive landscape, coupled with user expectations, have made the waterfall development model obsolete. Companies can’t wait three months to push new features to production, because their competitors won’t. Companies are forced to try new things and iterate fast to meet user expectations and differentiate themselves from their competitors. The continuous loop of code requires an industry-wide change in culture. Roles of each player in the organization have shifted dramatically.
Given the high frequency of infrastructure and code changes, operations are now on the front lines, partnered with developers out of necessity. Developers are also increasingly responsible for the reliability of their code, and require instrument health checks on an on-going basis. Therefore to ensure the marriage between developers and operations does not end in a crash and burn state, the culture of DevOps is born.
We have seen that companies who are truly able to achieve a DevOps culture and outrun competition, incorporate the following:
- Modular architectures
- They split singular apps into microservices to avoid a single point of failure and to accelerate root cause analysis when monitoring changes and fixing bugs. It’s much quicker and less risky to the business to take a single microservice offline for fixing than to take the entire app down.
- Agile development pipelines
- Containers, led by Docker, simplify management of microservices at scale. Unlike traditional virtual machines, containers share a common OS kernel which makes it easy to deploy in larger quantities. Companies such as Google, Twitter, and LinkedIn, may provision hundreds of thousands of containers per day and each one may only live for seconds. This type of agility allows for a scalable development pipeline.
- Continuous integration and delivery
- Microservices and containers are most effective when code is continuously integrated as changes are committed, tests are automated, and builds are compiled and released continuously. With services such as Jenkins and Chef, companies are able to make the continuous loop of code from build to testing to production run smoothly and effectively.
- Service-aware monitoring
- To avoid downtime and user-impacting issues, DevOps must be able to efficiently monitor changes. While monitoring tools, such as Nagios, can be a useful blinking light to tell you when something going wrong, it can also be very noisy and allow critical issues to slip through the cracks. Therefore using a monitoring stack which can help DevOps easily map infrastructure to services and services to impact is critical to the health of the business.Therefore, platforms such as BigPanda, which correlate massive volumes of alerts from Nagios, allow DevOps to reduce noise and accelerate root cause analysis .
In an age where speed, agility and systems health directly impact business competitiveness, service reputation, and ultimately the bottom line, it is imperative to achieve a DevOps culture. Today, the DevOps marriage is necessary to stay competitive and keep the business above water.