An Introduction to DevOps enablement technologies. This guide will provide background information and working labs on some of the most common DevOps tools in use today.
DevOps, a combination of Development and Operations, is as much a change in procedural mindset as it is a set of tools. Ultimately, running separate teams completely dedicated to operational tasks and software development is impractical when designing applications that have constantly growing scale and requirements.
DevOps methods aim to speed up the cycle from idea (e.g. new feature, fix, or improvement) to development to production deployment for end user impact. This requires open and organized communication with flexible and scalable infrastructure tools. Developers are empowered with technologies focused on automation and self service to enable quick deployments for building, testing, and releasing.
DevOps: Plan > Code > Build > Test > Release > Deploy > Operate > Monitor > Plan > ∞
This guide will largely focus on Version Control for the Code/Build phases, Infrastructure as Code for the Deploy/Operate phases, and CI/CD Automation for the entire pipeline.
Note that many of these tools are flexible and may be used in multiple phases throughout the product lifecycle.
- Code/Build: Gitlab, Gitea, Maven, Gradle
- Test: JUnit, Mockito
- Deploy/Operate: Salt, Puppet
- Monitor: Prometheus, Sensu