How The jQuery Foundation Uses DigitalOcean
The jQuery Infrastructure team provides IT services to our various projects, as well as the jQuery Foundation itself.
Much of our infrastructure exists to support a couple of primary needs: the development of the projects themselves (build servers, web servers, etc) and the hosting of high-traffic public-facing websites. With so many active projects it can be a real challenge for a small, mostly volunteer team to effectively manage and support a diverse number of hosts and services. As such, we are always looking for ways to further automate and simplify our systems management procedures.
In addition to supporting dev/build servers, we also host documentation websites and custom package builders. These sites get a surprisingly high amount of traffic and lately have become real DDoS magnets, making us something of a problem-child to our hosting providers (sorry friends).
To be honest, it was probably the people. All of the DigitalOcean folks that I've spent time with have been awesome. They are real-deal open source folks and that means a lot to me.
Secondly, DigitalOcean had some cool features that really appealed to us: SSDs to keep the servers fast, and an API from which we can easily provision and manage our droplets. These two features really "make it" for us.
The Architectural Details
Our cloud usage is fairly straightforward. As mentioned previously, we have a number of servers with fairly unique roles and generally don't have a lot of redundancy. We use Debian for our distro and Puppet for configuration management, and we strive to ensure every server can be rebuilt and re-deployed quickly.
However, poop happens, and for key services it's really important that we minimize the amount of time that we are down. We have traditionally kept hot spares running and ready for provisioning, allowing us to redeploy most servers in well under an hour, even with a fair number of manual steps. We hope to reduce this time even further by leveraging snapshots and the DigitalOcean API. It would be way nicer to just run a script and be done with it.
jQuery + DigitalOcean
DigitalOcean is a fairly new hosting provider for jQuery Foundation and while some of us had personal hosting with DO, nobody had experience with "real" servers.
We are naturally inquisitive folks and curious about the service, so we took one of our smaller traffic Wordpress servers and moved it to DigitalOcean. We gave Mikeal at DO a heads-up, warning him that we were going to "bring the interwebs," but he laughed and didn't care. He said our bandwidth needs were comical and I was being a baby. He was right, there was no issue, so we moved another server and it was fine too. This meant we had another viable location for hosting our services – very cool!
Fairly recently one of our high-traffic web sites was defaced and we needed to build a replacement server. This particular host gets 10x more traffic than the two servers we already had with DO and has been entirely trouble-free. Additionally, before we had CloudFlare, this server was DDoS'd pretty hard more than once, but kept on truckin'.
Ultimately, DigitalOcean gives us more flexibility and an easy way to automate various parts of our infrastructure, helping us move forward and do more with less effort.