Monday, December 20, 2010

Thinking About Little Home Servers

Where size=small (Mac mini) or size=zero (virtual, cloud).

Size = small

I find myself thinking about smaller servers at home now, mostly inspired by the Pogo Plug (pogoplug.com).

Smaller servers could mean the Mac Mini.  It's not the cheapest, but it's capable and brings the usual Apple Mac reliability and style (e.g., silent running).  Could I switch over to OS X-based servers rather than Linux-based?

Could I?  Should I?  Would I move completely away from Linux?  Well, since Linux is central to my work, abandoning it at home doesn't seem like a good idea.  It's also much cheaper to run and more flexible, for what that's worth.  But then tt's not clear to me that flexibility is that important lately, I find yearning for simplicity.

And can you run a OS X machine as a server?  Of course, and it's not that much different from Linux.  However, I expect that adding something is not as simple as sudo apt-get install.   Also, I'm not sure what would happen if I needed to do a wget, configure, make, make install.  You can certainly get to the point where this second case works, but how easy or hard is that?  It turns out that Apache and it's LAMP-ish friends are most important and Apache and ssh are already installed on MacOS.  Add MySQL and a little mini-server would be pretty much set.

That's what the little Pogo servers are.  I looked and you can buy generic Linux boxes with that little form factor.

The idea here is a little minimum-sized server, possibly Atom-based, with local solid-state storage for the OS (no moving disk).  You attach an external 2.5-in hard drive for large-scale moving-disk storage and plug in an ethernet cable.  I like that form factor as I gaze over a nearby set of mini-tower-sized machines.

Size = zero

Well, what about zero-sized virtual servers?  Why have home-based physical servers at all?  I could just set up one or more boxes in the cloud, something like on Amazon's EC2, and run my servers there.  Now the hardware part of the equation is cancelled out and only the essense of OS administration remains.  Storage is elastic and similarly free of hardware worries.

Okay, so it's all on >= 1 VMs.  What do I really need to run there at that point?  Half of what the home systems provide is infrastructure, but that could really be handled by the wifi router, the ISP, and the Internet in general.

Ultimately, for home, I need a few web-based services, file-sharing and data backup.  Data backup is one of the most important functions.  So, a cloud-based file-sharing and data service, say maybe Carbonite, Drop Box (yeah, I know they are different services, so maybe both) or something like Amazon S3, might be sufficient for that.

There's still a missing puzzle piece.  The cloud still doesn't support code development meaning I still need a Linux shell, emacs, Python, etc., etc., for code development.  To provide that in the cloud, at least a VM is required but it will be great when we can put all of that into a browser-based experience.  Sometime I'll have more to say on this topic.

You might ask, what happens when you lose connectivity when your ISP fails?  That is a key concern.  Generally everything stops anyway.

That brings us to the point where everything is in the cloud and there are no servers with administration worries.  It also brings me back to the same three questions:  Could I?  Should I? Would I?  

It's a thought.