The phrase “head in the clouds” describes a person who is dreaming and not focused on practical activities. But for software development where CI/CD activities run in the cloud, it is important to “get your head in the cloud.”
Develop, Distribute and Deploy
The cloud is generally used for one of three activities:
- Development: The development workflow includes verification testing and build activities.
- Distributed execution: In this case, the product runs in the cloud for faster execution
- Deployment: Both the release of software and the collection of data from the field for further updates.
In today’s post we are going to focus on what makes cloud based development different from local, e.g. “desktop” based development.
Massively parallelized development
Deployment of development activities to the cloud means that the testing and code generation tasks are executed in parallel.
- Determine task dependencies: The minority of CI tasks have dependencies. However for those that do, it is important they execute in the same thread.
- Determine halting conditions: The greater resources of cloud-based systems often leads people to ignore “halting” conditions resulting in wasted execution cycles. The sooner an invalid CI activity is halted the sooner the root cause issue can be addressed.
- Group by common setup: Some CI activities have expensive setup activities. These tasks should be grouped together.
Reporting and logging
When running in the cloud versus on desktop the reporting and data logging becomes critical. In most cases cloud based runs execute in virtual machines and when the task is done the VM no longer exists. Because of this, diagnostic messages and data logs are critical for debugging issues in the results.