Loose Coupling

alt text alt text

As mentioned in the Continuous Delivery Automation Framework (CDAF) introduction, this is one of the founding principles…

  • Loose Coupling : Designed for workstation implementation first, with no tight coupling to any given automation tool-set
  • Lowest Common Denominator : Using the minimum of the tool-chain plugins & capabilities, to ensure loose coupling
  • Package Portability : Package Task execution designed for automated push / pull or manual deployment

While this approach protects the pipeline from degredation due to plugin issues, and allows the author to control behaviour, e.g. logging, retry, it is fundamentally important from an ownership, portability and reusability perspective.

Shift-Left & Failing Fast

Shift-left is the principle of bringing solution aspects closer to the developer, as the cost of failing early is exponentially less costly than failing in production. While this discipline is commonly associated with software development, it should be considered a fundamental objective for all aspects of the solution, including infrastructure and configuration management.

Consistent Ways of Working

Infrastructure, Application and Testing automation should follow the same patterns of delivery. By doing so, a full, tested, solution can be delivered repeatabily and predictably.

Contributor Ownership

By constructing and testing the automation locally, the contributor can ensure it is healthy prior to comitting to source control and executing in the pipline. The more features that are performed within the automation itself, and the less dependency on any given pipeline, reduces the friction of changing vendor should that be required or desired. See the do nothing pipeline for an elaboration on automation health.

Reusable Asset

By creating Infrastructure, Application and Testing automation output that is portable and autonomous, it can be used for not only the pipeline deployment, but for local execution, allowing the creation of production like environments at will. See the feedback loop realisation for a detailed example, based on the feedback loop approach.