Skip to content

Aquarium: Internal Processes

Sergei Parshev edited this page Jun 11, 2023 · 3 revisions

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:

Aquarium - Jenkins build process

  • 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:

Aquarium Fish - Distributed election process

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.

Aquarium - How cluster sync works

Clone this wiki locally