DevOps is a practice of uniting people, processes and tools for rapid delivery, ensuring good quality software and integrated security practices. It is a mindset and a cultural change in the way the development and testing teams work along with the operations team collaboratively.
Many of us think, DevOps is just about tools, well that is not the case, it involves collaboration, understanding & formulating processes, preparing strategies, architecting enterprise level solutions, technical skills and much more.
Let’s see what are the People, Processes and Technology aspects.
DevOps was invented to reduce the gap between the development and the operations teams. However, with the basic foundation intact, now DevOps encompasses almost all the stakeholders. It aims to lessen the disparity between the developers, testers, operations & support teams as well as product owners, project managers et. al.
The target of imbibing DevOps culture is that the teams do not work in silos which can potentially lead to bottlenecks and slow down the pace to achieve the end goal efficiently.
The mantra for DevOps is “collaboration & communication”.
So, it is crucial that teams inculcate the attitude of partnership and work cohesively.
Apart from these various teams working together, DevOps KPIs and reports are analysed by DevOps consultants and other project stakeholders to make further improvements to the entire process.
“People” is the most important aspect of the entire DevOps culture.
The DevOps process ideation and inception should start right from the solution design and technology stack selection phase itself.
The DevOps process seamlessly amalgamates with various project management methodologies like Agile, Scrum, Kanban, Spotify, Waterfall etc.
High level process is as depicted in the figure below:
More granular process is divided into 4 main categories
1.) Continuous Integration
- SCM trigger
- Build & Dependency Resolution
- Unit Testing
- Static Code Analysis
- Upload to Binary repo
2.) Continuous Testing
- Execute Automation scripts
- Send test results as feedback
3.) Continuous Deployment/Delivery
- Fetch Binaries
- Deploy Binaries to the server
- Configuration Management & Infra provisioning
- Being ready with shippable features (At the end of each sprint/iteration, if we follow Agile)
4.) Continuous Monitoring
- Monitor application parameters
- Monitor infrastructure parameters
- Send alarms, notifications, reports etc.
- Create automated tickets for deviations
- Self-healing architectures
This is the overall DevOps process.
Technology plays a key role in automating the entire process. There are highly sophisticated software tools available to implement the DevOps processes. This automation is aimed at reducing feedback cycles, shifting left, integrated security & quality checks, minimal or no manual intervention deployments to production and other environments, infra provisioning, self-healing architectures and much more.
Few examples of some very popular tools for various phases are as below:
Version Control Systems: Git, SVN, VSTS, Mercurial etc.
CICD Orchestration: Jenkins, GoCD, TeamCity, Bitbucket Pipelines, CircleCI etc.
Binary Repos: JFrog Artifactory, Sonatype Nexus etc.
SAST & DAST Tools: Sonarqube, Fortify, Checkmarx etc.
Configuration Management Tools: Ansible, Chef, Puppet etc.
Infrastructure Automation: Terraform, Ansible etc.
Containerization: Docker, Kubernetes, OpenShift etc.
Test Automation: Selenium, Cucumber etc.
Scripting: Bash, Powershell, Python etc.
The technical landscape is vast and changes at a very rapid pace. We as DevOps professionals need to be adept with technology without losing sight of the people & processes aspects.