Provisioning Environments
Continuous Delivery Automation provides support for containers in the following way:
-
Containerizing application infrastructure. By providing standardized images which already contain running technology components (such as Apache Tomcat, JBoss, and so on) to your development and test teams “as needed” and “when needed”. This brings great benefits on resource utilization and standardization. Utilizing containerization at infrastructure level still requires to deploy release artifacts into a running container Environment in the same way as one would do in physical or virtualized Environments.
This approach does not "hide" your release artifacts inside containers, and keeps your artifact tracking and tracing visible. Moreover, many organizations simply do not promote containers yet into production and therefore work in a "horizontal" hybrid Environment where the lower level dev and test Environments are (partially) containerized, while the higher level QA and production Environments are still "traditional". In that case, it is much better to have a single reusable agnostic release deployment automation in place that works in both a containerized application infrastructure and in physical/virtual "server" Environments.
Note: As an example, you can use the Docker Action Pack, which is available on https://marketplace.automic.com/ to orchestrate Docker on Linux or Windows.
-
Containerizing the application components. Providing that your application architecture is enabled for containerization (for instance a cloud native architecture using a microservices concept), containerizing the various application components/services from the start and "promoting" the container from stage to stage along the pipeline (instead of deploying the release artifacts in a repeatable way) makes sense. This is accomplished by treating the Docker images and containers like artifacts, and having CDA provide the track & trace of the container through the CD pipeline.
However, not all your application components may be good candidates to be run inside containers, therefore you will need a combination of both containerized and classic / virtualized components along the Software Development LifeCycle as a hybrid approach.
What you can find in this section: