Who is a DevOps Engineer?
A lot of big IT companies have adopted DevOps as their way forward. So
in this blog, I will discuss what exactly is DevOps and the points that
I will be covering are as follows:
+ What is DevOps?
+ History of DevOps
+ DevOps Tools and stages
+ Who is a DevOps Engineer?
What is DevOps? DevOps Definition – What is DevOps – aws-senior.com
* The term DevOps is a combination of two words namely Development and Operations. DevOps is a practice that allows a single team to manage the entire application development life cycle, that is, development, testing, deployment, and monitoring. * The ultimate goal of DevOps is to decrease the duration of the system’s development life cycle while delivering features, fixes, and updates frequently in close synchronization with business objectives. * DevOps is a software development approach with the help of which you can develop superior quality software quickly and with more reliability. It consists of various stages such as continuous development, continuous integration, continuous testing, continuous deployment, and continuous monitoring.
So since what is DevOps, let us have a look at the history of DevOps.
History of DevOps
Before DevOps, We had two approaches for software development namely
the Waterfall and the Agile.
* The waterfall model is a software development model that is pretty straight forward and linear. This model follows a top-down approach. * This model has various starting with Requirements gathering and analysis. This is the phase where you get the requirements from the client for developing an application. After this, you try to analyze these requirements.
waterfall model – what is devops – aws-senior.com
* The next phase is the Design phase where you prepare a blueprint of the software. Here, you think about how the software is actually going to look like. * Once the design is ready, you move further with the Implementation phase where you begin with the coding for the application. The team of developers works together on various components of the application. * Once you complete the application development, you test it in the Verification phase. There are various tests conducted on the application such as unit testing, integration testing, performance testing, etc. * After all the tests on the application are completed, it is deployed onto the production servers. * At last, comes the Maintenance phase. In this phase, the application is monitored for performance. Any issues related to the performance of the application are resolved in this phase.
Advantages of the Waterfall Model:
* Simple to understand and use * Allows for easy testing and analysis * Saves a significant amount of time and money * Good for small projects if all requirements are clearly defined * Allows for departmentalization & managerial control
Disadvantages of Waterfall Model:
* Risky and uncertain * Lack of visibility of the current progress * Not suitable when the requirements keep changing * Difficult to make changes to the product when it is in the testing phase * The end product is available only at the end of the cycle * Not suitable for large and complex projects
Agile Methodology is an iterative based software development approach
where the software project is broken down into various iterations or
sprints. Each iteration has phases like the waterfall model such as
Requirements Gathering, Design, Development, Testing, and Maintenance.
The duration of each iteration is generally 2-8 weeks.
agile methodology – what is devops – aws-senior.com
* In Agile, a company releases the application with some high priority features in the first iteration. * After its release, the end-users or the customers give you feedback about the performance of the application. * Then you make the necessary changes into the application along with some new features and the application is again released which is the second iteration. * You repeat this entire procedure until you achieve the desired software quality.
Advantages of Agile Model
* It adaptively responds to requirement changes favorably * Fixing errors early in the development process makes this process more cost-effective * Improves the quality of the product and makes it highly error-free * Allows for direct communication between people involved in software project * Highly suitable for large & long-term projects * Minimum resource requirements & very easy to manage
Disadvantages of Agile Model
* Highly dependent on clear customer requirements * Quite Difficult to predict time and effort for larger projects * Not suitable for complex projects * Lacks documentation efficiency * Increased maintainability risks
Now let us move on and discuss the DevOps stages and tools.
DevOps Stages and Tools
As mentioned earlier, the various stages such as continuous
development, continuous integration, continuous testing, continuous
deployment, and continuous monitoring constitute the DevOps Life cycle.
Now let us have a look at each of the stages of DevOps life cycle one
Stage – 1: Continuous Development
Tools Used: Git, SVN, Mercurial, CVS
CD – What is DevOps – aws-senior.com
* This is the phase that involves ‘planning‘ and ‘coding‘ of the
software. You decide the project vision during the planning phase
and the developers begin developing the code for the application.
* There are no DevOps tools that are required for planning, but
there are a number of tools for maintaining the code.
* The code can be in any language, but you maintain it by using
Version Control tools. This process of maintaining the code is
known as Source Code Management.
* After the code is developed, then you move to the Continuous
Stage – 2: Continuous Integration
Tools: Jenkins, TeamCity, Travis
* This stage is the core of the entire DevOps life cycle. It is a
practice in which the developers require to commit changes to the
source code more frequently. This may be either on a daily or
* You then build every commit and this allows early detection of
problems if they are present. Building code not only involves
compilation but it also includes code review, unit testing,
integration testing, and packaging.
* The code supporting new functionality is continuously
integrated with the existing code. Since there is a continuous
development of software, you need to integrate the updated code
continuously as well as smoothly with the systems to reflect
changes to the end-users.
* In this stage, you use the tools for building/ packaging the code
into an executable file so that you can forward it to the next
Stage – 3: Continuous Testing