Under the hood

UNiTE is fairly simple under the hood. It works by combining software component we have already written and use in our other backup–related products along with the necessary logic to put them all together.

When you tell UNiTE to take a backup of a remote site and download its backup archive to restore it we are actually reusing Akeeba Remote CLI, the command line client for the JSON API all of our software offers.

When you tell UNiTE to download a backup archive from Amazon S3 we reuse the Akeeba S3 library which is already included in our backup products. It's the same code which, for example, downloads the backup archives from S3 into your server when you use Akeeba Backup's or Akeeba Solo's Manage Backups page.

Archive extraction takes place using Akeeba Restore which is the brains of Akeeba Kickstart (in fact, Akeeba Kickstart is just a user interface around the Akeeba Restore library). This is the same code used in the integrated restoration in the Professional versions of our backup software.

Technically speaking, UNiTE does not restore the site in itself. After extracting the full site backup archive the installation folder contains a copy of ANGIE, the backup restoration script you normally use through a browser. Akeeba UNiTE simply loads the non-interface parts of ANGIE — as it's found in the extracted installation folder — and tells it to perform each restoration step. This means that we can add features to our backup software and its restoration script without necessarily having to update UNiTE to use them, hence the slower release cycle of UNiTE itself.

As for the glue code, it's primarily Joomla Framework and a few third party dependencies. While the Joomla Project is best known for its eponymous CMS, it also publishes a PHP framework — in fact, the same framework used by the Joomla CMS itself. We use a subset of the framework which is useful for creating command line PHP software. Using a technology we are already proficient with (that's what we already use for the CLI commands in Akeeba Backup for Joomla, after all!) we are saving a lot of development time and complexity.

In this light, UNiTE is mainly an orchestrator. It reads a file with instructions on how to restore a site and orchestrates Akeeba Remote CLI, the Akeeba S3 library, and ANGIE into executing the way you specified, without using a web server, to restore a site in the way you intended. Reusing the same software components allows us to have a more nimble approach to implementing new features, ensuring that any improvement made for any of our backup–related products can find its way to all of them without complicated, slow and error–prone code duplication.