The Final Pillar: Designing for Cost
By Sergio Barbosa (CIO, Global Kinetic)
For the OCD readers of this post, defining cost as a pillar of good architecture seems like a poor choice of words as the picture below illustrates.
Cost is the most important aspect of any good architecture because it is cross-cutting across the other 4 pillars. If you have enough money, you can build anything, but this is not always a good thing. You can end up not making conscious decisions about where you spend your money and can end up over-engineering a solution to its detriment. Most projects (and hence architectures) will almost certainly be constrained by budgets. However, cost not only acts as a constraint on the architecture, conversely it can also help reinforce any of the other 4 pillars.
So how does one design for cost?
The most logical approach would be to apportion cost to each of the other 4 pillars equally and start from there. But that may put you in a situation where you have overinvested in a certain pillar that is not a priority for the target solution. For example, if you were building a solution that allows people to share cool cat photos you may not want to invest as heavily in the Security pillar as you would say in the Availability and Recoverability pillar. On the other hand, if you were building a financial system you would want to invest heavily in the Security Pillar.
The key to determining this balance is by looking at the solution’s Non-functional Requirements. At Global Kinetic, we group our NFRs into the following categories.
- Legal or Regulatory: Data Privacy Laws & Compliance, Legal or Regulatory Licensing
- Operational Excellence: Maintainability, Observability, Scalability/Elasticity, Serviceability, Supportability**
- Other: Accessibility, Internationalization and localization, Portability, Storage/Capacity, Usability
- Performance: Response Times, Volume, Latency, Throughput
- Resilience: Availability, Data Integrity, Recoverability, Reliability
- Security: Auditing, Data at Rest, Data in Transit, General, IAM
Some of the NFR categories above span multiple architectural pillars, like for example Operational Excellence spans the Performance and Scalability Pillar, the Availability and Recoverability Pillar and the Efficiency of Operations Pillar. On the other hand, Security NFRs will be focused on the Security Pillar.
Another factor to consider is the stage at which your solution or product is in terms of the market or user base that the solution is targeting. For example, if you are an early-stage startup, you may want to invest more heavily in Efficiency of Operations which will allow you to pivot and be more nimble in order to respond to changing customer/user demands while you get your product market ready, and invest more heavily later on in Performance and Scalability once your product or solution starts getting traction and the feature set starts to mature.
The most important thing to ensure is that you apportion at least some budget into each of the four pillars at the start so that you are making a conscious decision of which pillar has the highest priority and which has the lowest. This budget and its apportionment to the 4 pillars must either meet the solution’s NFRs or come with a roadmap or plan of how meet the solution’s NFRs for the system over time.
And there you have it, the Five Pillars of good solution Architecture. A final note is that a good architecture is one that can meet the demands of the product and market throughout the life cycle of the product without requiring a major redesign. This means that a good architecture comes with a roadmap of when you will build each part of the architecture out to its full capability, because you can’t build everything up front and on day one. I hope the blog series has been helpful, and if you need some help working through an architectural design for a new digital product that you are looking to take to market, you know where we are.