On Saturday, July 14, 2012 2:53:18 PM UTC+4, Yaron Naveh wrote:
> I've been reading about the travis-ci architecture. I liked what I saw.
> I've got a couple of questions though:
> 1. When a worker thread gets a build request it creates a vm from a
> snapshot. Is this vm on the local machine? If so it would seem that the
> scalability is not elastic since a spike in the number of build requests
> would put some builds on hold rather then dynamically allocate a build
> environment on the cloud.
Correct. There are two primary reasons for this:
1. This solution was significantly easier to implement and for the first
year or so, Travis was a side project with about 3 people working on it.
2. Having control over our own hardware and colocated machines gave us
flexibility to tune certain VMs or machines to accomodate needs of larger
projects. The first precedent was Ruby on Rails. Today we also have a Maven
mirror on the local 1GB link and we will add more mirrors for cpan, pypi
and so on later this year.
The next step (a non-trivial amount of work) is to remove mapping of
machine to VM types (Ruby VM image, JVM VM image, etc). For this we will
have to completely replace VM technology we use and some automation tools
associated with it. It will likely happen in the next few months.
> 2. I read that after the build is over the vm is rolled back. I though
> that workers create a new vm from a snapshot each time, why bother rolling
> back a specific vm? are vm reused rather then regenerated form snapshots?
VMs are reused, their disk images are snapshotted and rolled back.