4 ms·
Vote: VPS/dedicated with third party email hosting Reasoning: SaaS is extremely tempting. If programming is only a hobby for you I recommend it wholeheartedly.
by Pewpewarrows 15y ago
Vote: VPS/dedicated with third party email hosting
Reasoning: SaaS is extremely tempting. If programming is only a hobby for you I recommend it wholeheartedly. But if you're serious about your app or business, learning or hiring someone for sysops/devops is really the way to go. It's cheaper, you aren't dependent on anyone, reducing your points of failure, and you learn extremely valuable skills related to server setup and maintenance.
In my (soon to be open-sourced) deployment solution that's built on Fabric and Chef, all I need is a configuration yaml file to describe my servers. I provide IP addresses, what role(s) each one serves (app, db, static, queue, etc), what kind of software for its service I want to use (db servers should all use postgres, for example), what OS to expect on each one, and what stage of deployment that server happens to be for this project (development, staging, production). Everything is completely shared-none and non-destructive, so if I happened to have 3 VPSs, each hosting some combination of several sites' app, db, and static resources, across a different OS on each, I don't do any additional work. All I type is "make deploy" after quickly writing some lines in that config file and I can sit back and relax. Servers get setup from scratch if they're new, secured, and have services like logging all ready to go.
In essence, I get the dead simple deploy of a SaaS, with the flexibility of using whatever hosting provider I feel like, using the exact stack and details I want, for the cheapest price I can find. If my Ubuntu-running Amazon data centers flooded tomorrow, I could be deploying on brand-new RHEL Linode servers with 30 seconds of yaml changes. That kind of peace of mind can't really be bought from a SaaS provider.
- commandar 15y agoDo you have a blog/Twitter/whatever you'll be announcing it on? I'd be interested in taking a look at it when you're ready to release it.
- Pewpewarrows 15y agoI'll be announcing it all over HN when it's done (likely February/March), but yes I'll also broadcast it on my twitter feed (same username as here on HN: pewpewarrows). The GitHub account that one of the other replies to my comment linked will have the project on it as well.
- _Lethe_ 15y agoI would be very interested too. I use Fabric for server deployment and have for some time wanted to build something exactly like you just described.
- adrianwaj 15y agoInteresting. Are there or were there any key articles or other resources (github projects) that helped you determine your setup? How did you learn this? Should people follow https://github.com/Pewpewarrows https://github.com/Pewpewarrows ?
- Pewpewarrows 15y agoWay too many actually. I basically scraped every single Fabric/Chef/Django-related boilerplate and skeleton project on GitHub to see what other devs were doing, and learn from their mistakes and successes. I follow Disqus' dev blogs thoroughly, as I consider them the current de-facto leader in terms of scaling and deploying giant Python applications. And yes, it'll be up on my GitHub account when it's finished, and will (hopefully) hit the frontpage of HN when it's announced.
- SLuijk 15y agoSounds very interesting. I was planning working on a similar setup. Taking and improving on the many chef cookbooks and building around that. But due to lake of resources it may not be possible. Do you need testers?
- Pewpewarrows 15y agoHah, I could always use more testers. When the project is good enough for a somewhat-stable alpha I'll let you know, thanks!
- troels 15y agoI wonder. Between Fabric and Chef, what do you feel you need to add to the mix? Provisioning of machines perhaps? Personally, we're using Puppet for server admin and some cobbled together shell scripts, for app deployment. The latter is heavily inspired by Capistrano. We have a few shell scripts for generating new manifests in Puppet. All together a not-fully-automated, but quite close solution.