"Interview questions" to introduce you did the most complex systems

Often someone will ask: Can you tell us you did under the most complex system? In this regard, you are being asked about it, you thought about what criteria considered complicated?

Complexity of the system, including the technical complexity and operational complexity.

Someone complained: I do not complex system, you see the amount of data we have not, do not have access sub-library sub-table, the business is not complicated, single system is enough, what load balancing and clustering did not flow not large, high concurrency and distribution have not been exposed.

What is the complexity of the technology, I mentioned above are considered, as your business grows, our system architecture needs to support large data and high concurrency, so the complex system architecture born out, at the database level to consider sub-library sub-table , separate read and write, standby switching;

In order to improve query performance and single issues, distributed caching essential;

In order to sell and service the peak current limit decoupled, distributed messaging middleware have to spend;

During the big promotion, in order to ensure stability, but also the machine automatically scalable, service degradation, service isolation, service fuse, limiting service, etc. are commonly used routines.

In addition, there is a distributed system distributed scheduling, distributed control system, a distributed log system, a distributed collection and so the link. In fact, the system is distributed, single point of failure is intolerable. Here, you feel that this system is too complicated it. For, in order to build highly available, scalable distributed systems is indeed complex.

However, the technical complexity of the technical architecture but which one fills.

Just think, count the technical complexity of a complex algorithm it? I think it can be considered. A good algorithm that can help us solve many complex business problems.

Here, for us non-engineer the algorithm, if it can be converted into business problems algorithmic problems, I can convert the problem into artificial intelligence, then our business from business intelligence and a big step forward.

AI said it could be much, talk about something near, such as delay "time loop" algorithm queue, ZK session minutes bucket algorithm, such as flow limit token bucket, many practical aspects of the partial business floor also allows us to do things full of gold, in other words, blowing force level can be increased several level Kazakhstan. Technical complexity, also can be a problem to solve aggregate query multiple data sources to solve the data write synchronization and consistency issues. Serve as a catalyst for information purposes only.

Complexity of operations that: before interacting with different services and business interference.

2B done little product or project partners should fully understand the meaning of what I said, because fit different companies and businesses do customization requirements will lead to more and more products can not be universal, especially in this strong business custom ERP system.

So, in order to maintain multiple sets of similar logic and code are huge costs, so the design of scalable systems is particularly important. Many times, we change the demand is unpredictable. This unpredictability is precisely the complexity of the business is located.

In fact, the architecture is based on the current design, a design quality that: whether it can rapidly support the business. In other words, I designed the system to meet the current business, but it can not be extended late, then this design is good or bad? In addition, we have made a good design based on the domain model, but with the development of business, each model coupling heavier.

Well, consider the domain model is irrational, unreasonable or architecture, or business development too fast it? Or, again thinking about a problem. A company in Taiwan that the concept of the business is very good, also intends to practice landing, but then, it's business relatively thin, so, at this time it is the design of universal service in Taiwan do? I personally feel, hard to say.

In fact, the need to keep business nourish, nourished only from the original in order to offer only thin business functions of the service gradually stabilized into a business model to solve a specific problem. There's a pattern design pattern called "template method pattern", its core idea is that the public process of curing down, handing over differences point to the specific business side to achieve. Is not it, only we have more than enough business scenario, we can precipitate out those public logic, those are the extensibility points, and then in the business design process, we can achieve sub-class to do a custom implementation in this business, or provide SPI parties involved in business to expand.

In summary, the complexity of the business that: before the different business to business interaction and interference, and we demand change is unpredictability.

Do you think I said that it end? of course not. I want more of your thinking and lead to a collision of our thinking. For example, many people complain that they are CRUD engineer.

I think these people underestimate their own value. Value and complexity of the business is often not CRUD, but worth thinking behind the business. Online service of the line, the traditional line of stuff, then it has the ability structured storage, and other data can be coordinated, then it valuable.

In addition, you are not able to CRUD process automation, had one day to get something, you get 1 minute, then took 59 minutes to achieve business differences. Can you, of course not. You are not able to put 59 minutes in a compressed, write a framework for the multi-branch issues through policy mode + factory pattern to get it, curing process template method pattern to get through Kazakhstan, then the observer mode, the adapter mode, proxy mode, responsibility chain model, using a state model can be used. In fact, a lot of design patterns to solve complex business scenarios scalable experience routine.

To sum up, the complexity of the system include the technical complexity and operational complexity. We chat together, to learn, to grow, to break the limitations of cognitive! ! !

Guess you like

Origin blog.51cto.com/14230003/2434666