Declarative Release
Declarative Desired State Application Release
Previous deployment examples, from a release perspective, are imperative. For example, should a solution combine changes in both front-end (React) and back-end (NodeJS), each deployment would need to be coordinated manually to perform a Release.
Based on the Autonomous Development, Authoritative Release approach, instead of each application component deploying separately, they produce a deployable asset, and the solution is released authoritatively. The Autonomous Development pipeline outputs an immutable, versioned, environment agnostic, deployable asset. For example, an image in a Container Registry, a WAR/JAR file in Nexus/Artifactory, or a versioned zip file in a generic package store (Azure DevOps, GitLab, GitHub, etc.). This approach is based on the build once, deploy many Continuous Delivery Maturity Model.
The need to deploy these components based on the declaration is the responsibliilty of the desired state engine. the following examples are covered in this section:
- helmsman : Kubernetes
- terraform : Kubernetes
- custom : Mulesoft
Autonomous Development
Imperative Image Construction
How to Helm
Declarative Desired State Container Deployment using Helm
Terraform Kubernetes
Full Stack Release using Terraform
Custom State Management
Custom Desired State Management Solution