Cross-Functional Architecture And Tools For Cloud-Based Operating Models
Ongoing application-level deployments can be performed with the Agile Cloud Manager, regardless of whether or not the application-level deployments are part of the type of enterprise-level deployments discussed above.
The diagram entitled “Application-Level Deployments Using The Agile Cloud Manager” illustrates the scope of application-level deployments using the Agile Cloud Manager.
Applications can be modeled as Service Types that might have some dependencies in an optional shared Foundation. Therefore, the scope of an application deployment is limited to one Service Type and possibly one Foundation. Your allocation-level deployment pipelines might also operate on individual instances of a service type depending on how you structure your systems.
Nothing needs to be changed in the Agile Cloud Manager system configuration files to deploy upgrades to applications because application-level elements of an appliance are limited to one or more configuration-as-code scripts that do things like:
To deploy an upgraded application using the Agile Cloud Manager, you therefore only need to change the artifacts that get pulled in by specific pre-existing configuration-as-code scripts related to the application within the system configuration.
The relevant configuration-as-code scripts for an application deployment will be isolated to a specific Service Type and Foundation within the system configuration.
In addition, you might optionally publish a new version of the application-level configuration-as-code script and you might publish new values for some of the key/value pairs in the config.yaml which allows many teams to reuse the system templates.
The next diagram is entitled “Application-Level Deployment Examples Using The Agile Cloud Manager” and illustrates two examples of possible ways you could design application-level deployments, including Blue/Green Deployments and Canary Deployments.
These examples are intended to be starting points from which you can design your own pipelines. There are many possible ways to design allocation-level deployment pipelines to be compatible with the Agile Cloud Manager.
Each of the two starting point examples is also described in the following paragraphs.
For Blue/Green Deployments, your pipeline might include the following steps:
acm appliance oncommand.
acm appliance offon the old version only.
If you choose canary deployments, your pipeline might include:
acm foundation oncommand to update the Foundation of the relevant system to build a new image containing the new version of your app.
acm serviceInstance oncan increase or decrease the number of compute instances within a scale set if you send in different numbers as a parameter for the number of compute instances when the serviceInstance has already been created. Note that
acm serviceInstance onsimply updates an existing serviceInstance according to whatever rules are defined by the underlying basic building block.
acm serviceInstance oncommand before the new images are created by
acm foundation onto make sure that the old image is used in the scale set before the canary deployment. Then we put the second
acm serviceInstance oncommand at the end of the pipeline to bring the number of instances back to the normal level. The extra instances provide a margin of error in case the deployment identifies bugs in the application requiring rollback. Note that the number of instances might be expressed as a ratio relative to traffic because your scaling group might be configured to adapt the number of instances to the level of traffic.
Many other ways of performing application-level deployments using the Agile Cloud Manager are also possible.
The key point here is to design a process that is easy to recreate in any cloud or on-prem or at any edge.