The fundament of an excellent solution architecture is to
understand the problem holistically. It means understanding all stakeholders’ requirements, all constraints, and formulate the essence of a system that solves the problem in total.
The solution architect must also set up a collaboration framework to consider, debate, and determine the solution concepts. Close communication with the key stakeholders is essential since agile development offers opportunities to adjust the solution.
He analyzes the risks and costs, monitors the quality, and keeps an eye on time planning and resources with the product owner or project manager.
In the beginning, the solution’s scope must be clear, which helps to focus on the essential parts and avoids spending time on unnecessary topics.
Be clear about what the solution will cover (and what’s out of scope).
The solution architect slices the problem into relevant parts to identify processes and functions and transform them into a manageable solution component model.
Simplifying and structuring is key.
An essential point of the solution architects’ work – besides the “pure translation” from functions and processes into technology – is to draw a picture of the envisioned solution, so every stakeholder understands.
The Big Picture of the solution helps to fight for the same thing.
An essential part of a solution architect’s work is to choose and evaluate the best fitting technologies the solution runs. One step here might be creating a prototype for a proof-of-concept to validate the technology regarding different aspects like performance, stability, and scalability.
Furthermore, he advises the technology stack covering the entire end-to-end perspective.
Besides, the solution architect identifies the potential cost of the environments, significantly what the monthly fee is for operating the solution after go-live.
Like a professional craftsman, the solution architect utilizes guides, tools, and best practices.
There are a lot of Architecture Design Patterns already published across the internet, covering different aspects.
Here, some examples of cloud-specific patterns (see in detail in Bill Wilder’s book “Cloud Architecture Patterns” at O’Reilly’s):
- Horizontally Scaling Compute Pattern – providing more instances of one service in parallel
- Colocate Pattern – deploying components that work together in the same region/data center
- CDN Pattern – Distribute content across the internet in regions close to the user
There are a lot more, also “traditional” patterns like:
- Client/Server – one service provides data, the other one consumes
- Microservice – a (web) service which covers the aspects of a single business domain with dedicated data storage and clearly defined interfaces
- MVC – separation of a user interface application into model, view, and controller logic
Besides the patterns, the solution architect applies solution design principles like the following:
- Scalability – a solution must be capable of (dynamically) increasing itself according to the demand (Horizontal or vertical scaling)
- Security – a solution must be secure regarding the communication between components, data in rest, accessibility of service administration, etc.
- Resiliency – a solution must be capable of being stable also at times of intensive load and can recover from exceptional states
- Fail-Over Capability – a solution must be able to continue working even if instances of components are not available
- Single Point of Failure – it must be clear which components are crucial to mitigate potential risks
- Accessibility, Availability – a solution must be deployed as close as possible to the users (low latency) and must guarantee a high up-time
Besides the functional requirements, there are several other things the solution architect is considering for the solution listed as follows (examples):
- Cost Optimization – finding the perfect mix of technologies and infrastructure to solve the problem, and to spend a minimum of money
- User Experience – supporting the UX team to find the ideal user interface, guiding users intuitively through the solution
- Quality Assurance – support with (automated) testing of the solution’s components to deliver high-quality applications
- Performance – support with load testing to ensure the expected number of concurrent users and client services
The solution architect advises the staging concept and the required technology fundament in dev, test, ref, and prod environment.
Also, supporting the introduction of continuous integration (CI) and continuous deployment (CD) might be essential.
He considers the enterprise services in the on-premise data center, mainly applications about data exchange, identity management, and handling regulatory requirements.
Besides the processes, the solution architect considers the interfaces of enterprise applications the solution needs to communicate and give advice for the integration to the development team.
All the responsibilities mentioned here are the essence of my personal experience and opinion and reflect best practice guides from other solution architects. In case you believe this article can help others sharpen their focus, or reflect themselves, feel free to share it.
Hope to see you again in the next chapter!
Photos on Unsplash