• Random
  • Archive
  • RSS
  • Ask me anything

Ryan Angilly

Hacking while I figure out what I want to be when I grow up.

Friday nerdery: .slugignore for Heroku deploys

Well geez, that’s nice of you, Heroku :)

    • #heroku
    • #nerdalert
  • 1 year ago
  • 13
  • Comments
  • Permalink
  • Share
    Tweet

The ‘Cache-Control’ header is your friend on Heroku

FourthSegment has a bunch of static pages that were loading too slowly. We hadn’t really put much thought into caching, so I thought I’d spend an hour speeding things up. Here’s what I came up with.

I added this method to ApplicationController to be used as a before_filter:

This tells Heroku’s Varnish layer to cache the content. The ab results testing out the homepage speak for themselves.

Before:

After:

#winning.

    • #heroku
    • #varnish
    • #caching
    • #performance
    • #web development
    • #FourthSegment
    • #http
  • 1 year ago
  • 13
  • Comments
  • Permalink
  • Share
    Tweet

My final gripe w/ Heroku has been solved: Release Management

Anyone that has maintained a “fer realz” web app knows that the release management is nothing to be taken lightly.

The common workflow for deploying goes something like this:

  1. Qualify that master is ready to be deployed
  2. Cut a release branch from master
  3. Deploy that branch to production

Days and weeks will go by, and you will continue to advance master with new feature and bug fixes.  If a critical bug is found in production, the process to fix is simple:

  1. Put the fix in master & verify
  2. Cherry pick that commit into the release branch
  3. Re-deploy release branch to production

Everybody wins.  You get to fix production without pulling your new and possibly not ready features from master into the fold.

In Heroku, you just push your git repo to their remote, and they deploy your app.  When pushing to Heroku, they will deploy whatever is on the master branch.

Sounds great, but the classic release management process breaks if you have a staging app also running on Heroku, because they both want to deploy off of master.  For example:

  1. Deploy master to production
  2. Build new features in a dev branch
  3. Merge them to master so that you can deploy to staging
  4. Find critical bug in production
  5. …?

The problem here is that master is now littered w/ the features that are on staging.  What’s a guy to do?

Well, one my favorite humans (who apparently knows git better than I do) not only figured it out, but wrapped it up in a little Rake script for all our benefit.

Michael Dwan wrote this blog almost a year ago, where he solves the problem of release management in Heroku.  At it’s core, it’s just a git trick.  Instead of:

git push staging # <— staging is your heroku staging remote

git push heroku # <— heroku is your heroku production remote

Michael figured this out:

git push staging +edge:master #<— where edge is some local branch

The +edge:master part says “Hey, staging, I’m gonna trick you into thinking that the branch called edge is really master, so use that instead.”

Now you can pick a production and a staging branch, use any other branch (including master) however you want, and not worry about being stuck in a situation where you cannot fix a critical production bug.

He wrapped all this up in a handy set of rake tasks and even put some provisions in place to prevent you from accidentally deploying the incorrect branch to production.

Brilliant.  Thanks Michael.  You rock.

    • #git
    • #heroku
    • #ruby
    • #deployment
    • #release management
    • #nerdalert
  • 1 year ago
  • 6
  • Comments
  • Permalink
  • Share
    Tweet

Heroku's new stack is a pretty big deal

Srsly.

    • #heroku
    • #nerdalert
  • 1 year ago
  • Comments
  • Permalink
  • Share
    Tweet

The new eVite is on App Engine

This is impressive.

If you think that restricted hosting environments like AppEngine and Heroku cannot handle complex, large-scale web applications, think again.

    • #app engine
    • #heroku
    • #evite
    • #web applications
    • #web
    • #dev
    • #python
  • 2 years ago
  • 3
  • Comments
  • Permalink
  • Share
    Tweet

Applying Unix process model to web apps

I’m continually impressed by people that can synthesize a problem and articulate the main points in writing.  An art I strive to master….

    • #heroku
    • #unix
    • #process model
    • #web applications
    • #process
  • 2 years ago
  • 3
  • Comments
  • Permalink
  • Share
    Tweet

Portrait/Logo

About

Hi, I'm Ryan, and I build stuff on the internet. I'm currently building stuff at Roximity.

I founded Signal Genius.

I blog about my failed startup, MessageSling, at The Day Series.

Things I used to do:

  • Built and launched FourthSegment
  • Hacked at Punchbowl.com.
  • Founded MessageSling.com.
  • Spent several years at EMC

Me, Elsewhere

  • @angilly on Twitter
  • Facebook Profile
  • angilly on Flickr
  • angilly on Foursquare
  • My Skype Info
  • ryana on github

Twitter

loading tweets…

Following

I Dig These Posts

  • Photo via tmills

    A serious bath-taking bear.

    [via]

    Photo via tmills
  • Photo via tmills

    I read this thing on Vice tonight about how girls hate girls even when they’re friends and while all things women are forever hermetically sealed...

    Photo via tmills
  • Link via graysky
    cdixon.org – chris dixon's blog / Best practices for raising a VC round

    (via Instapaper)

    Link via graysky
  • Photo via dancroak

    Puppy.

    Photo via dancroak
See more →
  • RSS
  • Random
  • Archive
  • Ask me anything
  • Mobile

Effector Theme by Carlo Franco.

Powered by Tumblr