Running MongoDB on DigitalOcean

DigitalOcean is a NY-based hosting provider specializing in SSD-based virtual machines. A majority of our customers choose to deploy and manage databases on Amazon AWS, however, running large-scale write intensive databases on AWS is a fairly difficult and time-consuming operation. If you’re interested in learning more about these issues, check out What I would like to see in EC2… We’ve been using DigitalOcean for several months now and are excited to share what we’ve learned about the system.

What do we like about DigitalOcean?

  1. SSDs are amazing

    It feels so right to run a database on SSDs. The disk throughput is great, and you can clearly see the benefits when you run an index or repair a database. This operation used to take hours on Amazon Elastic Block Store (EBS), and we can now finish in a just few minutes on DigitalOcean. If you’re currently not running your database on an SSD, you should definitely reconsider your decision.

  2. Simplicity

    The API and the UI are simple and elegant. It’s very easy to accomplish what you want with just a few clicks or a few lines of code. I hope they preserve the simplicity as they continue to add new features.

  3. Pricing

    The pricing is great – simple and low. You also don’t need to worry about on-demand vs reserved instances.

  4. Low latency from Amazon

    The latency from Amazon AWS US-East and the DigitalOcean NY datacenter is about 5-8 ms. This makes it possible for customers to continue to use AWS for their front and mid-tier, and deploy their clusters for MongoDB on DigitalOcean.

What could be improved on DigitalOcean?

  1. Availability framework

    We would love to see an availability framework similar to EC2 availability zones. Currently, when we need to be double sure of uptime, we run across different data centers NY1, NY2, SFO and Amsterdam. However, in the long run, it would be good see the ‘availability zone’ construct inside a single data center.

  2. Online snapshots

    DigitalOcean does not have online snapshots, so you have to shut down your machine for snapshots. This makes taking backups or snapshots ridiculously hard. MongoDump / MongoRestore is not really an option for large deployments. We’ve had to do a lot of engineering work, but were able to build a reliable and quick backup solution on DigitalOcean.

  3. Support for multiple disks & LVM  support

    Currently, you can only have one disk attached to your virtual machine. For high-performance clusters, we’d like to distribute different portions of the database (log, db, etc.) on different disks, and would love to see the ability to attach/detach multiple disks. LVM is also not currently supported, and it would be a great addition as it’s very useful to take snapshots of your system.

  4. Dynamic disk resizing

    If you fill up your current disk, you don’t really have many options. You need to create a new, bigger machine and migrate your data over.  In the long run, it’s vital to be able to resize your existing disk instead of needing to migrate to a new machine when you disk is full.

Overall we like the system and are rooting for them to succeed! We hope to deploy and manage many more MongoDB servers on DigitalOcean this year.

For more information on our DigitalOcean offerings, refer to our DigitalOcean page.

As always, if you have any other questions please reach out to us at [email protected]