Modern Application ArchitecturePosted: June 9, 2014
Modern Application Architecture:
Principles for Cloud-based Solution Design
I’ve been working on a small white paper; a monograph of sorts. But then that overstates it. I am I would say writing a short paper to present and explain the primary elements of “good” solution architecture in the (current) modern era. The scope of this perspective on what is “good” is particularly for mission-critical, production applications supporting real programs or activities that are expected to work reliably and continuously with minimal handholding. It is informed by the advent of mature but still advancing cloud-computing building blocks, and by in increasing need in every enterprise for solutions where economic scalability is often the primary “reach” for solution architectures that must also serve the lessor gods of “high performance”, “high availability”, “graceful degradation”, “seamless failover” and “automatic recovery / restart”.
At this point I’d say the primary elements are:
- Memory and Caching
- Parallelization & Partitioning
- Data Replication
- Event-Driven Processing
- Distributed Processing
Of course, all of these are inter-related. In fact “partitioning” is at the heart of everything, and intertwined with “parallelization”. And most of these principles apply at various levels — from the micro to the macro.
And I have thought about organizing the work to show how these principles were employed in 1999-2000, at great cost and effort, and how they can be realized using cloud-based (AWS in this instance) building blocks in 2014, at almost no cost (or no “incremental” cost, and in some cases, due to elastic scalability, lower cost).
I am not sure if this notion of “how we did it then” and “how you do it now“, on a design-principle-by-design-principle basis, is going to really illuminate the problem and the brilliance of the current solution set building blocks as brightly as I’d hoped. But so far I think the problem is my writing.
In fact it needs so much work I am not sure I will ever get to it again. So I will link to it here (pt1 and pt2) and hopefully fix it or take it down before too long… [new version linked in subsequent post]