Cost Base Architecture
- At the heart of all architecture decsions, must be based on cost 
Frugal architect
Law 1 - Make Cost a Non-functional Requirement.
- A non-functional requirement specifies criteria that can be used to judge the operation of a system, rather than specific features or functions. Examples are accessibility, availability, scalability, security, portability, maintainability, and compliance. What often goes overlooked is cost. 
- Companies can fail because they don’t consider cost at every stage of the business – from design to development to operation – or because they’re not measuring it properly. - The math is simple: if costs are higher than your revenue, your business is at risk. 
 
- By considering cost implications early and continuously, systems can be designed to balance features, time-to-market, and efficiency. - Development can focus on maintaining lean and efficient code. 
- And operations can fine-tune resource usage and spending to maximize profitability. 
 
Law 2 - Systems that Last Align Cost to Business
- The durability of a system depends on how well its costs are aligned to the business model. - When designing and building systems, we must consider the revenue sources and profit levers. 
- It’s important to find the dimension you’re going to make money over, then make sure the architecture follows the money. 
 
- For example, in e-commerce, that dimension might be the number of orders. - When orders go up, infrastructure and operation costs rise. 
- And that’s okay, because if your system is architected well, you can start to exploit economies of scale. 
- What’s important is that infrastructure costs have a measurable impact on the business. 
 
- As builders, we need to think about revenue – and use that knowledge to inform our choices. - Because growth at all costs leads to a trail of destruction. 
 
Law 3 - Architecting is a Series of Trade-offs
- In architecture, every decision comes with a trade-off. - Cost, resilience, and performance are non-functional requirements that are often at tension with each other. 
 
- As the saying goes, “Everything fails, all the time.” - Being able to defend against failure means investing in resilience, but performance may pay the price. 
 
- It’s crucial to find the right balance between your technical and business needs – to find the sweet spot that aligns with your risk tolerance and budget. 
- Remember, frugality is about maximizing value, not just minimizing spend. - And to do that, you need to determine what you’re willing to pay for. 
 
Law 4 - Unobserved Systems Lead to Unknown Costs
- Without careful observation and measurement, the true costs of operating a system remain invisible. - Like a utility meter tucked away in a basement, - lack of visibility enables wasteful habits. 
 
- Making meters more visible can profoundly shift behaviors 
 
- Though observation requires investment, not implementing adequate monitoring is shortsighted. - The adage warns, “If you can’t measure it, you can’t manage it.” 
- Tracking utilization, spending, errors, and more, is crucial for cost management. 
 
- When critical cost metrics are placed front-and-center before engineers and their business partners, more sustainable practices emerge organically. - Ongoing inspection lets you spot excess spend and tune operations to trim expenses. 
- The return on investment in observability typically far outweighs the expense. 
 
- Most importantly, keeping costs in the forefront encourages sustainable practices. 
Law 5 - Cost Aware Architectures Implement Cost Controls
- The essence of frugal architecture is robust monitoring combined with the ability to optimize costs. - Well-designed systems allow you to take action on opportunities for improvement. 
- For this to work, decompose applications into tunable building blocks. 
 
- A common approach is tiering components by criticality. - Tier 1 components are essential; optimize regardless of cost. 
- Tier 2 components are important but can be temporarily scaled down without major impact. 
- Tier 3 components are “nice-to-have”; - make them low-cost and easily controlled. 
 
 
- Defining tiers enables trade-offs between cost and other requirements. - Granular control over components optimizes both cost and experience. 
- Infrastructure, languages, databases should all be tunable. 
- Architect and build systems with revenue and profit in mind. 
- Cost optimization must be measurable and tied to business impact. 
 
Law 6 - Cost Optimization is Incremental
- The pursuit of cost efficiency is an ongoing journey. - Even after deployment, we must revisit systems to incrementally improve optimization. 
- The key is continually questioning and diving deeper. 
- Programming languages provide profiling tools to analyze code performance, and while these require setup and expertise, they enable granular analyses that can lead to changes that shave milliseconds. 
- What may seem like small optimizations accumulate into large savings at scale. 
 
- In operations, most time is spent running existing systems. - There are opportunities to profile resource usage and identify waste reduction. 
- At Amazon, we continuously monitor services in production to understand patterns and trim inefficiencies. 
- Frugality takes persistence – by incrementally reducing latencies and infrastructure costs, we can optimize the cost to serve. 
 
- There is always room for improvement… if we keep looking. - The savings we reap today fund innovation for tomorrow. 
 
Law 7 - Unchallenged Success Leads to Assumptions
- When software teams achieve significant success without facing major failures or roadblocks, complacency can set in. - There is a dangerous tendency to become overconfident in the methods, tools, and practices that led to those wins. 
 
- Software teams often fall into the trap of assuming their current technologies, architectures, or languages will always be the best choice, simply because they have worked in the past. - This can create a false sense of security that discourages questioning the status quo or exploring new options which could be more efficient, cost-effective, or scalable. 
 
- You see this frequently when it comes to programming languages. - “We’re a Java shop” is a phrase I’ve heard too often – and it can stifle innovation. 
- Unchallenged success breeds complacency through assumptions. 
- We must always look for ways to question, optimize and improve. 
 
- As Grace Hopper famously stated, one of the most dangerous phrases in the English language is: “We’ve always done it this way.” 
Links
- https://youtu.be/UTRBVPvzt9w 
Last updated
Was this helpful?