HISTORY:
Before we look into DevOps, let us see what were the strategies used before it. There were several conventionally used software development methodologies like the Waterfall and the Agile methodology. let’s see what they were in detail.
Waterfall Methodology
It was the first public life cycle model introduced in 1970 by Royce. It is a software development method which is linear and sequential and it has distinct goals for each stage of development. It is called the waterfall model because the application goes to the next stage only when the previous state is complete.
This is how it works:
Requirement for app🡪Design🡪 Building🡪 Testing🡪 Deploying and Maintenance.
Limitations:
-It is difficult to go back and change the application once it is in the testing stage (in case of any bug, the operations team will have to go through the entire source code)
There is a high risk and uncertainty involved.
-It is not suitable for a project with moderate to high risk of changing. Example if the developer takes time for a project to be developed and the market has changed meanwhile.
Agile methodology
In this method, development and testing happen continuously. Here, the project is broken into several iterations of the same duration. At the end of each iteration there must be a product.
Limitations:
-The Development team was agile but the Operations team needed to remain stable. This was because of the inconsistency in the computing department.
THE SOLUTION TO THIS ISSUE IS DevOps.
What is DevOps?
DevOps stands for development and operations. DevOps is a software development strategy the bridges the gap between development and operations. DevOps is not a tool it is not a software but it is a philosophy. DevOps It is a group of concepts. It is not a technology but it is a methodology. It is a practice where the engineer participates in entire life cycle of a product starting from with design to production support. It is a methodology to integrate development and operations team.
Stages involved are:
Plan🡪code🡪 build🡪 test🡪 deploy🡪 monitor.
Let us see the DevOps practices:
1. Version control maintaining different versions of the code also known as source code management.
2. Continuous integration continuous build (compiling validating code review unit testing integration testing and packaging)
3. Continuous delivery deploying the build application to the test servers and performing user acceptance test.
4. Continuous deployment launching the product every time the testing has been completed automatically.
Once all this is done then the organisation proceeds to the continuous monitoring step.
Let us see each practice in detail:
VERSION CONTROL
There are two ways in which process is done first one is a centralised version control management and the second one is distributed version control system.
Centralised version control system:
Uses a Central server to store all files. It enables all the team members to collaborate on the central file This means that this server is not local and when every person that makes a commit it is reflected directly in the repository. If someone makes a commit and ID will be generated to identify when and who did it. This will aid to identify any future problems.
Limitations:
-Since the server is not available locally it always needs to be connected to the network to perform action.
-If server crashes or is corrupted then there is a risk of losing all data.
Distributed version control system:
It does not rely on Central server. Every worker has a clone of the repository in the form of a local repository where they can commit or update the local repository without affecting the central repository. It makes use of operations like ‘Pull and Push’ to update the central server.
Advantages over Centralised version control system:
-Changes can be done locally without manipulating the main server.
-It is fast.
-In case of any crash the local data can be regain.
The tools used for Version control are:
SUBVERSION
GIT
MERCURIAL
PERFORCE
TEAM FOUNDATION SERVER
CONTINUOUS INTEGRATION
It is a development practice where when the developers commit changes in source code, it is shared to the repository frequently and every commit made is built. This is advantageous for detecting problems early.
Some Tools that can be employed are:
JENKINS
GIT-LAB CI
BAMBOO
HUDSON
BUDDY
CONTINUOUS DELIVERY
This is taking continuous integration to the next step in an automated fashion. It is taking the application to the end user testing or user acceptance test which allows teams to detect problems early.
Some Tools that can be employed for delivery and deployment are:
JENKINS
BUDDY
BAMBOO
DOCKER
CONTINUOUS DEPLOYMENT
This is taking a built apps that was tested and applying it to the broad server for release. This is usually not considered to be a good practice because before deploying a product a lot of things need to be considered like marketing the product, performing a competitor analysis, making sure there is a market for the product etc. Hence it should not be done in an automated fashion.
CONFIGURATION MANAGEMENT
This ensures that the current design and build is well known and trusted. For example, if there is some update it in the developer’s system that is not present in the testing and deploying systems then the configuration management software will be able to detect it early on to prevent any future problems.
Advantages:
-It helps to figure out what components to change and when they are required to change.
-It helps to revert to previous version of component if you have replaced with the new but flawed version of it now.
The tools employed for Configuration management are:
CHEF
PUPPET
ANSIBLE
SALTSTACK
CONTINUOUS MONITORING:
To define it we can say that it is the ability of an organisation to detect report respond contain and mitigate the problems that occur on its software and it is also the integration of different security tools.
Reason for usage:
-This is done to resolve any system errors such as low memory, unreachable service etc.
-It can detect any network server problems and can detect root causes of issues.
-It maintains availability of services and monitors troubleshoot performance issues.
-It allows to plan for infrastructure updates before outdated systems can cause failure.
-It can respond to issues at first sight of problem and can be used to automatically fix the issue.
The commonly used tools for Continuous Monitoring are:
LOGSTASH
GRAPHITE
NAGIOS
SPLUNK
Overall, to summarise, we can state that, the following 10 tools can be used for your DevOps strategy:
JENKINS
GIT
DOCKER
ANSIBLE
SPLUNK
PHANTOM
NAGIOS
SELENIUM
PUPPET
ELK STACK
By employing these tools and the practices of DevOps, an organisation can become more efficient by ensuring fast deliveries, by being responsive and by being able to troubleshoot in a quick manner. These can help to satisfy the customer needs and stay ahead of competitors. In the long run, these practices can yield very good results.