If you are reading this article, I am sure this question has already popped up in your mind. You would have wondered what is this DevOps that everyone is talking about? How does it affect things? And should you really explore this? In this article, I try to answer most of the doubts or questions I often get asked about DevOps.
I am sure, you would have read this somewhere: DevOps is not a tool but a mindset. It is a way of doing things and ensuring it helps you get things in a more efficient way. DevOps is just a way to do smarter things in Software Development. But that doesn’t mean only developers need to explore this.
DevOps, as the name suggests, it brings together a combination of software development and operations. You don’t really need to know coding to be a successful DevOps engineer, yes some sort of scripting will definitely help you automate things. But every team has its role in the DevOps lifecycle, be it Developer, QA, or Operations.
DevOps is a set of practices that help to reach the goal of this movement: reducing the time between the ideation phase of a product and its release in production to the end-user or whomever it could be an internal team or customer.
DevOps mindset or culture is about shrinking the long, drawn-out software release process from potentially years to being able to drop smaller releases more frequently. The other key fundamental point to understand here is the responsibility of a DevOps engineer is to break down silos between the teams: Developers, Operations and QA.
There are multiple tools that would eventually help you achieve this but to make this as effective and efficient as possible we must leverage Automation.
From a DevOps perspective, Development, Testing and Deployment all land with the DevOps team.
Why is this so popular?
DevOps tries to address the fundamental problem that used to exist. Developers (Dev) and Operations (Ops) teams used to work in silos eventually making the software development life cycle more complex. Which would eventually make it hard to track the responsibility and find the root cause extremely difficult because of the blame game between the teams for bottlenecks, delayed deadlines, or shortcomings in the quality of the product.
DevOps helps fix this broken system by ensuring the Development and Operations team work together instead of working in a silo. It also aims at automating the most common tasks to avoid human error and repetitive tasks.
Most common DevOps toolkit?
- Work Tracking: Asana, Monday, Jira, Azure DevOps
- Source code control: Git, Github, GitLab, BitBucket, TFS, Azure DevOps
- CI/CD: Jenkins, Team City, Github Actions, Azure DevOps
- Source Code Analysis: SonarQube
- Artifact management: Artifactory, Docker Container Register, Azure DevOps artifacts
- Configuration Management: Terraform, Ansible, PowerShell/DSC, Puppet, and Chef
- Container orchestration: Docker, Kubernetes
- Monitoring: Prometheus, Grafana, DataDog
- To enhance automation tools further, virtual infrastructures allow organizations to configure a server in an automated fashion. Amazon Web Services and Microsoft Azure are examples of virtual infrastructures.
- Automation: PowerShell, Python, Bash
- Infrastructure as Code: Terraform, Bicep, ARM, Cloudformation
DevOps common myths debunked:
1: DevOps and CI/CD are the same:
Most people confuse CI/CD with DevOps. Yes, CI/CD is a part of DevOps best practices. CI/CD definitely helps improve the release process and make it more efficient and productive. But DevOps is the mindset that would ensure this process is successful. DevOps is much more than any tool or process.
2. DevOps is all about a lot of tools:
No, it isn’t about the tools. It is a culture that helps you make overall implementation and process more efficient. And as part of this process, you will have to deal with a lot of tools.
3. After implementing DevOps, we are done:
As you would have understood so far, this is a mindset that means will keep improving and evolving continuously. Along with continuous integration and deployment. We should also focus on continuous improvement. This will ensure we learn from our failures and always try to improve.
4. Automation is the solution to all the problems:
Automation helps improve the process, and reduce human efforts but that doesn’t mean it removes all the bottlenecks. As part of the automation, you can automate development, testing, and implementation using CI/CD. But you will definitely hit some of the blockers which need to be improved over time. This is why the teams need to work in conjunction rather than working in silos.
5. DevOps is the solution to all the problems:
It is a common misconception that when you use DevOps to build continuous delivery pipelines and automate processes, the system will take care of everything without any issues. Unless you have the correct DevOps mindset inculcated you won’t be able to plan a good DevOps strategy. Yes, DevOps can help solve a lot of problems with the right tools for the right processes that are managed by the right people. Additionally, we continuously need to improve using the feedbacks and metrics. DevOps is not a magic wand that automatically sets everything right.
6. DevOps is only for Developers and Operations Teams
Yes, DevOps stands for Development and Operations. While it started off as a system that integrated these two teams to collaboratively work on a software development project, it has greatly evolved now. Today, DevOps cross-functional teams include people from QA, security, administrators, data engineers, analytics engineers, and business management.
7. DevOps means Cloud deployments.
When we talk about DevOps, Cloud is the other word that is thrown along with it. And this is also a myth that DevOps is always deployed in the cloud. DevOps indeed brings dynamic infrastructure resources into the picture. However, it doesn’t mean that DevOps always requires a cloud infrastructure. If you can dynamically test and deploy code, then DevOps works for you.
8. DevOps is Agile:
People often confuse DevOps with Agile. Since DevOps is all about continuous deployment, implementation and improvement, it definitely helps you to implement agile practices as part of your process.