Where to set up a development environment for personal projects?
June 25, 2013 11:11 AM   Subscribe

I'm working on some personal full-stack projects and trying to figure out what my options are for setting up a development environment. For work stuff, I'm used to deploying a dev environment on a machine inside the corporate firewall and then either VPNing or SSHing in to work on it remotely, but I'm not sure what the best choice is for personal projects.

So I'm looking for an environment where I can deploy everything from an app server to a webserver to a storage backend to a distributed task queue. At the moment I've got a brand-new fully-loaded Macbook Air, and while I love the portability I doubt it's going to hold up once I start trying to run everything on it. What are my options?

Right now these are the possibilities I see:

- A VPS provider. Upside: full control over my environment, probably not too ter
ribly expensive. Downside: full responsibility for my environemnt. While I can d
efinitely admin my own box if I need to, I don't *really* want to have to stay o
n top of OS-level security issues/etc.

- One of the lower-level cloud providers (e.g., EC2/S3). Downside: I'm not sure
how much it would end up costing me on a monthly basis, not sure how much of the
OS-level administration I'd have to deal with.

- A more managed cloud provider (Heroku/dotCloud/etc.). Again, not sure what the
monthly costs would be.

- A Mac Mini or similar machine sitting at home. Downside: I have broadband through Comcast and I don't think I can get a static IP, so I'd have to switch to a business plan.

Are there other options I'm not thinking of?
posted by asterix to Computers & Internet (7 answers total) 17 users marked this as a favorite
 
I've hosted stuff at home myself for a very long time - over a decade. It's my personal preference. For a year here and there I've had co-located boxes for more production-oriented stuff. It's expensive and honestly often not that much better, although that depends on the upstream quality of your internet connection - mine is pretty good.

Regarding IPs - don't let them railroad you into a business plan if you don't need it, they are often an order of magnitude more expensive. I don't have a static IP but mine hasn't changed in the last 2 or 3 years either. If your IS likely to change, you can use dynamic DNS. zoneedit.com supports this and will give you DNS for up to 5 domains for free. You need to write a little script on your end to periodically check what your IP addr is and to send an update request to zoneedit.com when it changes. If you go this route I may still have my script sitting around someplace for you to work off of.

(I've never used cloud hosting so I can't comment on that, sorry!)
posted by RustyBrooks at 11:17 AM on June 25, 2013


Set up a virtual machine using VirtualBox, running your favorite Linux distribution. It's free, and super handy since the virtual machine goes wherever your laptop goes.
posted by usonian at 11:40 AM on June 25, 2013 [1 favorite]


Why not on the machine you're developing with?
posted by rhizome at 12:21 PM on June 25, 2013


Take a look at Vagrant -- it works with virtualbox or another hypervisor to let you deploy VMs for your project locally. There really isn't a problem doing this on modern machines with more than one thread or core as long as you're not trying to do stress testing.

If you're doing full stack testing, try integrating it with Chef, Salt, Puppet, or some other environment configuration tool so that you can fire up a VM or set of VMs using vagrant, deploy your app and all it's dependencies to it, and then test it as if it was up in your production environment.
posted by SpecialK at 12:25 PM on June 25, 2013 [1 favorite]


Response by poster: As I said, I'm doubtful that running everything on my laptop (either directly in OS X or via some sort of virtualization) will work long-term; I've done it on both a Mac Pro with 8 cores and 8+ GB of RAM and a previous-generation Macbook Pro with decent but not great results, and consequently I don't know that the Air will stand up to it.

Besides, I'd really rather be able to run things on another machine so that if I do something that pegs the CPU I can keep using my laptop for other tasks.
posted by asterix at 1:04 PM on June 25, 2013


I do a lot of development on a small linux box I keep in my home office. I use dyn.com to provide a static host name for my non-static IP address. My router actually has a feature built in to ping dyn when my IP changes (which isn't often).

I don't have a lot of other people hitting my server (though I hit it with regularity from outside the house). I haven't had any problems with my ISP.

I like working this way a lot (and I've got VPS that I use for production hosting). There's nothing faster than connecting to a box in your own office (though my Linode servers are awfully snappy).
posted by jeffch at 1:39 PM on June 25, 2013


The main benefits of Vagrant:

1. repeatable, consistent infrastructure with minimal differences between production and development
2. making code edits available to the server environment without pushing commits back and forth
3. figuring out all the Virtualbox networking, CPU, disk, and other fiddly bits for you

Vagrant 1.2+ comes with a new plugin model that allows for the substitution of Virtualbox with other, potentially remote, VM systems. For example, vagrant-aws aims to allow vagrant to orchestrate EC2 VMs.
posted by pwnguin at 9:39 PM on June 25, 2013


« Older MacBook Air (2012) freezing while streaming video?   |   No-cook main dishes for summer? Newer »
This thread is closed to new comments.