Beyond Serverless and Monolithic: Build What Your Business Truly Needs
👀 If you've been intrigued by the headline about the Prime Video team reducing their cloud spending by 90% after moving from a distributed microservices architecture to a monolithic application, it's worth taking a closer look before jumping to conclusions.💡
To start with, there is no such thing as a “perfect architecture design”, any battle-tested architecture design is a compromise of many considerations for its given situation. It's easy for monolithic supporters to overlook the significant benefits that serverless architecture can bring, just as serverless advocates can gloss over the trade-offs and penalties that come with it, known as the "fallacies of distributed computing." More importantly, "Serverless First" approach doesn't mean "Serverless Only", microservices are not the only answer to everything, don’t let serverless be that only sledgehammer in your toolbox.
Architecture design is a complex decision-making process and is never one dimensional. Take a holistic view and consider more than what meets the eye before making any decision, for factors like:
🏢 Business goals and context.
🏎️ Characteristics that are most important to a system, such as performance, reliability, scalability, availability, security, etc.
📊 Measurements to support those characteristics, including deployment frequency, lead time to market, change failure rate, and mean time to restore service.
🛠️ Impact on technical implementation and what limitations and trade-offs the architecture has.
👨💼 Team expertise and current and future state of the system.
💰 Return on investment.
Architectural choices are not a one-way street. Treat architecture as a living organism, it should evolve with changing circumstances, such as business context, emerging technology, or organisational structure. Be mindful of the following, to make sure the architecture stays relevant over time:
🤝 Involve business and technical stakeholders early on in the conversation and have their buy-in.
🚀 Stay up-to-date with the latest movements and technologies in the industry, the new capabilities, features, and opportunities they bring, and the risks and limitations.
📝 Keep track of architecture evolution using light-weight documenting tools like C4 diagrams and ADRs.
🔄 Continuously assess the landscape and make adjustments as needed to stay in sync with the changing circumstances.
🚨 Not having an oversight on organisational changes, even if they are not within your control, as these changes tend to impose changes and challenges on team topology and murals.
Comments
Post a Comment