December 06, 2017
‘DevOps’ is a word mash of development and operation. It is a new but most effective approach to development where development and operation go hand-in-hand. DevOps was introduced with certain goals in mind and surely one of the goals was to overcome the limitations of the previous versions of development, waterflow and agile. The problem with waterflow approach is, it was time-consuming. In this approach all steps involved in software development done in one go, so the development cycle consumes higher time. And by the time software launched to market, the interest of majority customers had changed and was no more interested in purchasing the product. The second approach of development named ‘Agile’, has reduced the amount of time being consumed in the launch of software, by not developing the entire software in one go. In this, the launch is done with unstable features and users are requested to share their opinions to improve the product. In this difficulty comes when users have mixed opinions on features. And to figure out the exact need of users from their mixed feedbacks has always been a difficult task for the organizations.
The famous social media company Facebook had the same problem when 2011 they added new features of timeline on their website. At that time Facebook has 500 million users and a majority of them were active. When they knew facebook has launched new features all tried to explore those features which in return cause a heavy load to the facebook server and as a result the server of Facebook went on the knee. Also, they got a mixed opinion on new features from users. That is when Facebook switches their approach to development from Agile to DevOps. Automation and deployment are the two important aspects of DevOps. But to understand the importance of DevOps automation and deployment in development we have to consider the real world DevOps stages. The very first stage in DevOps is:
Writing source code for the application --> Version Control --> Continuous Integration --> Continuous Testing --> Continuous Deployment --> Continuous Monitoring.
In the first stage of DevOps, developers write their code. And then simultaneously put it on git where the process of version control or source code management (SCM) happens, which is the second stage in DevOps.Once any developer commits a change in the code, that code should be merged with the main branch for the purpose of testing. So the next two steps of DevOps are continuous Integration and continuous testing. The integration of code is done by using Jenkins. And once the integration of code is done we write a Selenium script to automate the test and finally run the test in a virtual environment again with the help of Jenkins.
After integration and testing, the next stage is deployment. And to automate configuration management (one of the major steps of continuous deployment), applications like puppet used to configure the multiple servers on which the applications will run. And once the newly developed code is deployed to the real world application after a local test, a continuous monitoring of the behavior is done using a program like ‘Nagios’. And if any misbehave is detected the, immediately the error report is being sent to the developers.
Steps involved in DevOps are greatly influenced by automation. And all are done by using dedicated programs to transfer the code from development environment to real-world environment in the quickest possible way, which saves lots of efforts and time. This it explains the importance of DevOps automation and deployment.
Stories by Shyamdeo Kumar