Lessons learned from the project:
01. The network of the test environment and development environment must be separated;
02. data Consistency Issues (mainly front-end databases and back-end databases; data should be classified based on their own characteristics, and "important data" should adopt a feedback mechanism (Note: regular check mechanism ); "Common data or big data Data" adopts no feedback mechanism (Note: 1. for stateful data: dual channels are used to ensure reliability, and the message body must have a "timestamp" to prevent old data from overwriting new data; 2. for incremental stateless data: A single channel plus regular check mechanism is required to ensure reliability );
03. source code version management. The current source code version must be consistent;
04. network management monitoring (important: including network and host parameters), service monitoring should be considered in advance (important: including whether the service is available; and intermediate links involved in the service, such as: 1. "the size and existence of the intermediate table and message queue" must be monitored; 2. timeout monitoring should be provided for remote calls (TCP/RPC) between modules or main components of the Service );
05. Optimization of Kernel Parameters and network parameters of the server host;
06. Master-slave server and cluster solution-Reliability;
07. system error locating method;
08. Performance testing must be done first;
09. Resource and asset management forms must be prepared and updated in real time;
10. interpersonal relationships must be well handled;
11. Preliminary architecture design is very important. Do not blindly adopt new technologies;
12. Do not make big and comprehensive things. First, meet the basic requirements;
13. The customer's opinions must be fully listened to, but they cannot fully comply with the customer's requirements;
14. The system and application logs must be processed well, such as log segmentation, log level, and log format;
15. Summarize the problems in a timely manner and review the quality, rather than investigate the responsible person, and create FAQs;
16. Summarize the scripts for routine maintenance and troubleshooting, and update them to the configuration library;
17. Automated basic regression use cases should be developed to reduce repetitive work;
18. CodeReview requires at least others to understand the basic logic;
19. There must be a plan before work. Once the plan is determined to be difficult to change, leaders should remember to do what they want;
20. data Storage Methods: distributed storage requires regular check mechanisms to prevent data inconsistencies. centralized storage requires consideration of the processing performance of centralized databases, that is, fast response, and supports high concurrency;
21. In a distributed system, if time is used for comparison, the system time between nodes should be unified and the NTP service should be used;