Continuous deployment and DevOps can be confusing concepts for software development teams that are new to Agile development techniques and automated testing. In this video, Patricia Bogoevici shares the benefit of her experiences with DevOps. She explains how DevOps and continuous deployment fit together and gives some great advice on how to get started.
Patricia Bogoevici: Looking at Agile development, continuous integration, and continuous deployment, I would say all these things are really part of one movement – the DevOps movement. To add a little structure here, I'd like to start at the core, which is the development team and the scrum process. They are working in sprints, or a time-box, to develop the code and make sure that at the end of each sprint there is a completed iteration with production ready code.
That means you need to have continuous integration set up for the development team so that every code commit triggers a build process. That will ensure that the unit test and regression tests are run, validate the code is fully functional, and email the entire team if the code is not working. So that is the first step that a development team needs to have.
When we look at continuous deployment, the next step there is to take the development code that is done by the developers and deploy that to a testing environment so that a tester or UAT can validate that code. That's the deployment. You take the code that is validated and deploy to test in this case.
Now, when you look at DevOps, what it does is basically to extend the continuous deployment to all the environments. We know it's not just development and testing environments. You also have performance testing, integration testing, and ultimately production deployment. DevOps encompasses everything, from the initial development of the new features, plus continuous integration and automated testing, to actually deploying the code to different environments based on the feature lifecycle.
There are multiple aspects here, when you look at continuous deployment. I already mentioned development and testing, but you also have to keep in mind the infrastructure and providing environments on demand. This is actually the newest thing that everyone is going to hear at Red Hat Summit about Open Shift 3. Open Shift 3 is the next step, leading edge in what it means to create infrastructure and environment provisioning on demand.
Let me walk you through a use case. Basically, if I am a developer, I can produce my code and it's going to trigger continuous integration to validate that everything is working and then it's going to deploy to the test environment. But what does it mean to deploy to the test environment? Ideally, you would have infrastructure as a service and platform as a service that would be configured on demand and based on the configurations that have been set up for the project. It will automatically provision the test environment, it will run all the integration testing, and if everything goes well, it will basically push back the feature as tested to the next environment and we will basically pull down the testing environment that was provisioned, so that you don't keep environments just sitting there when you don't need them.