One of the key aspects of developing an architecture that an architect must be concerned about, is the attributes or the characteristics that construct a technology solution architecture.
Technically there are 10s of architecture attributes that an architect can take into considerations when architecting a network, cloud or any technology solution architecture such as; availability, scalability, maintainability, modularity, security, simplicity, interoperability, testability, flexibility etc.
As an architect you must decide which attribute(s) need to be considered based on the analysis and engagement with the business and the different stakeholders, and typically identifying which attribute(s) should be considered in the architecture, almost always comes from the business, during the initial meetings, therefore, listening to the business stakeholders while identifying the problem, direction and objectives is key to build a viable solution architecture.
Practically, the ability to interpret the business needs or objectives into architecture attributes is like an art, because sometimes it is debatable and open to be interpreted in different ways. Also, it depends on the architect’s level of understanding to the architecture attributes themselves.
For example, during an architect meeting with a CIO of a customer, the CIO stated that: “our organization business nature is becoming very dynamic to cope with the market changes and digital disruption”.
So by analyzing the above statement from the CIO, even though it might look generic, as an architect you are the person who’s responsible for analyzing the business’s problems, objectives etc. as well as analyzing and recommending technology solution (the man in the middle between business and technology).
The CIO mentioned that the, “business nature is becoming very dynamic” what does this imply?
It means the business is constantly changing. Does it imply anything?
This can translate to faster time to market is required, as the business change. This means as an architect you need to think of an architecture attribute or attributes that enable or support this organization objective or new business nature.
Which architecture attribute(s) should be considered in this case?
Logically, the architecture should be flexible or fast enough to response to business change so here we can consider architecture flexibility and agility are the key architecture attributes. However, as an architect if you take the analysis a bit deeper, you will find that by having a modular architecture, you will be able to promote flexibility, and agility, in which we can have an attribute to enable or support other architecture attributes.
Furthermore, as an architect, you should extend your vision to cover the entire lifecycle of the project or architecture ability to respond to changes. By doing so, you will start thinking of how fast this architecture or solution can be deployed and tested, when there is a change required. In which you may consider deploy-ability and test-ability as additional architecture attributes in this case. Because, if the goal to have fast responding architecture to business changes and provide faster time to market, the delay of deployment or testing of any change may eliminate the value of its flexibility and modularity to be a fast responding architecture.
With this simple example, we were able to identify the suitable architecture attributes based on a business statement describing the business nature and direction.
Let’s look into another example, where the business stated that “to meet our key business objectives, the proposed solution must ensure that our customer facing mobile application(s) processing, must be completed as fast as possible, including delay sensitive applications. taking into consideration the urgency of the project, it has to be completed within small period of time and must be cost-effective enough to avoid exceeding our approved budget”
It’s obvious here the business looking for an enhanced customer experience. However, the key point here is the completion of the applications processing has to be done as quickly as possible. As a network or cloud solutions architect focusing on the data center design ( On-Prem or Cloud based), in such situation first architecture attribute that you may think of, is a high performance of the infrastructure components (network, compute, DB type, Storage etc), that can support other services and applications running on top of it.
Even though performance is a main architecture attribute here, do you think it’s enough?
In fact, its still not enough, as an architect you always need to look at the ‘big picture’ and consider all the angles of the architecture. What if there is a failure happened in a component, e.g. compute, storage, DB or network? How this will impact the performance or availability of the application(s)? and how fast this component can recover from the failure? Therefore, reliability is another key architecture attribute to be considered in the data center solution.
In addition, you may also consider resiliency as an additional architecture attribute, to offer fast failover when there is a failure at the different architecture levels taking into consideration the active component has enough capacity to handle the load following a failure event ‘architecting for failure’. These attributes all collectivity, will support the overall availability of the application or service.
Besides, if the customer decided to scale the data center or application(s), will it be possible to scale without impacting the desired level of performance? This could be a point to discuss it more with the customer to find out the anticipated scale in which scalability as an architecture can be taken into considerations as well.
The other part of the requirements’ statement, “it has to be completed within small period of time and must be cost-effective enough to avoid exceeding our approved budget”. This is very critical. So What architecture attribute should address this part of the business requirement?
Having a high performance, reliable and scalable architecture is always recommended and ideal, however, we are not living in an ideal world. In other words, if the solution architecture is not affordable by the business, simply it will not be considered. Therefore, feasibility is a vital architecture attribute here to be considered for the overall solution architecture to be accepted by the business. It is very common that the solutions’ architects focus on the other architecture attributes, such as scalability, performance, availability, etc. to ensure the proposed architecture is perfect. Nevertheless, the key question here, is the proposed architecture “feasible” within the customer budge and timeframe of the project?
As highlighted in the previous blog The Expected Architectural Mindset of a Successful Architect ..“you need to ensure the solution feasibility and usability match with stakeholders’ desirability and viability to the organization.”
As mentioned earlier, the consideration of the architecture attribute is like an art and requires a good architectural thinking along with a very good understanding of the architecture attributes and the interdependencies among them to create an integrated architecture.