Day 1 - Introduction to DevOps

Day 1 - Introduction to DevOps

#productivity#software#devops

DevOps is a software development that bridges the gap between software developers and IT staff in a way that new features can be released more quickly and get immediate feedback. This is made possible through the use of automated CI/CD pipelines.

Why DevOps

The introduction of DevOps came into to try and do away with the traditional methods of software development methodologies, which the mostly common used ones are:

  • Agile Methodology

  • Waterfall Methodology.

The two methodologies each had their own advantages and disadvantages which we will brush through briefly.

Agile Methodology

To start with agile methodology, this involved a project being broken down into into various iterations and each iteration had its own phase which includes but not limited to requirements gathering, design, development, testing etc.

The challenges with this approach included:

Waterfall Model Methodology

This is a straight forward methodology which is als known as top-down approach since it involved breaking the project into iterations and the next iteration could only start after the iteration before it has been completed.

The challenges of this approach included:

Looking the challenges above, DevOps now comes in to integrate development and operations teams so as to improve collaborations and productivity.

A developer might face issues like waiting time for code deployment which DevOps solves that by continuous integration which ensures there is a quick development, testing and feedback.

Coming to operations, some of the challenges that might be faced include, difficulty in maintaining uptime of the production instances which can be solved by DevOps by usage of containerization which ensures there is a simulated environment created to run the software thus offering great reliability for service uptime.

Another challenge faced by the operations teams might be having the appropriate tools to automate infrastructure management effectively as load keeps increasing. This DevOps can help in solving it by using configuration management which organizes and executes configuration plans and manages the infrastructure effectively.

DevOps LifeCycle

The DevOps lifecycle can be categorized down into 5 phases or stages.

  1. Continuous Development - This phase involves planning and actual coding of the product. Some of the tools used in this phase include Mercurial and Git

  2. Continuous Integration - This phase involves committing the changes made to the source code more frequently, this mostly is done daily though other may prefer doing it weekly. Tools used in this phase include TeamCity, Jenkins, Travis etc.

  3. Continuous Testing - This phase involves testing the development product to ensure it is working as required and is bug free. Tools used in this phase include Selenium, Jenkins etc

  4. Continuous Deployment - This phase involves deployment of code to the production environments. Tools used in this phase include ansible, puppet for configuration management and docker for containerization.

  5. Continuous Monitoring - This phase involves monitoring the performance of your product. This has to be done continuously as it as a critical phase. From this you will be able to get proper metrics about the use of the product and how users are interacting with it. Tools used here include Nagios, New Relic etc.