Organizations like Netflix, Amazon, Google, Instagram, and Facebook (which practice DevOps) have set the bar pretty high concerning the end-user experience.
Most people have probably heard the term DevOps being used a lot lately, either from people who work with software or from an online post like this one. DevOps is hard to explain, even for those who practice it. This is because as opposed to well-defined concepts like Continuous Integration (CI), Continuous Delivery (CD), and automation, DevOps is a culture of collaboration that encompasses several different concepts. While CI/CD and automation are about software, DevOps is about the people behind it. It's about changing the way they think, work, and communicate with each other.
Silos and Waterfalls
With DevOps, the goal isn't an enumerated outcome like an increase in sales or revenue (though that is a by-product of doing DevOps the right way), but rather to optimize the flow of value from developer to consumer.
To completely understand how distinctively most organizations were functioning in the past, a quick lesson on "Silos" and "The Waterfall Approach" is probably in order. Silos refer to teams that work in a bubble and don't share information or accept feedback until their task is over. This method was called The Waterfall or "chucking over the wall" Approach.
Imagine this: you are a developer in the IT industry, working on an update for three months without any collaboration or feedback from the operations team (responsible for ensuring your update is deployed successfully.)
You work on your code in a solitary bubble, and when completed, you decide to "chuck it over the wall" to your Ops team. The team, who have had no way to see what you have been doing and provide feedback, are surprised that you have used several resources that make your update incompatible with the present infrastructure and chuck it back to you.
This cycle would continue back and forth for weeks or even months and was the primary reason why software development lifecycles were so long.
Once the development stage has commenced, implementing new features is not possible with The Waterfall Approach. The only way to do so is to scrap the current deployment and go back to the drawing board.
Doing this was a massive waste of time and energy for everyone involved until John Allspaw and Paul Hammond gave a presentation titled 10+ Deploys per Day: Dev and Ops Cooperation at Flickr.
While most of us know Flickr as a photo-sharing platform, a lesser-known fact is that it was one of the first organizations that had Dev and Ops teams working side-by-side. Let us revisit our example of a developer working in a silo and instead imagine the Ops team involved in the project from the get-go. The difference here, of course, is that the Ops team will be able to point out the minute a developer is straying in terms of production environment limitations, saving time and money in the process.
The key to fast and frequent updates
Going back to the Flickr example: 10 deployments per day was unimaginable, especially when updates were few and far between. What's interesting is that when Flickr had combined its Dev and Ops teams, it was owned by Yahoo! - who were still doing things the old way.
In an interview with itrevolution.com, Jim Stoneham, who was running Yahoo! Communities business in 2009, recalls how an engineer at Flickr could commit code to production at the push of a button, while at Yahoo! it was a slow and drawn-out process.
Now, this brings us to a crucial aspect of DevOps and automation. Automation is a process of effectively eliminating manual and repetitive tasks in the development lifecycle while using technology to perform tasks with minimum human assistance.
This is done with the help of CI/CD tools like Jenkins and Jenkins X that help automate the entire delivery pipeline. Reusing software is another important aspect of automation as it prevents teams from wasting time re-inventing the wheel when solutions are already available. A good example is the practice of providing developers with reusable environments and resources.
Why it can't be done without DevOps
Organizations like Netflix, Amazon, Google, Instagram, and Facebook (which practice DevOps) have set the bar pretty high concerning the end-user experience and what consumers expect from an application. Flawless performance with frequent updates and patches that fix issues virtually and instantly are characteristics of an application that most of us take for granted now.
The ability to make changes that immediately make it to the live application is not only a must-have quality if an application is to remain relevant in this day and age, but one that is not achievable without DevOps.
About the author:
With a background in Linux system administration, Nigel began his career with Symantec Antivirus Tech Support. He has now been a technology journalist for over 6 years and his interests lie in Cloud Computing, DevOps, AI, and enterprise technologies.
More by Nigel Pereira:
How containers changed the way we deploy software
5G, a software-defined future
How video games changed the way we process data