Tuesday, March 8, 2011

This one goes to eleven

A client and I were recently trying to articulate best practices with respect to standardizing project structures, continuous integration methodology, environmental configurations and deployment techniques.  I wrote this short "manifesto" to describe the ideals without specifying specific technologies.  The ideals theoretically will not change even though the tools are guaranteed to evolve over time.  Perhaps techniques for achieving each ideal will be fodder for future blog posts... just in time for blogs to be out of vogue!



  1. All environments should have working instances of all applications, follow a consistent naming scheme and have similar structure. 
  2. All environments should be self contained and depend only on application instances in the same environment. 
  3. All applications should have with the same folder structure and techniques for cleaning, compiling, running, building, releasing, branching, tagging and deploying. 
  4. All application source code will live in the same version control system and follow a similar folder structure. 
  5. All applications should expose a representation of their own health and the health of their necessary dependencies. 
  6. All applications should require only a checkout and run to be successfully launched in local properties mode. 
  7. All stateless code should be unit tested thoroughly but not excessively and tests should be run automatically every commit. 
  8. All state-full code should be tested on a schedule according to established best practices. 
  9. All properties files should have a consistent naming scheme, validation mechanism, inheritance/override paradigm and version control methodology. 
  10. All persistent data stores should be refreshable to a known state and version that is enhanced as features are added. 
  11. All deployments should be centrally executed by a single continuous integration server accessible by role.

No comments:

Post a Comment