This article comes from the public number: Hook hook Java universe (wechat: Javagogo), mo to promote, all dry goods!

The original link: mp.weixin.qq.com/s/ccyw4jKFb…

Author: Liu Haifeng


Most r & D students’ cognition of their own technical development only stops at learning which new technology and mastering which new development framework, thinking that they can do well in technology and become architects in this way.

But the reality is that you think your skills meet the requirements of the department, but you still don’t get the position you want.

The reason?

Most likely, you are not at the level of thinking required of a senior developer or architect.

I once interviewed a development engineer who said that when he was redesigning a system for transaction flow, he split it into quotation system, promotion system, and order system, and there were only two of them working on the development of the transaction system.

My question to him about his experience is:

There are only two of you in charge of the trading system. Why do you want to split the system architecture? What about the additional complexity of the split?

This is a common interview question. What would you say if you were the candidate?

When it comes to architecture design, many r & D students say that they want to split a system into two systems and a service into two services. They even think that architecture is to split the system, but they don’t understand the underlying design logic behind the split.

So what’s the underlying logic of the problem?

1. Why architecture split?

The most direct goal is usually to decouple systems, subsystems, or modules.

2. Why do we need to do system decoupling?

After system decoupling, the original intricate call logic can be orderly distributed to each independent system, which makes each system after unpacking more single responsibility, more cohesive function.

3. Why single responsibilities?

Because the iteration speed of the functional logic of the system with single responsibility will be faster, it will improve the speed of the R&D team to respond to business requirements, which is to improve the development efficiency of the team.

4. Why focus on development efficiency?

Improving the efficiency of R&D iteration is the most important concern of any company during business development, so to some extent, architecture splitting is the most direct means of improving system efficiency.

So, architecture splitting is actually a technical way to improve efficiency.

With this in mind, it is easy to understand why many architects will split the system design when they are doing system architecture, and even why many students in r&d believe that the essence of architecture is split.

What did the candidates say?

He named four levels.

  1. From the perspective of the order system, the order system in the transaction process has relatively stable business and does not have many iterative requirements. If it is coupled to the whole transaction system, it will affect the order system when other functions are released and put online, such as the stability of the order center. With this in mind, a separate subsystem is needed.

  2. From the perspective of the promotion system, as the promotion system is a non-core system in the transaction process, in order to ensure the stability of the transaction process, the promotion system is separated separately, so that the promotion system can be degraded in case of abnormalities.

  3. From the perspective of quotation system level, quotation is the most complex and flexible system in the business transaction process, for the consideration of specialization and rapid iteration, split out an independent quotation system, the purpose is to quickly respond to changes in demand.

  4. From the perspective of complexity evaluation, although system split will lead to more complex system interaction, the complexity of the system can be maintained within a controllable range after the API format definition and call method are standardized.

This answer is a good expression of the applicant’s thinking and understanding of the system design.

Because he spoke about the actual problems with the coupling of order, promotion, and quotation functions in the original system, it was standing on point; And from the point of view of the transaction process to do system design series of three systems split logic, which is connected into a line; Finally, the design principles are reinforced from the perspective of complexity and cost, which is extended to the surface.


Welcome you to follow my official account: Java Universe (wechat id: Javagogo)