DevOps is a mindset, methodology, process, and set of practices. It is a collaboration between a Developer and Operations team involved in building, deploying, operating, and maintaining applications. It blends lean thinking with agile philosophy.
Let's understand how DevOps has evolved over the years and why companies are focusing on implementing DevOps culture in today's world. Back in 2008, the initiator of DevOps Patrick Debois, presentation on 10+ deploys per day: Dev and Ops Cooperation at Flickr helped in bringing out the ideas for DevOps and resolve the conflict of "It's not my code, it's your machines".Most of the development teams used the Waterfall model to develop the code which is time-consuming because of the larger size of the team and delays the process of deploying the code in production. To overcome this issue dedicated teams, smaller batch sizes, and automated processes helped in reducing the delivery time of the code in a production environment. Codes that were large and bundled for the production release were jammed resulting in lower productivity. Reduction in code size delivery helped the teams to increase their productivity. Software tools version incompatibility, licensing, system configurations, scaling, maintenance, and upgrades are taken care of by the DevOps team for smooth delivery of the code in the production environment hence reducing the chances for application failure. As a result, an organization can focus more on its goals.
Best Practices/Principles of DevOps
Continuous Improvement / End to end responsibility
Automate Everything you can
Customer Centric action
Cross-Functional autonomous teams
Security should be built into continuous integration and deployment processes during the migration to a cloud-based platform
Proper Devops tools selection
Service and Resource Governance
DevOps Tools
To implement DevOps and work within the DevOps setup, various tools are required. The selection of the tools is an integral part of an organization as it should be implemented based on the needs and objectives of the company. The below image describes well the tools that are used in DevOps.
Code: Git, JIRA, Confluence.
Build: Maven, Gradle
Test: Junit, Cucumber, Selenium
Release: Jenkins, Codeship
Deploy: Docker, AWS
Operate: Kubernetes, Ansible, Chef
Monitor: Splunk, Datadog,Grafana,Nagios,New relic