DevOps — Is it a fit for all Businesses?
DevOps is -
DevOps is a software development methodology that combines software development with information technology operations to shorten the systems development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives.
The standard definition of DevOps we find on Wikipedia.
Q — DevOps is just another bloated up Agile methodology to get code faster into production and make more money for the business.
And you might be right. Even though we find information at lengths on how DevOps Consulting Services can improve your project delivery, the generalized notion around DevOps is, it is just a faster way of development and deployment. DevOps is not considered as just a Software development methodology rather it is advocated as a change in culture. A culture of increased collaboration between the Development and the Operations team to deliver reliable and bug-free code to production in short intervals. In attempts to increase efficiency the Development and Operations teams communicate consistently to deliver the required Business needs to the Customers.
Key features of DevOps -
Continuous Integration : It is a development practice wherein the developers INTEGRATE code into a shared repository frequently. Each update is tested (mostly automated build test) and reported immediately before adding to larger code base.
Continuous Delivery : It is a process in which the code produced is made production ready in shorter intervals. The deployment on the Production server is done after ensuring business application and services function as expected through automated testing.
Automation : DevOps also aims at reducing Manual Interventions where possible in the delivery chain. Automated testing is one such area of delivery pipeline. Test scripts are finalized before writing the code to ensure the required functionality is DELIVERED. After code integration automated tests are executed on the code to make it ready for deployment on the Production. Deployment Automation is also one of steps in Continuous Delivery.
Increased Security : CD deals with creating batches of code to be delivered to the production at planned intervals. To create a secure product, checks are introduced at each stage of development in CD, enabling a Continuous Feedback to reevaluate the piece of code created.
Increased Stability : Mean Time to Recovery (MTR) is the time taken to roll-back/resolve a Bug in a module once it is identified on the Production server. Mean time to Detection (MTD) is the time taken to identify the Bug after deployment. These are two of the Metrics used to evaluate your DevOps implementation. Due to its Continuous Monitoring process it helps in identifying issues in a short span of time hence increasing the stability of your Applications.
Q — Enough with the Jargons, Show us where can it be used?
Right again, we will dive into a scenario.
Ecommerce portals have revolutionized the shopping industry. Examples like Amazon, eBay, Target and Flipkart are reigning the market through their responsive and evolving web/mobile portals. Dynamism is the key to attracting and retaining a customer base. To accommodate this dynamism, a deployment framework that can facilitate and accommodate Random delivery of features to these portals is a base requirement.
Traditional Scenario: In the traditional scenario the Operations team had little or no visibility on the module being deployed. Furthermore, these deployments had to be scheduled after “Office-hours” and with a decided “Downtime” wherein the Customers couldn’t use the functionality being manipulated for a given period of time. Deployments were mostly done manually.
DevOps Scenario: The traditional methodology was not feasible for businesses. It restricted them from introducing changes either only at late hours or on weekends, whenever the planned downtimes were permitted by the Management. DevOps encourages deployment of features on the portal as and when they are developed. Incase of Continuous Deployment the deployment of the code on the Production servers is automated, enabling faster delivery of features for the end users. The continuous automated test cycles of DevOps reduces the risk of delivering a faulty code to production. Incase of failure MTD and MTR help us evaluate the time that would be taken to restore the original functionality of the Portal. These capabilities opened a diverse amount of possibilities for the Business, enabling it to introduce innovations for their customers at runtime and hence keeping them engaged. A continuous feedback on the quality of the features implemented helped them to make improvements rapidly hence providing a sturdy and engaging experience.
Q — Retail is an easy example. What about a scenario where you need to serve multiple customers on the same terminal and being available in real-time is critical to your business.
Right again. So, we will take up an example which is critical to the survival of an individual. Failure to deliver will be a matter of life and death. We take the example of Netflix.
Netflix Senior SRE, Dave Hahn was at a DevOps summit recently, where representatives had to present how DevOps helped their business deliver and grow. The crowd waiting in anticipation to be amazed, the first statement that Dave made was ‘We Don’t Do DevOps’.
Netflix is made up of 100s of Microservices, making 1000s of daily production changes, engaging in around 10,000s of customer interactions per seconds and has 139 million subscribers as of Jan 2019.
Netflix says, it doesn’t build systems that says NO to their developers. There are no Planned Delivery Schedules or multiple Pre-Production server tests that the code has to surpass to reach production. It states all its Engineers has access to production. They don’t invest more time in building policies and procedures that in any way prevent their Engineers from reaching Production. They believe in Freedom and Responsibility.
One of the goals at Netflix is we want to Hire Smart people and get out of their way.
Netflix indulges in people that take up responsibility and do not wait for it to be given to them. They believe Freedom and Responsibility go hand in hand. They Don’t invest in Uptime at all costs, rather they prize to indulge an individual in his Velocity of Innovation. We should judge the amount of Uptime we are willing to compromise with respect to the Innovations we are going to deliver to our Customers.
Netflix does not believe in Silos, Fences or Walls. The Development, Security, Operations and Infrastructure teams do not sit behind walls over which code is thrown to them with a set of instructions to get it deployed. Rather Netflix believes in making Ownership easy and embedding a You Build It — You Run It kind of culture. Teams take the entire ownership of an idea from its origin, its implementation, the infrastructure it requires and getting it deployed and maintaining it.
So, in conclusion what Dave wants to say is Netflix does not do DevOps but what it does is Culture. Right from hiring individuals to the work environment, Netflix believes in Freedom, Responsibility, Ownership and Trust. The resultant of all of these is very similar to what an ideal DevOps implementation should look like.
And you might say: Is that all you have to tell us, Freedom, Trust, Ownership and Responsibility is DevOps??
And my answer would be: YES.
You can find the entire presentation by Dave Hahn on DevOps here.