Friday, December 12, 2008

Softer part of Software Architecture

Or the harder part the way you look at it. Almost 90% of applications does the following in some form or the other.

  1. Bring message (data) from one system to another.
  2. Transform the data in a form that your system recognizes.
  3. Process the data
  4. Making it available for reference
  5. Send it to another system
  6. Archive it
Critical things to consider:
  • How many components do we introduce between each of these steps?
  • How much latency does each component introduce?
  • How many jars/libraries would you need to get this system to work?
  • Can I upgrade one layer without affecting others?
  • How many systems do you need to configure?
  • If one system is unavailable can others survive?
  • How platform independent is one system from another?
  • Can we have single script/single click deployment process?
  • How many people would you need and of what different skill set?

No comments: