DevOps didn't gain much traction in the tech community until about three years ago and have several different meanings. The one I like the most is from Microsoft.
DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.
This process will eliminate the silo development/operations and will bring unity across multidisciplinary teams working together with shared practices and tools. Having this process in place will allow future expansion of systems and automated testing.
What DevOps is Not
- Not a specific piece of software
- Not a methodology
- Not a quick-fix for business challenges
- Not just a team or title
How it Helps
DevOps engineers will work with the developers and teams to ensure a successful deployment, configuration and objectives are met. DevOps will regularly meet with stakeholders and discuss the overall deployment strategies and metrics from previous runs. Practices found in DevOps organizations include the following.
Ensures work is available for the team in the form of stories, bugs, and tasks. For true Agile to work correctly, stakeholders must practice this mindset as well.
No more manual code pushes and crossing your fingers in hopes it will be successful. DevOps relies on automation to several environments (dev, test, uat, prod) while monitoring deployment metrics and possible issues before releasing in production. If configured correctly, you should never have a deployment fail to go into prod. In fact, you can even set up your database scripts to run on loaded production backups to ensure they will complete without error.
Continuous Integration (CI)
Living in the Agile world, this adoption of continuous integration principle has proven to work with both small and large teams. This principle forces developers to integrate their work frequently (agile defines them as sprints) and will expose issues quickly. "Fail fast" is a term used in this way of thinking. If you work in a waterfall approach, this just makes this area a little more difficult.
Continuous Testing (CT)
Testing is everyone's responsibility. This practice starts with developers using Test Driven Development (TDD) and writing their test cases. These tests can be automated for every build along the way, constantly testing the application. If a test fails, the build fails and will not be deployed. Another test can be put in place to ensure your application works as expected.
Continuous Delivery (CD)
Continuous Delivery is a practice that will automatically build, test and prepare for release to production when coding your changes. This practice expands on CI by deploying changes through environments after completing the build stage.
Continuous Monitoring (CM)
Telemetry to deliver application performance information, usage patterns that will aid in learning as we iterate. CM also provides real-time failures that will need to be addressed and corrected before continuing on. This process will improve stability and availability. Just like CT, the starting point is in development spotting issues before they get promoted to test.
DevOps is here to make our life easier by providing automation tools and ensuring configurations are identical through the development lifecycle. Adopting and implementing these principles now will ensure your delivery is stable and available.