I’ve been investigating the speed of various things in the hopes of speeding up the deploying of a charm from a branch of the GUI. Here are some things I found.

Downloading the release (27M) from Launchpad via my home connection averages about 10 seconds, downloading it to an EC2 instance takes about 20 seconds.

Downloading the release from an S3 bucket via my home connection takes about 30 seconds and is pretty variable. Downloading the release from an S3 bucket to an EC2 node takes between 13 seconds and over 3 minutes (highly variable).

Running just the NPM installation portion of a GUI build with empty NPM caches takes over 4 minutes on an m1.small instance and right at 2 minutes for an m1.xlarge instance, presumably because of the faster disk performance on the xlarge. It takes 2 minutes on my connection/machine as well.

Running the NPM installs with a full cache and setting cache-min to 99999 takes just under 1 minute on an m1.small instance and averages 18 seconds on an m1.xlarge instance and locally.

All of the above data suggests that we should capture the NPM cache and pre-populate it when deploying the charm against a branch. When deploying to an m1.small instance we should save about 2 minutes and when using an m1.xlarge we can save about 3 minutes and 20 seconds over an empty cache on an m1.small instance.