← Back to Upcase

DevOps: Where/how to acquire this knowledge?

(Michael Heu) #1

Hi everyone,

Does anyone have resources that helped them move beyond Heroku deployments? As an aside, a Thoughbot trail for this would provide incredible value to developers IMO.

As someone with very limited server knowledge I am finding it very difficult to navigate through the different choices available and the criteria for selecting the “best” stack.

For example, nginx vs apache? Unicorn vs thin vs puma vs passenger vs passenger pro? Vagrant? AWS? Chef? Capistrano? Redis? Sidekiq? Resque? Delayed job? I feel like learning the right path in this area is a topic rarely covered but absolutely essential since all the code you just wrote needs to live somewhere.

Any tips, books, guides, etc would be helpful and appreciated.


  • Mike

(Michael Tener) #2

Hey Mike I had a similiar question the other day and a friend suggested I check out digital ocean because it bridges the gap between Heroku and Amazon web services. It has a pretty robust tutorial community on how to deploy different kinds of apps with some of the technologies you’ve mentioned.

If I come across any books I’ll be sure to come back and post.

(Cyle Hunter) #3

I never got into Heroku myself, as a newbie Rails developer (and a newbie develper for that matter) my very first deploy was on a Apache + Passenger stack. This was a couple of years back, but I seem to recall drinking a lot of caffeine and swearing a lot! It was an extremely valuable experience though. Before I did my first deploy, how web applications worked in a live environment was such a foreign concept for me.

A couple of months back I got my first taste of DevOps by way of Chef solo and Capistrano for automated server provisioning and deploys. I’m no expert, but I highly suggest not trying to tackle everything at once. I would first start with setting up a staging environment with your choice of infrastructure and getting an application running on that. Once you’re satisfied with the your production environment and you have a good understanding of how everything came together you can takes steps toward automating setup and deployment.

You’ll need a IaaS provider to host this on, of which there’s over 1001 different options to choose from. Personally, I recommend Digital Ocean, they seem to be cheaper than EC2 and they have plenty of documentation and a pretty solid API and they don’t screw you over for bandwidth (seriously, their cheapest instance gives you
1TB of outbound transfer for free!). Though, I advise you do some extensive research on this front first, and find a provider that best matches your needs. If you don’t really know what your needs are, you can always start with something cheap, watch your traffic for a month and scale up/down/left/right easily if you’re using something like Chef or Puppet.

As for Apache/Nginx, Unicorn vs thin vs puma vs passenger, etc. Though it’s a really cliche answer, which of these tools is best for you really depends on the job and your individual requirements. You should research all of them and find the pros/cons of each. There was a very helpful stackoverflow answer on the subject which will probably be the first thing to come up with a quick google search. If like me, you learn best by example and experiencing things firs hand then I would recommend doing your first deploy w/ Apache/Passenger, it’s probably the easiest combo to get up and running and you’ll find TONS of DIY posts online.

Personally I used this blog post when I was getting into Chef for the first time. There’s a lot of stuff in there specific to that guys application, but it should give you a solid example of getting a rails application deployed to a fresh VPS from start to finish w/ Chef + Capistrano. In fact, if you take out all the jetty/solr stuff from the equation you can more or less use the same provisioning/deploy strategy down to the tee for a solid web stack on Digital Ocean using Nginx + Unicorn.

Good luck!

(Michael Heu) #4

Thanks for the replies guys!

(Bob Firestone) #5

A good book I read is Reliably Deploying Rails Applications by Ben Dixon. It is available at https://leanpub.com/deploying_rails_applications. It builds up the entire process using chef and Capistrano to provision servers and deploy the code.

For personal projects I am too busy (and lazy) to deal with setting up, deploying and monitoring servers. So I use cloud66 to manage servers and digital ocean for hosting.

Setting up and configuring a dev environment to be disposable ie Vagrant