Introduction to DevOps

Introduction to DevOps...

DevOps is a combination of Development (Software Development) and Operations (Software Productions/IT Operations...)
1) What is DevOps?

> DevOps is not a technology or tool, it is a concept of behavior, and It is an 
  extension of Agile Methodology...

> The DevOps is a set of practices designed to overcome the gap between 
  development, QA and Operations by effective communication and collaboration,  incorporating continuous integration process with automated deployment. 

> DevOps helps to increase an organization's speed to deliver applications and 
  services. It allows organizations to serve their customers better and compete 
  more strongly in the market.

> There are four basic continuous processes in DevOps:

Continuous Integration
Continuous Delivery
Continuous Testing
Continuous Monitoring
2) Relationship Between Agile and DevOps

> Agile Development is an umbrella term for several iterative and incremental 
  software development methodologies. 

> The most popular agile methodologies include Extreme Programming (XP), Scrum, Crystal, Lean Development, and Feature-Driven Development (FDD).

> On the other hand, DevOps is about a culture where development, and operations collaborate to give maximum throughput and high-end outcomes. 

> Similar to Agile, there are ways through which DevOps can be implemented such as deep communication and automated deployment. 

> Agile is all about software development while DevOps deals with software 
  development and operations.

Note: Therefore one thing is clear that DevOps is an extension of Agile 
      methodology and it is always fruitful to integrate these two rather than 
      replacing with one another.
3) DevOps Lifecycle

> DevOps is deep integration between development and operations. Understanding DevOps is not possible without knowing DevOps lifecycle.

Here is a brief information about the Continuous DevOps life-cycle:

i. Development

> In this DevOps stage the development of software takes place constantly. In this phase, the entire development process is separated into small development cycles.  This benefits DevOps team to speed up software development and delivery process.

ii. Testing

> QA team use tools like Selenium to identify and fix bugs in the new piece of code.

iii. Integration

> In this stage, new functionality is integrated with the prevailing code, and 
  testing takes place. Continuous development is only possible due to continuous integration and testing.

iv. Deployment

> In this phase, the deployment process takes place continuously. It is performed in such a manner that any changes made any time in the code, should not affect the functioning of high traffic application.

v. Monitoring

> In this phase, operation team will take care of the inappropriate system behavior or bugs which are found in production.
DevOps Tutorial For Beginners
4) Software Tools for DevOps

> As DevOps is the collaboration of Development, QA and Operations, it is obvious that a single tool cannot be adequate for all the needs. So there are multiple tools required in each stage to perform all the operations successfully.

Popular Tool for DevOps Automation:

> Git : Version Control System tool
> Jenkins : Continuous Integration tool
> Selenium : Continuous Testing tool
> Puppet, Chef, Ansible : Configuration Management and Deployment tools
> Nagios : Continuous Monitoring tool
> Docker : Containerization tool

How do all these tools work together?
> This flow may vary from organization to organization as per the requirement.

i. Developers develop the code and this source code is managed by Version Control System tools like Git etc.

ii. Developers send this code to the Git repository and any changes made in the 
  code is committed to this Repository.

iii. Jenkins pulls this code from the repository using the Git plugin and build it 
     using tools like Ant or Maven.

iv. Configuration management tools like puppet deploys & provisions testing 
    environment and then Jenkins releases this code on the test environment on 
    which testing is done using tools like selenium.

v. Once the code is tested, Jenkins send it for deployment on the production server (even production server is provisioned & maintained by tools like puppet).

vi. After deployment It is continuously monitored by tools like Nagios.

vii. Docker containers provides testing environment to test the build features.
5) DevOps and Software Testing

> Software Testing is one of the Process in four basic processes of DevOps...


Post a Comment