Author: Chen Caihua (welcome to exchange [email protected])
Recently, I learned the architecture design tutorial of Ali senior technical expert Li Yunhua, and gained a lot. Sum up.
1 Basic concept and purpose
Is the purpose of architecture design in order to solve the problem of system complexity, it is not to be, don’t need every architecture has the characteristics such as high performance, high availability, high extension, but to identify the complexity of the actual business situation, then have a targeted to solve the problem, namely: definitely, but not go in for grandiose projects. In the actual situation, not every system needs to do the architecture design, need to combine with the actual situation. Sometimes the simplest design and development is the most efficient. After all, architectural design requires time and labor, and if this investment is used to code early, the project may be faster.
2 Sources of architecture design complexity
A high performance
High availability
scalability
Low cost, safety and scale
3 Three Principles for Architecture Design
The principle of appropriate
The fact that Google has so much data is a major factor in why GFS was born at Google and not at Microsoft, not because Google engineers are smarter than Microsoft engineers.
A truly excellent architecture is designed by the enterprise under the constraints of current manpower, conditions, business and other aspects, which can reasonably integrate resources and maximize the effectiveness, and can be quickly implemented. This is also the reason why many architects from BAT fail to make achievements in small companies or entrepreneurial teams. Without the platform, resources and accumulation of large companies, they just mechanically copy the practices of large companies, and the failure efficiency is very high.
Simple principle
There are all kinds of problems in both structural complexity and logical complexity. Therefore, if both simple and complex schemes can meet the requirements in architectural design, it is best to choose a simple scheme. KISS (Keep It Simple,Stupid!) from UNIX Programming Art The same principle applies to architectural design.
Evolutionary principles
For software systems, change is the theme. Software architecture needs to change as the business evolves. Without a grasp of the essence that software architecture needs to change as the business evolves, it’s easy to fall into the trap of trying to design a software architecture in one step, expecting it to be rock solid no matter how the business changes.
To achieve this goal, either copy the publicly announced plans of the big players in the industry; Or invest enormous resources and time to do all kinds of prediction, analysis, design. Either way, the consequences are clear: a huge investment with a long way to go. It is even more frustrating to stumble and fall to the ground, only to find that many of the predictions and analyses were wrong.
In practice, architects need to remind themselves not to be overly ambitious and to follow the principle that evolution is better than one step, because businesses evolve and change quickly, and no team, no matter how great, can perfectly predict all the paths of business development and change. ** In practice, you can refer to the following suggestions:
-
First, design an architecture that meets the needs of the business at the time.
-
Secondly, the architecture should be constantly iterated in the practical application process, retaining excellent designs, repairing defective designs, correcting wrong designs, and removing useless designs, so as to gradually improve the architecture.
-
Third, as the business changes, the architecture is extended, restructured, and even rewritten; Code may be rewritten, but valuable lessons, logic, design, etc., can be carried over into the new architecture.
4 Architecture design process
References:
Learn architecture from 0 — Li Yunhua
Architecture Blueprint – software architecture “4+1” view model