Introduction to DevOps…
DevOps is a combination of Development (Software Development) and Operations (Software Productions/IT Operations…)
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 a 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
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.
DevOps is deep integration between development and operations. Understanding DevOps is not possible without knowing the DevOps life cycle.
Here is brief information about the Continuous DevOps life-cycle:
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 the DevOps team to speed up the software development and delivery process.
QA team use tools like Selenium to identify and fix bugs in the new piece of code.
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.
In this phase, the deployment process takes place continuously. It is performed in such a manner that any changes made at any time in the code, should not affect the functioning of high-traffic applications.
In this phase, the operation team will take care of the inappropriate system behavior or bugs that are found in production.
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.
- Developers develop the code and this source code is managed by Version Control System tools like Git etc.
- Developers send this code to the Git repository and any changes made in the code are committed to this Repository.
- Jenkins pulls this code from the repository using the Git plugin and builds it using tools like Ant or Maven.
- 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.
- Once the code is tested, Jenkins sends it for deployment on the production server (even the production server is provisioned & maintained by tools like a puppet).
- After deployment, It is continuously monitored by tools like Nagios.
- Docker containers provide the testing environment to test the build features