After working on client projects for my first few months at Pivotal Labs, I was asked to work on BOSH. BOSH had been started at Google and VMware and was still actively developed at Pivotal.
I helped the BOSH team do some rewrites of parts of the codebase that were not performing well and needed to be rethought for new goals. We also worked on a bunch of new features and maintenance. We did a lot of work on our CI pipeline to keep this complex software with multiple targets stable for our users.
BOSH consists of many components, but primarily:
- a director service that coordinates actions involving the distributed systems it manages
- an agent that runs on every VM BOSH creates via its custom machine images
- a messaging system (NATS) enabling communication between all the components of the system
BOSH is written mostly in Ruby, with some components in Go. It makes use of several infrastructure services: AWS, vSphere, and OpenStack in particular.