Aquarium: Internal Processes - adobe/aquarium-fish GitHub Wiki
The Aquarium cluster have a hidden gem - it's the internal processes which are executed on the background and hidden from eyes.
Overall allocation/deallocation process
Let's check how Jenkins server requesting the Resource from cluster to execute workload on it and destroy afterwards:
img/Aquarium-jenkins_build_process.svg
- xcode12.2 - is the created label that uses macos1015-xcode122-ci image from Aquarium Bait packer specification packer/macos1015/xcode122/ci.yml.
- Application - request to the cluster to allocate a resource with specifications stored in required label. It also contains additional metadata that can be used by the Resource.
- Driver - specified in Label and could implement any way to get the required Resource - for example can be a VM, Docker container, Cloud VM or even the hardware machine itself (to run the UI tests for example).
Worker election process
The election process is a part of the distributed Aquarium Fish system, which provides resilient method to choose the workload executor:
img/Aquarium_Fish-distributed_election_process.svg
Cluster sync process
Overall the cluster was designed to be as simple as possible - and thanks to database architecture it's way simpler then the analogues. The main complexity is hidden in p2p mechanisms, but overall it could be understood from one read.