How to grow as an architect
This article will discuss how to be a good architect from many aspects, as well as what technical requirements and professionalism an architect should have. I’ve compiled a brain map here for systematic review.
A, responsibilities
In the work, it is necessary to have a clear positioning, clear scope and boundary of their work, in order to carry out the work more effectively. Generally not limited to the following points:
-
Identify requirements. When new requirements are added, they need to be able to disassemble, abstract and form a preliminary outline design.
-
System decomposition. For complex needs, I can clear my mind, analyze calmly, break down big needs into small ones, and define the boundary of each small need.
-
Technical selection. Technology selection needs to be considered from many aspects, such as system complexity, technology implementation cost, do not think to choose the most fashionable, the latest technology, to reflect their outstanding. The best technology implementation is a combination of the company’s technology stack, operations capabilities, operations capabilities, hardware capabilities, etc.
-
Develop technical specifications. If complex technical components are involved in the implementation of a system architecture, detailed manuals need to be written. In addition, it is necessary to cultivate the technical stack of the team, and have clear specification requirements for development and system design. Detailed explanations can be made according to design patterns and code styles.
Second, comprehensive ability
1. Communication skills
As an architect, first of all, it is necessary to have good communication skills and coordination skills in team work and management. Good communication can often get twice the result with half the effort. The following points can be referred to in communication:
- Deal with the situation, not the person. Don’t get emotional.
- Lower your profile and be honest.
- Communicate nonviolently and don’t comment on each other’s views and actions.
- Learn to listen.
2. Technical ability
Excellent technical ability is the essential foundation for architects. In general, it comes down to the precipitation and thinking of technology. In small aspects, I am familiar with programming language foundation, design pattern, distributed principle, component principle and so on, and can reasonably apply them to actual projects. Always be sensitive to technology.
3. Architectural ability
The most important ability of an architect is the ability of architecture, which is also the value of an architect different from ordinary programmers. From requirement analysis, system project approval, system development, testing, online, operation and maintenance, the ability of architecture planning, architecture design and architecture upgrade will be tested.
4. Abstract analysis.
A completely unfamiliar field, scattered requirements, how to translate business requirements into technical requirements, abstract analysis ability is the foundation of architecture. The system application design needs to consider the abstraction of domain model, the application of design pattern and the realization of requirement extensibility.
5. Decision-making ability
A requirement often has a variety of technical implementation solutions, which is better, more appropriate. At this time, it is necessary to combine the demand itself, all kinds of resources, online plan, etc., to make the technology selection and technical decision. If there are many requirements in the system, it is necessary to prioritize the requirements, control the pace and control the overall situation.
3. Architecture optimization and upgrading
1. Ideas and goals
Think about how to improve platform response, throughput, high performance, high availability, high scalability, and low coupling.
2, the principle of
-
Performance should always be considered in the design and development of application systems.
-
Defining clear performance goals is key
-
Performance tuning is accompanied by the whole project cycle, and it is best to set segmentalized goals to carry out. After the expected performance goals are achieved, the work in this stage can be summarized and reviewed.
-
The stable operation of the tuned system must be guaranteed \
-
Performance is more a matter of good design, and tuning is a technical matter.
-
Optimization is a gradual process.
-
Performance tuning must not come at the expense of code readability and maintainability, but must ensure good design.
3, means,
-
By upgrading hardware, you can consider the number of cpus, SSD, memory size, DB storage, etc.
-
Cache, for large throughput, database and there are bottlenecks, we can properly use cache, reduce disk IO, reduce latency.
-
asynchronous
Whether many synchronous interaction functions can be changed to asynchronous, on the one hand, it will not block user behavior, on the other hand, it can also reduce the burden on the system. For example: through message queue to achieve asynchronous processing, interface synchronous response acceptance, asynchronous notification final state.
-
Database optimization level
Optimization principle
-
Prioritize caching to reduce database dependency.
-
Also consider read/write separation to reduce database writes.
-
Finally, the database split begins
-
First split vertically by business, then consider horizontal split.
Vertical and horizontal split of database. When the horizontal increase through the application node can not improve the system processing capacity, often is the database can not carry, at this time have to design a sub-database sub-table. The difficulty of sub-table is: 1. The election of shard key. 2. Query of business requirements across tables and libraries (anti-paradigm design, data aggregation SLAP)