Introduction to DevOps

DevOps is not a tool or technology. DevOps is a methodology or a culture as DevOps enthusiast would say. The intention of DevOps is to remove the walls between the operations and developers and have all the people/team work together hand in hand towards the same bigger goal.

In the monolith approach before the inception on DevOps, the teams won’t communicate amongst themselves and won’t involve themselves in other teams’ work.

What I mean is, the developers would develop the code and test it locally and pass it on to the operations team to deploy it. The operations team would then deploy it on production.

If everything goes without an issue, everything is fine, however, in case operations get stuck or encounters an issue, the developers won’t feel responsible to help or fix things, as for them, it’s out of their scope of work. Likewise, if developers get stuck, the ops team is not obligated to help or resolve their issue.

This often-caused delays and issues amongst teams. The total time to market for a product would increase and having new features or bug fixes took great amount of time.

To overcome these challenges somewhere between 2008 to 2010 the culture of DevOps was introduced where the system admins (operations) and developers would agree to work together as a team. The system admins became more than just admins and started helping developers with their issues and developers started helping system admins with their issues.

With the adaption of the DevOps culture the responsibilities between teams increased the overall product development and deployment improved.

Principles of DevOps

There was still a lot of manual work happening, such as manual testing, manual deployments to various environments, manual production releases and manual monitoring post releases. All of these contributed to a longer time to market and was prone to errors.

At this point DevOps was further improved to have automation in place to test and deploy the code. It later gave birth to microservices. Many tools were integrated together to automate the end-to-end software development lifecycle (SDLC). Tools to manage and maintain the source code was integrated with tools to constantly run tests on the code when certain criteria are matched and then if all tests were successful, it would deploy the code to various platforms/environments and eventually spit out the final package to be either manually deployed to production or have it automated.

Typical CI/CD workflow

This entire process is called CI/CD (Continuous Integration; Continuous Deployment/Delivery). I will leave this topic to be discussed in detailed for another article.

Difference between Continuous Delivery and Deployment

Following are some of the common tools, out of many, used in a DevOps environment, I’ll touch each of them separately later.

  • Git, Jenkins, Cloud (AWS, GCP, Azure), Terraform, Docker, Kubernetes, Selenium, JIRA, Nagios, Grafana, Kibana, etc

Gamut of DevOps tools

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *