Scaling

As detailed in the architecture overview Global architecture, most processes can be multiplied to handle a higher load. Only three processes cannot be multiplied in case of increased load:

  • the scheduler, which only triggers tasks on the different workers,

  • the sending and receiving process, which can be blocking in case of too substantial transfers. If they do not allow transferring data quickly enough, it is recommended to use a dedicated unidirectional transfer system with file transfer mode.

The other processes can be multiplied to handle a higher load by increasing the number of dedicated containers.

However, if many machines need to use the software repositories made available by InterDiode, it is probably simpler to use dedicated mirrors for this purpose.

  • These mirrors are specialized for this task and can more easily absorb a significant load,

  • The “transfer from the internet to the internal network” function will be more cleanly decoupled from the “internal mirror” function,

  • These mirrors can also serve as internal mirrors.

Many solutions exist for this purpose. The following list is provided for informational purposes only.

  • Pulp:

    • Docker containers

    • Debian-based (Debian, Ubuntu) distributions

    • Red Hat-based (Red Hat, CentOS) distributions

    • Ruby gem packages

    • Maven (Java and Java-like) packages

    • NPM packages

    • Python packages

    • Cargo (Rust) packages

  • Artifactory from JFrog:

    • Ansible

    • Docker containers

    • Debian-based (Debian, Ubuntu) distributions

    • Red Hat-based (Red Hat, CentOS) distributions

    • Ruby gem packages

    • Maven (Java and Java-like) packages

    • NPM packages

    • Python packages

    • PHP Composer packages,

    • Cargo (Rust) packages

    • Git (with LFS) repositories

    • Go modules

    • Helm charts

    • NuGet (.Net) packages

  • Nexus Repository from Sonatype:

    • Ansible

    • Docker containers

    • Debian-based (Debian, Ubuntu) distributions

    • Red Hat-based (Red Hat, CentOS) distributions

    • Ruby gem packages

    • Maven (Java and Java-like) packages

    • NPM packages

    • Python packages

    • PHP Composer packages,

    • Cargo (Rust) packages

    • Git (with LFS) repositories

    • Go modules

    • Helm charts

    • NuGet (.Net) packages

  • apt-mirror, debmirror, aptly for Debian/Ubuntu packages

  • Docker Distribution, Harbor or regsync for Docker containers.