Put simply the concept of DevOps are focused around bridging the gap between developer teams and the operations teams. The push is behind DevOps is to attempt to close the amount of time between coding and deployment. It can be seen as an attempt to take all of the momentum build by using agile methodologies and carry them over to the operations teams that are responsible for maintaining the production environment.
Basically the idea is to reduce the surface and period of time between coding and production, by putting structures and techniques in place to enable them. Teams utilizing the mentality behind dev ops are often marked by the use of automated deployment, automated testing and gating processes. There is also a significant investment in the production infrastructure to help with the collection of information to assist in troubleshooting bugs.
Putting all of this together we see that it’s not uncommon for the ideal team to have a system in place to allow the following scenario:
A developer receives a feature that needs to be coded.
A developer codes that feature, including unit tests and functionality tests.
The code is then checked in to source control
The build server picks up that change compiles it runs all of the tests in the solutions. If the tests do not pass a work item is created and passed to the user, or the check in is denied (depending on whether or not you are using gated check-ins). If the tests pass it is then packaged and sent to the deployment repository.
The automated deployment server finds that there is a new package and pushes it out to the development environment where all of the ui tests are run. It is also possible to run and control metrics of load tests if theses tests fail the build is marked as bad and pushed back to the developer. If the build is good it’s passed and is then automatically pushed to a test environment and a task item is created for the test team.
The test team looks at the functionality and give it a pass or fail. If it’s a pass then the goal is to push it to the next environment… and so on until its scheduled and deployed to production using the same tools that were designed to push it to the other environments.
In most traditional development shops this process can take months or at very least weeks. The goals and techniques utilized by DevOps are designed to move those times closer to hours than months.