I prefer to componentise applications and allow those components to be deployed, released, and rolled back separately.
I also don't agree with the 'rollback is for losers' message as hinted at in the article.
A fast dependable rollback (measured in the seconds) is significantly preferable to getting a developer to implement a fix to some issue under pressure and push it out in a rush. Much better to roll back, take stock, then implement the right fix under the tested process.