DevOps 101
DevOps may need a little introduction these days, but many are still at a loss to explain precisely what the movement entails. Some emphasize the portmanteau of the two terms, stating that the heart of DevOps is the collaboration between developers and operations staff. Others choose to focus on the tools and the problems they solve, singing the praises of DevOps for fixing their respective infrastructure woes.
However, DevOps is not just a set of tools, it’s also a methodology used for implementing a set of principles, practices, and tools that work together to solve common problems.
The DevOps revolution has focused on addressing isolation of roles typically found in big corporations with large and often distributed IT departments; often referred to as the wall of confusion between development teams and operation teams.
A fundamental DevOps philosophy is that developers and operations staff work closely together which requires that they see one other as important stakeholders and must actively seek to work together to achieve success.
A fundamental DevOps philosophy is that developers and operations staff work closely together which requires that they see one other as important stakeholders and must actively seek to work together to achieve success.
What is DevOps
DevOps is not about using one particular tool, it is about using the right combination of tools to accelerate development and mitigate risk. The essence of creating a pipeline is breaking up a single build process in smaller steps, each having its own responsibility. In this way, faster and more specific feedback can be returned.
The toolchain, since the collection of tools supporting the DevOps practices, can be quite extensive, have become a key component of a DevOps adoption. Here is an example of areas covered by a DevOps toolchain.
- Code: Code development and review, version control tools, code merging
- Build: Continuous integration tools, build status
- Test: Test and results determine performance
- Package: Artifact repository, application pre-deployment staging
- Release: Change management, release approvals, release automation
- Configure: Infrastructure configuration and management, Infrastructure as Code tools
- Monitor: Applications performance monitoring, end-user experience
However, in the end, the specific tools don't matter as much as the toolchains evolve. The tools used today are much different than they were two years ago and will be very different in two years.
The goal is to eliminate/reduce manual error-prone tasks by automating key practices such as CI/CD, Continuous Testing, or infrastructure provisioning.