Solution Architecture is formulaic. It is an equation with inputs and outputs which are dependent on each other throughout the process. Quality solution architecture is following this process consistently while applying best practices throughout to ensure the solution meets and exceeds a client’s expectations. In this blog entry, I will provide an overview of a solution architecture process as well as the information to capture at each step to create a viable solution.
Throughout the entire process, I find this to be the most important step overall. It is the genesis of the idea and solution as well as the beginning of the engagement with our clients. The consultation is important because it lays the foundation, on top of which the solution will be developed. If the foundation is incomplete or inaccurate, the entire solution runs at risk of being unsuccessful. I’m sure many people have seen the comic below in one form or another but unless you take the time to fully engage up front and spend the time required to develop the design, the engagement could look like this:
As part of the consultation, the most important thing you can do is listen. Put yourself in their shoes and try to understand their specific situation and challenges. Don’t just wait for your turn to talk in the discussion, but truly emphasize with the client. Only then can you fully help them design a quality solution.
Important information to collect during the consultation process is the following:
- Requirements (Business + Technical)
- Constraints (Non-Functional Requirements)
With this information in hand, you can develop a conceptual model for the solution. It is important to note that product is not introduced into the solution design yet. We are simply capturing how the solution must work and specifically what it will solve so we can document it and incorporate a design to facilitate it.
With all solution architecture, assessing and understanding the existing environment is an important step especially if some components will be re-used or integrated with the new design. These assessments can be formal in nature or as informal as a walk-through or configuration file depending on the engagement. Specific information must be captured though to properly size a solution such as performance, capacity, security and management. Make sure you uncover all the integration points for the solution and document them as they will need to be captured in the design.
Important information to collect during the assessment process is the following:
- Existing infrastructure components
- Metrics of the environment
- Solution integration points
- Existing support contracts and licensing
The design process brings the previous two steps together and assembles them into a solution with traceability incorporating data from the assessment. For example, if during the consultation phase, the client wishes to ensure there is 20% capacity growth factored into the new design, the architect would leverage the required capacity information captured during the assessment and add in 20% more for the new solution capacity. Just like in school when the math professor would not give you credit for getting the right answer without showing your work, the same hold true here. The key is to show your math and what requirement it traces back to overall in the design. There are two fundamental designs you are assembling; the logical design and the physical design.
- The logical design assembles the moving pieces required to facilitate the solution and incorporates sizing. For example, from above, the 20% capacity growth factor would be determined to be satisfied with storage providing x amount of storage. The logical design must have full traceability to the original consultation mapping requirements, constraints and assumptions throughout. Note that the vendor or product is still not part of the logical design, but the capabilities of the infrastructure are.
- The physical design satisfies the logical design with actual vendor and product architecture. The physical design will have the parts, configuration and integration of these components for the solution which maps to the requirements, constraints, and assumptions from the original consult. It is important to separate the logical and physical designs to avoid vendor and product pre-selection as well as cost containment.
There they are, three steps which help ensure a quality solution is designed and delivered which meet and exceed client expectations. I say exceed as many designs do not follow a process such as this which injects risk throughout that often leads to design and client satisfaction issues. While I realize this process is very abbreviated, it should help at a high-level provide an understanding of how to approach solution architecture as well as understand some of the moving components. For those who are interested in learning these concepts in greater detail, I recommend the following books: