Mostly harmless, conspicuously useful
The Hitchhiker's Guide to Becoming a Solutions Architect
A solutions architect translates business and technical requirements into secure, operable system designs and explicit trade-offs, which is a perfectly reasonable profession built atop an architecture diagram that survived the steering committee with the most arrows intact. You learn to translate "we need a system" into boundaries, responsibilities, quality attributes, components, integration patterns, and a decision record that preserves reasoning after the meeting's coffee has evaporated. The diagram is welcoming on the way in and commemorative on the way out, and a trade-off that sends invoices is a decision the finance team will eventually audit for the optimism with which it was drawn. "It depends" is the correct answer to most architecture questions and is also, when left unqualified, an architecture decision that defers itself until someone else has to make it. This guide travels from reading a system's requirements without flinching to setting organisation-wide architecture strategy, with practical stops at system design, decision records, distributed systems, integration, cloud architecture, security architecture, stakeholder communication, and the recurring discovery that a design marked "approved" is merely approved to be built and not yet approved to survive contact with production. The grand objective is a system that meets its quality attributes at a defensible cost; the daily evidence is usually a decision that names its trade-offs, a diagram that survives a question, and a quarterly review that fails to surprise anyone except the steering committee, who have learned not to be surprised by their lack of surprise.
Level 1 · Novice
Read the requirements before the diagram forms an opinion about them
You inspect requirements, candidate components, quality attributes, and sample designs without committing to one, learning how a perfectly polite diagram can promise scalability it has no intention of delivering before anyone has finished reading its legend.
You begin with read-only artifacts: requirements documents, quality attribute lists, candidate component descriptions, sample architecture diagrams, reference designs, and a decision log expressing recent opinions about why one option was chosen over another. Solution architecture defines system boundaries, responsibilities, constraints, and quality attributes — the non-functional promises a system makes about performance, availability, security, and cost. System design selects components and interaction patterns for scalable systems, which is a polite way of saying you choose which other people's software will fail simultaneously with yours. You review these with developers, product owners, security staff, and an experienced architect so everyone can trace how a requirement becomes a component before anyone draws a box whose label is also a purchase order.
Suppose a team wants to add a recommendation service "to the platform." In a workshop with no production access, you read the requirements, list the candidate components, compare a synchronous API to an asynchronous queue, estimate request rates, and note that a quality attribute left unspecified is a promise the system will keep by accident, often the wrong one. You record the assumptions, the latency target, and the single component whose vendor bill will exceed all others. One brisk diagram is an anecdote with good posture, not an architecture; but it prevents the team from commissioning a distributed database for a job that runs four requests a minute.
Words from the spaceship manual, translated
- Solution architecture
- The practice of defining system boundaries, responsibilities, constraints, and quality attributes for a specific solution. It turns "we need a system" into "we know what it must do, what it must not do, and what happens when it does neither."
- Quality attribute
- A non-functional requirement — performance, availability, scalability, security, cost — that a system must satisfy. A quality attribute left unspecified is a promise the system will keep by accident, and a system with no quality attributes is a system whose behaviour is a surprise to everyone, including its architects.
- System design
- The selection of components and interaction patterns for a system, so that the parts compose into a whole that meets its quality attributes. It is the art of choosing which other people's software will fail simultaneously with yours, and on what schedule.
- Component
- A discrete part of a system with a boundary, a responsibility, and an opinion about how it should be spoken to. A component whose boundary is unclear is a component that will eventually be asked to do everything and agree to most of it.
