“This is the fifth day of my participation in the More Text Challenge. For details, see more text Challenge.”
Architecture design
Application architecture
Technology selection
A programming language
For example, web types (statistical types, embedded types, desktop types, games, and artificial intelligence are not discussed in the scope of the class) are: Java, c#, go, PHP, python; Front-end: vue, react, angular; So how to select? In my opinion, first of all, we need to know from the customer whether there is a programming language requirement, and secondly, there is a good ecological environment, and the open source community is active. In the domestic belong to the popular, convenient recruitment and avoid personnel changes of the high coupling.
Conclusion: I think Java is the first choice, but considering the copyright problems of Java 8 due to Oracle, openJDK can also be chosen. After all, Java has developed for more than 20 years from 1995 to now, and the ecology and solution are very mature. There are solutions to most problems. Of course, the current development trend of go language is also good. But ecology and solutions may have more holes to tread than old Java. As for the front-end VUE is the best choice, of course React and Angular are also good, but the use and documentation of this VUE is more friendly, after all, the Chinese development. As for mobile phones, uniApp is preferred.
Framework for
I suggest using a combination of Java and VUE, so how do you choose the appropriate framework and UI? The preferred new technology is not recommended to be greater than 30 percent of the known knowledge base. Why define it that way? The reason is simple: technical risk control. Of course, if the company is taking on this kind of risk for some reason, play with it. Because more than this percentage will lead to too much extra time to study.
It is strongly recommended not to start with microservices, but the overall design considerations, such as how modules are divided, how package structures are defined, and how modules are called between modules, require a lot of thought. The lifecycle of a first-release architecture is generally recommended in three years. Periods too short and too long are not easy to maintain. Consider the number of concurrent data in 3 years; As for the solution of distributed things, the author would like to say that what can be avoided at the design level should be avoided as far as possible. Although the industry has long had mature solutions, but what can be avoided at the design level should be avoided as far as possible. What is the long link? Can use polling with polling, the real business needs to suggest that the amount of data below tens of thousands of no problem, but once greater than this level suggest the underlying use of NetTY + MQ, of course, the premise is that the corresponding Web container bottom is also Netty, whether to consider the phase-out strategy, heartbeat mechanism processing. As for authentication and authorization, session can be used. Although JWT is popular in the industry, based on token mechanism, token renewal, token security and timeout issues need to be considered. If there is no such security requirement, we can ignore it. If it’s mobile, there’s no way. There’s no such thing as a session.