Introduction
I've been exploring the field of DevOps for a while now and I've observed that the majority of the videos and blogs out there are not able to define what actually is DevOps in a proper way. Even after watching Tens of videos and reading several blogs, one is left confused about what DevOps actually is.
In this blog, I'll explain "What Actually is DevOps" in a simple manner while still keeping things detailed enough. (ps. I won't be talking about all those tools and DevOps concepts and making things even more complicated for you)
In simple terms, DevOps is about speeding up the Software Development Life Cycle(SDLC) and delivering the software quickly.
Although the most known definition out there is (don't read it for now)-
"DevOps is a set of cultural philosophies, practices, and tools aimed at enhancing collaboration and communication between development (Dev) and operations (Ops) teams throughout the software development life cycle (SDLC). It emphasizes the automation of processes, continuous integration, continuous delivery, and continuous deployment to accelerate the development, testing, and release of software applications. The ultimate goal of DevOps is to enable organizations to deliver high-quality software products more rapidly, reliably, and efficiently."
(You don't have to care much about it right now, stick with the simple explanation. I'll explain it later in the blog)
It's Simple
That's it. That's all DevOps is about!!
Here's an example - Let's say there's an organization that has a product. As time passes by, a new update is made to the product. Now to get this update to the end users it takes about a week or 10 days.
This is bad.
By adopting DevOps practices and certain tools you can speed up this process to a day, a few hours, or even a few minutes. (which is how it should be!)
But,
What do you mean by speeding up the SDLC, and delivering the software quickly?
To better understand this we first need to understand "What Actually Is SDLC?". Only after understanding SDLC, we can understand how DevOps can come into the picture and speed it up!
So, What Actually is SDLC?
It stands for Software Development Life Cycle. Simply, it's a structured way to create and work on software. Generally, it has the following phases - Plan, Design, Build, Test, Deploy, and Maintain the software. (Give this a watch if you want to understand it in a bit more detail (LINK) )
Usually, the focus of a DevOps Engineer is on these phases - Build, Test, Deploy, and Maintain.
Now without getting into much technicalities of these phases, I want you to understand these phases are just what they sound to you. The goal of a DevOps Engineer is to streamline and automate them.
This is DevOps.
Understanding DevOps
But, How? How streamlining and automating is done via DevOps?
Remember this definition from above, that I strikethrough so that you don't focus much on it?
"DevOps is a set of cultural philosophies, practices, and tools aimed at enhancing collaboration and communication between development (Dev) and operations (Ops) teams throughout the software development life cycle (SDLC). It emphasizes the automation of processes, continuous integration, continuous delivery, and continuous deployment to accelerate the development, testing, and release of software applications. The ultimate goal of DevOps is to enable organizations to deliver high-quality software products more rapidly, reliably, and efficiently."
Now that you have some idea about DevOps and you understand "What Actually is SLDC", let's understand this definition by breaking it apart.
(Here comes the juicy part!!)
Cultural Philosophies: DevOps is not just about fancy tools and rules. It's actually a big change in how software teams work together. The idea is to break the barriers that separate development and operations teams, and instead, create a culture of trust, and open communication. With a shared goal of delivering software faster and better! It's all about being more efficient and getting things done in a smarter way.
Practices: DevOps involves a set of practices that support the cultural philosophies mentioned earlier. Some key practices include:
Continuous Integration (CI): Developers frequently integrate their code changes into a shared repository, where automated builds and tests are triggered to identify and resolve integration issues early.
Continuous Delivery (CD): Automated deployment pipelines ensure that code changes are automatically tested, validated, and made ready for production deployment. This enables faster and more reliable software releases.
Continuous Deployment: With this practice, code changes that pass all tests are automatically deployed to production environments without manual intervention, making the release process even more streamlined and automated.
Tools: DevOps utilizes a variety of tools and technologies to enable automation and collaboration. These tools facilitate continuous integration, continuous delivery, monitoring, and various other aspects of the software development lifecycle. Some popular DevOps tools include:
Version Control Systems (e.g., Git): For code collaboration and management.
Build Automation Tools (e.g., Jenkins, CircleCI): To automate the building and testing of software.
Configuration Management Tools (e.g., Ansible, Puppet, Chef): For automating the setup and configuration of infrastructure.
Containerization Tools (e.g., Docker, Kubernetes): To create and manage isolated environments for applications.
Monitoring and Logging Tools (e.g., Grafana, Prometheus, ELK Stack): For tracking application performance and detecting issues.
Software Development Life Cycle (SDLC): DevOps emphasizes collaboration and communication throughout the entire software development life cycle. It means that developers and operations teams are involved from the early stages of planning and design to development, testing, deployment, and ongoing maintenance. By integrating DevOps practices and tools into every phase of the SDLC, organizations can ensure that the software development process is smooth, iterative, and capable of rapidly responding to changing requirements.
The Ultimate Goal: The ultimate goal of DevOps is to enable organizations to deliver high-quality software products more rapidly, reliably, and efficiently. By adopting a DevOps approach, companies can significantly reduce the time it takes to develop, test, and release software, leading to faster innovation, quicker time-to-market, and improved customer satisfaction.
I guess now the above definition of DevOps will make sense for you, why DevOps is called the combination of philosophies, practices, and tools.
We've reached the end of this blog, but before leaving I'd like to answer some of the most asked newbie questions I've seen around DevOps.
QnA Time!!
Que - Do I need to know Development in order to do DevOps?
Ans - It's not an absolute requirement but it sure is beneficial. As we discussed above DevOps is all about dealing with SDLC, so when dealing with it you should be well aware of how things are working.
personal opinion: You should know development if you want to become an absolute "GigaChad" of a guy in your team. ๐ฟ
Que - Why is it so difficult to find entry-level opportunities in DevOps?
Ans - The thing is DevOps is a role that combines various roles and responsibilities together and thus seen as more of a senior role. Most people transition from other roles to DevOps. Like, from Dev to DevOps or from SysAdmin to DevOps.
personal opinion: Now don't let this get you down, getting into DevOps is just like getting into any other role. You just need to figure out - "What you need to learn and be consistent".
Que - How can I start learning about DevOps?
Ans - While there's no absolute path, here are two videos that I've found pretty useful after consuming several months of content around DevOps.
Video 1: DevOps Tools Explained | KodeKloud
Video 2: DevOps Roadmap | Kubesimplify
personal opinion: Don't take in these videos as is or as your only guide to follow and understand things. Be open to learn from multiple resources. Also, make sure to understand the basics properly before jumping onto new tools every now and then.
I don't think anyone wants a DevOps engineer who just mentions buzz words from k8s/docker/containers but can't even ssh into a server or connect to a tmux session.
The End
That's it for this blog. I hope you were able to understand "What Actually is DevOps". If you're still a bit blurry about it, you can reach out to me on Twitter. If I'm inactive there, my bad I'm sorry ๐. I'm sure you can find more links on my Twitter profile to reach out to me!!
Thanks for reading. ; )