# Day 1 - Introduction to DevOps

[#productivit](https://dev.to/t/productivity)[y#softwar](https://dev.to/t/productivity)[e#devop](https://dev.to/t/software)[s](https://dev.to/t/devops)

[DevO](https://dev.to/t/devops)p[s is a so](https://dev.to/t/productivity)[ftware](https://dev.to/t/software) [develop](https://dev.to/t/devops)ment tha[t bridges](https://dev.to/t/productivity) [the ga](https://dev.to/t/software)[p betwe](https://dev.to/t/devops)en 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 DevO[ps came i](https://dev.to/t/productivity)[nto](https://dev.to/t/software) [to try a](https://dev.to/t/productivity)[nd do a](https://dev.to/t/software)[way wit](https://dev.to/t/devops)h the traditional methods of software development methodologies, which the mostly common used ones are:

* Agile Methodology
    
* Waterfall Metho[dology.](https://dev.to/t/productivity)
    

[The t](https://dev.to/t/software)[wo me](https://dev.to/t/devops)[thodologi](https://dev.to/t/productivity)[es each](https://dev.to/t/software) [had th](https://dev.to/t/devops)eir [own adva](https://dev.to/t/productivity)[ntages](https://dev.to/t/software) [and dis](https://dev.to/t/devops)advantages which we will brush through briefly.

### Agile Methodology

To start with agi[le method](https://dev.to/t/productivity)[ology,](https://dev.to/t/software) [thi](https://dev.to/t/devops)[s involve](https://dev.to/t/productivity)[d a pro](https://dev.to/t/software)[ject be](https://dev.to/t/devops)ing 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 in[cluded:](https://dev.to/t/productivity)

* [Lacks](https://dev.to/t/software) [docume](https://dev.to/t/devops)ntation efficiency
    
* Qu[ite diffi](https://dev.to/t/productivity)[cult to](https://dev.to/t/software) [predic](https://dev.to/t/devops)t timelines [for each](https://dev.to/t/productivity) [iterat](https://dev.to/t/software)[ions](https://dev.to/t/devops)
    
* Not suitable for complex projects
    
* [Increase](https://dev.to/t/productivity)[d maint](https://dev.to/t/software)[ainabil](https://dev.to/t/devops)ity risks
    

### W[aterfall](https://dev.to/t/productivity) [Model M](https://dev.to/t/software)[ethodol](https://dev.to/t/devops)ogy

This is [a straig](https://dev.to/t/productivity)[ht forw](https://dev.to/t/software)[ard met](https://dev.to/t/devops)hodolo[gy which](https://dev.to/t/productivity) [is als](https://dev.to/t/software) [known a](https://dev.to/t/devops)s 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 incl[uded:](https://dev.to/t/productivity)

* [Not sui](https://dev.to/t/software)[table f](https://dev.to/t/devops)or large and complex p[rojects](https://dev.to/t/productivity)
    
* [Lack](https://dev.to/t/software) [of visi](https://dev.to/t/devops)bility of the current pr[ogress](https://dev.to/t/productivity)
    
* [The en](https://dev.to/t/software)[d produ](https://dev.to/t/devops)ct is only available at [the end](https://dev.to/t/productivity) [of the](https://dev.to/t/software) [lifecyc](https://dev.to/t/devops)le
    
* Difficult to make changes at the tes[ting phas](https://dev.to/t/productivity)[e](https://dev.to/t/software)
    
* [No](https://dev.to/t/software)[t suita](https://dev.to/t/devops)ble when requirements keep [changing](https://dev.to/t/productivity)
    

[Look](https://dev.to/t/software)[ing the](https://dev.to/t/devops) challenges above, DevOps [now come](https://dev.to/t/productivity)[s in to](https://dev.to/t/software) [integr](https://dev.to/t/devops)ate development and operations teams so as to improve collaborations and productivity.

A developer might face issues like w[aiting ti](https://dev.to/t/productivity)[me for](https://dev.to/t/software) [code de](https://dev.to/t/devops)ployment which DevOps solves that by continuous integration which ensures there is a quick development, testing and feedback.

Coming to operations, some of the ch[allenges](https://dev.to/t/productivity) [that mi](https://dev.to/t/software)[ght be](https://dev.to/t/devops) 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 opera[tions tea](https://dev.to/t/productivity)[ms migh](https://dev.to/t/software)[t be ha](https://dev.to/t/devops)ving 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 lifecyc[le can be](https://dev.to/t/productivity) [catego](https://dev.to/t/software)[ri](https://dev.to/t/devops)[zed down](https://dev.to/t/productivity) [into 5](https://dev.to/t/software) [phases](https://dev.to/t/devops) or stages.

1. **Continuous Development** - This phase [involves](https://dev.to/t/productivity) [plannin](https://dev.to/t/software)[g and a](https://dev.to/t/devops)ctual coding of the product. Some of the tools used in this phase include Mercurial and Git
    
2. **Continuous Integration** - This phase [involves](https://dev.to/t/productivity) [committ](https://dev.to/t/software)[ing the](https://dev.to/t/devops) 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 invo[lves test](https://dev.to/t/productivity)[ing the](https://dev.to/t/software) [develo](https://dev.to/t/devops)pment 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 i[nvolves d](https://dev.to/t/productivity)[eployme](https://dev.to/t/software)[nt of c](https://dev.to/t/devops)ode to the production environments. Tools used in this phase include ansible, puppet for configuration management and docker for containerization.
    
5. **Continuous Monitoring** - This phase i[nvolves m](https://dev.to/t/productivity)[onitori](https://dev.to/t/software)[ng the](https://dev.to/t/devops) 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.
