Victus Spiritus


Some apps must die, so that others may live

13 Mar 2011

Do you like weekend web hacking projects? If like myself, you share a fondness for mid afternoon mini apps that automate and filter away some nagging pain point, you'll grow a backlog of tools rather quickly. The more apps you code, the greater the chance that one or more of them will fail due to any number of issues. Beyond failure, the apps may greatly benefit from changes to their architecture.

The following list details a number of reasons why apps may fail or deserve some refreshing, refactoring, or rearchitecting.

  1. Deployment/Hosting: Are appengine jvm issues intolerable for your ruby apps, consider Heroku. Who has better deals and service slicehost, Engineyard or Rackspace? Amazon's Elastic Beanstalk is flexible but requires war file app deployment. Perhaps a host setting changed, or a new release is out
  2. APIs are moving targets. Versions, deprecation and no longer supported happen fast on the wild web
  3. Language or DSL updates: You're running 1.0.1 but you want to add or refactor a sweet feature from 1.1
  4. Framework updates: the framework you built 3 of your favorite hacks in has upgraded 63 times since you last revisited it. Do you make the plunge and adopt all the bug fixes and speedups (or slowdowns) into your apps. This alone tempts me to consider rolling my own code even when other tools exist, just to avoid incompatibility issues down the road
  5. Server replacement: Your models and database are spot on but your server always felt like bolt on asynchronous (event machine/tornado), should you make the switch to node.js
  6. Front end replacement: You built up your front end with MOO tools but want to swap to jQuery. Your templating engine is slow and painful, gut it and replace it with one of a million others.
  7. Database upgrades or Replacement: Should you update your query language or data layer to a faster more capable backend? What about swapping out the database for a completely different persistence layer that may be a better fit (flavors of nosql vs SQL)

As you can see there are plenty of reasons why your apps may fail or deserve an overhaul. But the decision to maintain many apps is not to be taken lightly. Each weekend+ hack you choose to upkeep will take a toll on your ability to construct new applications. In a shiny world of rainbows and unicorns (creepy) maintenance would be free, but you and I don't live there. Some apps must die, so that others may live.