Standby Pool
The standby pool is the ultimate way to speed up dev environment creation. It is a pool of ready-to-use dev environments pre-created from the same template. After a new dev environment is added to the pool, it acts as if a user just created it – it downloads the warm-up snapshot, starts the IDE, imports the project, and so on. As a result, when a user requests a dev environment and there is one available in the standby pool, they get a fully prepared environment with no additional waits.
Pool rotation
When you configure the standby pool, you specify the desired number of simultaneously running dev environments.
When a user takes a dev environment from the standby pool, the system creates a new one to keep the number of available dev environments at the specified value.
If a dev environment is unused for a certain period of time, CodeCanvas removes it and creates a new one based on a fresher Git commit.
If you change the dev environment template, CodeCanvas recreates all the dev environments in the standby pool to match the new template.
The standby pool uses the optimistic approach to requested dev environments – it gives an environment to a user, even if not all initializations inside the environment are complete. This way, the resulting user experience is still faster than creating a dev environment from scratch.
Post-initialization stop
The Stop dev environments after initialization option in the pool settings changes the way the standby pool works. Instead of keeping pool dev environments running, CodeCanvas will stop after their initialization (downloading the warm-up snapshot, starting the IDE, importing the project, and so on). After a user requests a dev environment, CodeCanvas will activate one of the stopped environments with all the initialization already done. This feature provides a much better startup time compared to the "cold" start and, at the same time, it is more resource-efficient than keeping all the pool dev environments running.
Personalization of pool dev environments
Dev environments in the standby pool aren't assigned to any specific user; therefore, they don't store user-specific data like personal secrets or environment variables. After a user gets a dev environment from the pool, CodeCanvas personalizes it by:
Replacing shared secrets with user-specific ones
Restarting some processes (e.g., the IDE) to apply user environment variables
Configure the standby pool
To configure warm-up, use the Startup performance | Standby pool section of a dev environment template.
Here:
Standby pool – enables the standby pool for the template.
Stop dev environments after initialization – if enabled, CodeCanvas will stop the pool dev environments right after their initialization (downloading a warm-up snapshot, starting the IDE, and so on). This saves resources at the cost of a bit longer startup time.
Size – the desired number of simultaneously running dev environments. The more dev environments you have, the better chances a user has for a fast startup. But the more dev environments you have, the more resources you need.
Cron schedule – active hours during which CodeCanvas will keep the desired number of dev environments in the standby pool. Outside these hours, CodeCanvas will keep the pool empty to save resources. It makes sense to set the cron schedule to the time when most of your team works. Use the crontab format (MIN HOUR DAY MONTH DAYOFWEEK) to specify the schedule. For example,
0 9-18 * * 1-5
means that the pool will be active from 9:00 to 18:00 on weekdays.Cron schedule timezone – the timezone for the cron schedule. The default is
GMT+1
.