0007 - Generalised principle for automation¶
Date¶
2022-11-18
Status¶
Accepted
Context¶
At many point during the development lifecycle, decisions need to be made on when to automate behaviours or to perform them manually. This occurs often in software systems where behaviour is automated through scripting. This introduces a couple of risks and benefits. Introducing automated behaviour increases the speed with which actions can be taken, but decreases the control that can be imparted on those actions.
Automation occasionally opens new avenues of risk of overwriting/destroying/changing something that is system-breaking or irreversible. For example, the automation of database deployment needs to be very careful not to overwrite existing data during a migration or to remove crucial parts of the database through unchecked/unmonitored automation of deployments.
Automation also involves expending effort up-front in order to reap benefits over the long term. Care must be taken prior to automating to ensure that it is in-fact worth the up-front effort instead of just manually performing an action once, or a small number of times.
Decision¶
To automate elements of a software system that are safe to automate and for which there will be significant time efficiencies gained in automating them.
Consequences¶
What becomes easier or more difficult to do and any risks introduced by the change that will need to be mitigated.
- The structure of whatever it is you are automating is documented implictly through the automation scripts produced.
- Large time saving measure in the long-term
- Initial time cost involved in creating automation scripts
- Consistent deployment of infrastructure/code made easier and more reproducible
- Risks introduced of removing/replacing something that is desired