Beginners Guide to DevOps

Photos via Pexels

What is DevOps

According to IBM, DevOps has become an increasingly common approach to software delivery that development and operations teams use to build, test, deploy, and monitor applications with speed, quality, and control.

DevOps is essential for any business aspiring to be lean, agile, and capable of responding rapidly to changing marketplace demands. It is an approach on the journey to lean and agile software delivery that promotes closer collaboration between lines of business, development, and IT operations while removing barriers between stakeholders, and customers.

Development teams need to design, develop, deliver and run the software as quickly and reliably as possible. Operations teams need to identify and resolve problems as soon as possible by monitoring, predicting failure, managing the environment and fixing issues. Combining this common approach across Dev and Ops with the ability to monitor and analyze bottlenecks and optimize as quickly as possible gives birth to DevOps — a collaborative approach across business, development, and operation teams to deliver and run reliable software as quick and efficient as possible.

DevOps implementation brings a lot of value to today’s organizations :

Why DevOps

Before DevOps, We had two main approaches for software development : the Waterfall approach and the Agile approach.

Waterfall Model

Waterfall Model

This model follows a top-down approach:

  1. Requirements consists of getting and analyzing the client’s requirements for developing the application.
  2. Design consists of thinking about how the software is actually going to look like.
  3. Implementation concerns the coding part where developers works together on various components of the application.
  4. Verification is about conducting various tests on the application such as unit testing, integration testing, performance testing, etc.
  5. Maintenance is about continuously monitoring the application deployed into the production servers.

This model is simple to understand and use. especially for small projects where the client’s requirements are clearly defined. However, when dealing with large projects where the client’s requirements keep changing, this model becomes risky and uncertain as it is difficult to perform any changes on the product when it is in the testing phase and the product is available only at the end of the cycle which means, the decisions about making any modifications can be taken after delivering the software to the client which means after deploying the software on production servers.

“ When a customer enters my store, forget me. He is king.”

— John Wanamake —

In order for any business to thrive, it is crucial to respond effectively to market demands and satisfy the customer’s requierements. To do that, customers should be involved in the software developement process as their feedback matters !

The Waterfall Model

You can see clearly that the Waterfall model doesn’t take feedback into consideration, once the clients needs are gathered and the development process is started, the client will have to to wait until the delivery process to give his feedback or ask for new features. This problem have led to the birth of the Agile model.

Agile Methodology

Agile Model

The Agile Methodology is an iterative based software development approach that focuses on collaboration, customers feedback and small rapid releases.

The software project that follows the Agile model is broken down into various iterations. Each iteration has phases: Requirements Gathering, Design, Development, Testing, Deployment and Maintenance and most importantly, Client’s Review and feedback.

Because the Agil model involves continuous iteration of development and testing, end-users or the customers can be involved to give their feedback about the performance of the application which will help the developers to make the necessary changes and release the software again for testing. this procedure is repeated until the desired software quality is achieved.

The Agile model have played a huge part in addressing the communication gap between the Customers and Developers.

The Agile approach.

However, this model have led to other problems in the Operation Team who really hates Instability, it is hard for them to maintain the stability of the deployment environnement, monitor the servers, correct and fix bugs and errors that keep coming because of the continuous iteration of development and testing that the development team performs. In such case, It important for both teams to communicate and collaborate together. This problem have led to the birth of DevOps that is based on the idea of collaborative learning and collaborative relationships between development and operations. They focus on increasing the deployment speed, while also ensuring the production reliability, stability, resilience, and security.

DevOps grew out of Agile. Agile is a way of producing software in short iterations on a continuous delivery schedule of new features and bug fixes in rapid cycles from two to four weeks. In contrast, DevOps brings the development and operations teams together to focus on eliminating silos to decrease time of addressing customer feedback and break down bottlenecks to enable continuous software delivery. Consequently, they can build, test, and release software more quickly with as much efficiency and speed as possible.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store