How I use DigitalOcean for work & play

• ~800 words • 4 minute read

2013-09-07-18.04.57

Last year I was introduced to DigitalOcean by a WordPress developer in Istanbul. My initial impression was that it seemed like a super-simplified version of Amazon's EC2 offerings at a ridiculously low price. Maybe even suspiciously low. Amazon offering razor-thin margins is nothing new, even if it's kinda crazy, but I'm always a little bit wary and skeptical about new companies that show up and seem content to figure out how to actually make money later.

I've been using DigitalOcean for a variety of things off-and-on since last Fall, and while I haven't yet switched over all my main sites to their servers completely (I prepaid for several years of a dedicated EC2 instance a while back which is still working fine for most my needs) I've been very pleased with it. My primary uses for the service boil down to: quickly deploying proof-of-concept apps in different languages & frameworks and creating staging sites for my clients so we can work on their new site without disrupting the old one.

Creating on-the-fly apps to test out ideas is great. Sometimes these apps are written in Rails or Sinatra, sometimes CodeIgniter or CakePHP. Lately I've been doing more with Node and ExpressJS. I suppose you could theoretically find a way to cater to all those things on a single instance but configuring that sounds like an utter nightmare. It's far easier to simply launch a $5/mo droplets (That's for the cheapest VPS with the least RAM and space, but for the purposes of testing ideas and creating staging sites this works just fine.) — "droplets" are simply the VPS instances in the DigitalOcean nomenclature, which is bordering on the unhelpfully cutesy I think sometimes — that's mostly ready to accommodate the language and framework I'm working with out of the gate.

This touches on another nice aspect of DigitalOceans: images. When you launch a new instance you can select an image to use for your VPS; basically a snapshot of a fully-functional server setup in a particular way. Out of the box they let you choose from the more popular Linux flavors:

DigitalOcean_Control_Panel

But the really cool part is the ability to choose snapshots with up-and-running instances of popular applications and software stacks:

DigitalOcean_Control_Panel

This is great for situations where I want to try-out something I've heard of but haven't had time to fully explore (Docker, GitLab and Redmine) or for when I want to get up-and-running with the latest version of something I'm already familiar with minimal hassle (Hi WordPress). What's even better is that you can create custom images from the current state of your VPS and use those to launch additional Droplets later. This is not a new concept or something I'm unable to do with EC2 by any means but they've made it much, much friendlier and simpler.

These custom images came in particularly handy for the other way I use DigitalOcean: creating staging sites for my client's projects. A large number of my projects these days are WordPress-oriented and essentially boil down to creating custom themes. I started with the default WordPress image they provide, which is fine enough, but installed git  and tweaked the hooks to auto-publish the new theme (or plugin or whatever I'm working on) in the correct place every time I push a new change to the server. This setup gives me a fast, reliable and secure way to publish updates to the project as they're made and also allows me to roll back to a previous project state without much fuss.

Combined with Tugboat — DigitalOcean's command-line tool that allows you to create, destroy and list your instances, among other useful things — I can type just a few lines into the terminal and have a new staging server ready for my client in just a few minutes:

tugboat create new-client-site -i=12345

Boom! Then I have an IP address (xxx.xxx.xxx.xxx) the client and I have can refer to as we work on the project together.

My previous workflow in this department was kind of dumb and relied on mapping subdomains to folders on my server. It worked fine but grew cluttered over time and never looked particularly professional to me existing as a subdomain off my main site.. This new approach is absolutely worth the $5/mo and is often less as the billing is actually hourly, adding up to $5 in a month.

DigitalOcean has saved me tons of time and headaches and I highly recommend giving them a try. If you found this useful and are considering it I'd appreciate if you used my referral link below to join:

https://www.digitalocean.com/?refcode=72ffe53f4fe7

I don't make any money off of it but it does offset my own bill with a $25 credit whenever a referred customer spends $25.