Design factors

Recently I have been thinking a lot about the basic process we go through when designing an infrastructure solution, the choices we make, and why we make them.

These processes may be carefully structured within well-formed and trusted architectural frameworks, or they may be the sort of inherent thoughts that whiz through your mind when someone asks for your opinion on a pressing matter.

Regardless of the depth and scope of the project in front of you, I think the design questions you ask are often the same.

I have been reading what some VMware experts (along with other non-VMware related sources) have to say to this, and have tried to collate a list for myself.  I looked to identify what it is we consider, without overloading it so it stays nibble, but documented nonetheless to clarify each step.  As I said, these are scraped and cross-referenced from many people and sources (unfortunately too many to remember now), so I make no assertion that this all came to me in a glorious epiphany.

Here is what I have come up with so far. When looking at each decision within the design, these are the factors I would like myself to think through:

  • what is the feature/component/technology and what is its place in the overarching solution
  • options within the feature – why you need to make a decision
  • assumptions
  • requirements to use it (prerequisites)
  • constraints when you do use it
  • what is considered best practice (even though it may not be the right choice in this particular circumstance)
  • impact of using (ramifications/consequence) – cost/availability/performance (including impact on other areas)
    • positive (benefits) – justified?
    • negative (drawbacks) – how to mitigate (if possible) – risks
  • impact of not using (ramifications/consequence) – cost/availability/performance (including impact on other areas)
    • positive (benefits) – justified?
    • negative (drawbacks) – how to mitigate (if possible) – risks

What do you think? These are not the pieces to create a whole design, just the considerations for each and every decision.  I’d love to hear your comments and suggestions for improving this.