Cloud architecture is popping up again as a hot topic. Cloud architects are hard to find, salaries are going up, and many are seeking cloud architecture training.
Most architects are really just subject matter experts on a single public cloud provider, and don’t understand other providers and how they can work and play well together. This causes some cloud deployment failures as architects become more and more myopic, using the same technology stack no matter if it’s a fit or not.
I’m finding that a return to traditional architectural processes used 20 years ago may be a better fit for cloud computing in 2020. However, they need to be modernized for the way we build solutions today and the technology we use.
“Paralysis through analysis” will always be a risk. Moreover, traditional sequential architectural processes (waterfall) fly in the face of the new world of agile methods, which are automated by very slick devops toolchains and processes.
Cloud architects must avoid these two extremes:
First is thinking that you can iterate your way to cloud architecture success in record time. The application development model (getting it wrong many times before getting it right) is an accepted process for optimizing application development and reacting quickly to changing business needs. However, the same approach won’t work for architecture, unless you plan on spending millions of dollars unnecessarily to get to the right, fully optimized architecture. You just can’t adopt expensive technology or cloud services that way without adding a tremendous amount of risk and cost.
Second, those who look at cloud architecture as a slow trod, burdened by committees, selection teams, etc., where it takes a year just to pick the fundamental cloud technologies, will find that the world changes faster than they can keep up. They’ll deploy an architecture that’s out of date the day it goes into production.
So, what is the best path to a successful cloud computing architecture? The best practices these days are really around “fast planning,” and that’s something I practice every day. Really, it’s old school meets new school.
First, create a master, enterprisewide logical architecture to provide a foundational understanding of what the cloud architecture is, in relation to the existing enterprise architecture. Don’t assign any part of the logical architecture to a specific technology. This is the vision that you’ll build around—the macroarchitecture.
Second, decompose the logical (macro) architecture down to many microarchitectures. In most Global 2000 companies this will be by department, technology platforms, data storage, security models, or all of the above. Break the macroarchitecture apart so that the microarchitectures are solvable using fast planning.
Finally, leverage custom processes around each fast planning sprint for each microarchitecture. Simply put, this means time-boxing the planning cycle for each microarchitecture to a few weeks or even a few days. These should be decoupled and can be done in sequence or in parallel.
It’s interesting how we need to mash up approaches from the past with what’s working now, all fueled by the need for speed. The best architects keep an open mind about technology, processes, and methods. We need to be continuously improving.