Hello techies, I hope you are eagerly looking for new technologies. Today I would like to explain an interesting topic on DevOps and why DevOps is an absolute need in every organization. It is the latest buzzword in the IT industry and it will remain in that way until every organization out there adopts DevOps or one of its variation for software development.
We go through the evolution of software development over the years and how methodologies and strategies have changed with respect to time and needs.
- Waterfall model:
In this model, it consists of different phases. First requirements gathering phase, then the architecture design phase then comes the coding phase and after that is the testing and debugging. Finally after that software can be delivered. Well over time people found that this model was very slow and the developers took a long time to develop the software.
At that time development was very slow, by the time the actual software was delivered, requirements of the customers changed and they didn’t want the software at all. So, this gave birth to agile development.
- Agile Development Methodology:
Agile development methodology promotes continuous iteration of development and testing throughout the software development lifecycle of the project. Both development and testing activities are concurrent, unlike the Waterfall model.
The difference is the entire software couldn’t be developed at one go, but it will be broken down into smaller chunks of features that delivered at fixed intervals like every week or once at every two weeks with multiple iterations. So raising these features multiple Sprint does not only give the customers more satisfied with respect to progress made but also give them the flexibility to change the requirements midway and allows the developer to incorporate feedback given by the customers. Thereby saving lots of time and money for making the changes.
Even though it reduced development time drastically, it lacked the agility in IT operations, so that was when DevOps came in.
Well “What is DevOps?”
DevOps is the practice of bringing agility to both development and IT operations. All the major Companies have started adopting this model because they realized that the development and operations go hand-in-hand to build a foolproof software.
So let’s understand the necessity of DevOps with the classic use case of Facebook. Well back in 2011, Facebook released multiple features like timeline and music functionality suddenly available to the entire user base. This global deployment got them into trouble. Facebook at that time had around 500 million users and the majority of them were active users. So as and when the users realized that their favorite social media website suddenly introduced new functionality like timeline and music, they were all excited to explore the features and they all started using. This led to hight website traffic which in turn led to their server meltdown.
Well for the obvious reason this high server utilization had a negative impact on their website and it was so bad that it brought down their site to its knees within minutes. This was a catastrophic situation for a company as big as Facebook. Well, this and also that the newly-released features got a mixed response from there users. Some felt that the time and the music functionalities were awesome and some did not like it at all. So they also had a tough time to figuring out the flaws and incorporating feedback. This is when they realize that they should be a change in the way their software is deployed. Post this they came up with something called as the “Dark Launching“.
In fact, many companies now are using the dark launching technique. Facebook, Google, Amazon, and Netflix are just a few of them. Now let’s understand what this ‘Dark Launching’ is?
DARK LAUNCHING TECHNIQUE:
It is a technique in which the features are deployed to a small user base. This user base is continuously monitored and the feedbacks are continuously developed and tested. Once the features are stable, they are deployed on the other user bases in multiple releases.
Now let’s understand how Facebook would have implemented it.
According to Dark Launching Technique, the features are only deployed to a small user base. If you can see from the diagram only one delivery pipeline is currently active, there are many delivery pipelines however they’re all turned off at this point. Now what the facebook does is they continuously monitor the specific user base on which the features have been deployed to identify the bugs and get the user feedback.
These bugs are fixed and feedback is incorporated by continuous development and continuous testing. Now, these updated features they are then deployed back to the same user base, this process continues until the features are stable and users are happy with the features. So once the stability is achieved when these features are deployed to the multiple user bases by turning on different delivery pipelines.
On the contrary, if the users do not like the features then the Facebook can just perform a roll-back option and remove the functionality altogether. This way facebook has a control of stable mechanism for developing new functionality to its massive user base. This also helps Facebook to prepare their servers for deployment as they can predict the user activity on their website and they can scale up their servers accordingly.
You would have noticed that there are many new terminologies mentioned in this process like
- Continuous Development
- Continuous Testing
- Continuous Integration
- Continuous Deployment
- Continuous Monitoring.
These activities cannot be performed using the agile model. Hence the methodology of DevOps was the way forward. It is not just Facebook, even Google, Amazon, and Netflix use this process for releasing features.
Google initially released ‘gchat’ features only to their own employees and based on the multiple iterations and feedback from the different teams they came up with a flawless functionality. So,
“DevOps is a software development approach which involves continuous development, continuous testing, continuous integration, continuous deployment and continuous monitoring of the software throughout its development life cycle.”
This is exactly the process adopted by all the top companies to develop high-quality software in shorter development life cycles resulting in greater customer satisfaction.
DevOps is an approach that combines and collaborates Developers and IT Operations to develop and deliver software more efficiently than a traditional siloed approach. The teams are not solely limited to developers and IT operations only. In most cases, the approach is also spread on QAs, PMs and Security experts. Companies that implement DevOps on early stages will create grounds for scalable growth.