- A Good Design is a balance of Technical Best Practices and the organization’s goals, requirements and constraints. Now since this is a balance, there has to be a trade-off somewhere. As a good designer, you need to ensure that your design is meeting the customer’s requirements(which is the End Goal) along with the constraints despite the trade-off’s.
- Never forget the End Goal, they guide and shape your design process.
The Design decisions have to be documented clearly and should definitely contain a reason as to why the decision was made and also should help answer if the decision is questioned.
- The design document should be as detailed as possible. The best test would be two different people reading the document and implementing the design and the end result should be the same.
- It is highly important to have the right stakeholders who know the Organization’s Business Requirements and Goals as this is the Objective which your design should meet.
- Follow the KISS Principle, Simple designs are easy to understand and deploy. Apart from being Simple, the design needs to be repeatable too, because the decisions made in the design are supposed to be based on sound justification.
- Always make sure that your design is valid for 2-3 years to come atleast.
Okay so with this information, you are good to create a Conceptual Design which should encompass all the customer requirements. This is the interim design to make sure you dont miss out on anything which the Organization is expecting. This is typically a diagram depicting customer requirements with the entities who would come into play when the design is initiated.
Develop and/or adopt a design framework that is repeatable,reasonable and justifiable. The objective of a frame work is to help you get the required information needed for the design. Make sure you discuss this frame work with the key stakeholders at the customer’s organization as well as your peers. This will only help to make it better. After all a good design is also something which is always evolving.
From a VMware Datacenter Virtualization Standpoint, I would stick to the AMPRSSC framework which I have been using for a while now:
A – Availability – Think SLAs.
M – Manageability – Think about how simple is it,How easy it is to deploy
P -Performance – Think about throughput, latency, I/O per second
R – Recoverability – Think RTO and RPO
S – Scalability – Think, if we need to upscale, do we scale-out or scale-in?
S – Security – Think how easy it is to secure the environment, Does it help in minimizing risks?
C – Cost – Are you meeting the company requirements while staying within the budget?
These are the areas which I would use as a scale to judge and take a sound design decision and thereby making a Good Design.
So along with the Conceptual Design, we churn them with the AMPRSSC frame work and devise a Logical Design. Bear in mind that Logical Design is to help understand the design rather than getting into the nitty gritty of how various elements have been connected or plugged in. It shows the customer how will you be able to meet the desired requirements.
The Conceptual Design is then brainstormed along with the customer as well as your peers to make it better and then you head to creating a Physical Design in which you show precise implementation details such as the Path Selection Policy, the IP Addresses, port numbers,etc.
So the capture of requirements, constraints and assumptions, followed by creating a Conceptual Design and then a Logical Design and eventually a Physical design is added along with the Design Decisions made in a Design Document.
Apart from the Design Document, it is pertinent that we create an Installation and Configuration Document based out on the Design document created,so that Implementation Engineers can just take the Install,Config Document and start building the required infrastructure which should precisely meet the customer’s requirement.