Technology selection of architecture

foreword

Technology selection is the top priority of a company, the foundation of technology, the direction of a department, and a test for technical leaders, architects, CTOs, and infrastructure teams. A wrong type selection may cause huge financial and human losses.

Technical selection principle

Open source, is it under continuous maintenance?

After open source, don't be afraid of closed source

Don't be afraid that the project will be closed source and cause various problems in the future. If an excellent project is open sourced and used by a large user group and large Internet companies, then you don't need to worry about the consequences of closed source problems. Will maintain or innovate a similar one on the original basis.

Open source projects will have more people and teams involved, the community will be more active, and the ecosystem will gradually improve

Niaocai personally think this is very important. When you start to use a certain technology, you may not need the source code. After a long time, a lot of problems will be exposed. At this time, it is better to ask others to ask for yourself.

  1. When a certain technology needs to be extended, if the principle and implementation are not understood, it may cause serious problems.
  2. Go deep into the source code, you can understand the implementation, and use this technology correctly.
  3. When a bug occurs, you can understand the cause of the bug

ongoing maintenance

If the author and the team, stop maintaining the open source project. This technique should not be selected. It already exists in the technology stack. Then you need to be prepared to look for alternatives and complete the update within a certain period of time. But some projects have reached the end, such as dubbo2.0, which basically meets all the needs of soa

Whether to charge or not, and how much the company can afford for technical expenses

Nowadays, there are a large number of technologies in the structure. If each technology charges, most start-ups will basically die, and even rich companies will not be able to withstand such a large amount of charges.

Whether it has the same function or is slightly weaker in terms of performance, its basic function is its group, and it is free technology. Charged projects may have better performance, ecology, and technical support, but do you need them?

The power of oracle is well known to everyone, and the fees are not cheap. Does an ordinary company need so many functions? The result is not needed. So choosing MySQL is a good solution

If charged, is the return on the invested capital as high as the investment?

A financial company wanted to use MySQL NDB to solve distributed problems. As the amount of data continued to increase, there were more and more service instances, and the fees became more and more expensive. The team of the company felt that it was not enough.

For example, when purchasing cloud services directly, the company needs message middleware, and the amount is not large. Niaocai directly recommends using Aliyun's commercial version of rocketmq. In terms of simplicity, no operation and maintenance is required. .net unity took the advice and used it for a long time. The effect is very good. The Aliyun commercial version of rocketmq is used by a small number of applications, and the cost is not increased, which solves the operation and maintenance, management, and maintenance costs of two people.

Definition of technical level, whether it meets the requirements (basic function), whether it is required, the degree of need, and whether the team has corresponding personnel

Is it a core technology, an important technology, or a tool. Focus on performance, or efficiency. technical effect. Different requirements may have different weights. If your technical positioning is wrong.

conform to

A wrong follower, - node.js is very popular. Touted by many as the language that saves the world on the web. Many big companies of big companies are also promoting the benefits of node.js practice in the company. - As a result, the company's architecture group (which I have since fled), adopted node.js. What do you do with node.js, implement the api gateway (that is, the interface), and replace all the interfaces implemented by java with the implementation of node.js. The architect demonstrated a dome to the development team, saying how simple it is, how good this is, how good that is, the trend of the times, etc. (I don't know). The development team is eager to learn and modify the interface. Slowly, a lot of problems appeared, and some problems were not solved for a long time (Niao Cai, read it, it is not difficult). At the same time, it is found that the development efficiency is not high, and the management and operation and maintenance are very difficult. A month later, the architect solemnly announced that he would abandon the node.js plan, and a month's efforts of the tenth person in the development team were gone......

need, degree

A company wants to search for products, and Baidu wants to use the lucene solr solution. No one in the team knows this set of things. First, one person is arranged to learn, deploy, and learn how to use it. After recruiting people to use lucene solr proficiently... —— I asked the person in charge, how much data and active data are there. Person in charge: 1 million data, 100,000 active data Bird Cain: Use MySQL full text search directly. Similar to the function of lucene. They all use inverted indexes, and the performance is similar. The amount of data is not large and does not need to be distributed. Why not. There is also MySQL dba in the team, no need to recruit the person in charge to adopt the suggestion, and the feedback effect of Cotton Monkey is good.

Is the ecosystem perfect?

A technology with a complete or relatively complete ecological park will make your technology implementation, problem solving, and operation and maintenance very simple. It is very important to choose a better technology. Generally speaking, whether the community is active and strong, whether the user group has a certain scale, large companies, large-scale, high-concurrency and other complex environment practices, the ecosystem is relatively complete. A complete ecosystem can greatly reduce the cost of your entry, learning, research, expansion, operation and maintenance, and management

imperfect technology
  1. technology that just came out
  2. Technology that has not experienced massive time
  3. Too biased technology
  4. Only for one aspect, may be very lacking in other aspects. such as node.js
Brief Ecosystem Comparison
  1. The ecosystem orientation of python is small projects and operation and maintenance, and the ecosystem orientation of java is software engineering and distributed.
  2. MySQL has a relatively sound ecosystem, such as customer service, stress testing, backup, and management. MongoDB is very weak in these areas, some are basically zero

Choose technology with key features, sound, and perfect basic functions, rather than blindly pursuing large and comprehensive, one-stop solutions

When Tidb first came out, a group of people touted it as a better database than MySQL, a distributed database that solves all problems, and so on. But the company also faced the problem of distributed database, and the architect and the architecture team could not solve this problem. When Tidb appeared, I immediately went to the documentation and found that Tidb is a distributed one-stop solution. The architect simply built it. After it can be used, let the operation and maintenance personnel build it in the test environment. As a result, because Tidb is too large, it was built. One month (the architect's ability is really bad), all kinds of problems during the test. Finally gave up.

What is the definition required with this technology type, a type with a defined technology only choose one

For example, hibernate already exists in the architecture, but as a technical leader, you feel that hibemate is very troublesome to deal with complex SQL. Through research, it is found that spring-jdbc is more suitable and the easiest. So spring-jdbc was introduced, but I didn't want to modify the code on a large scale, and I didn't want to give up the development efficiency of hibernate, so there are two technical frameworks with the same function. This causes other developers in the team to be unable to correctly locate those businesses and functions that use that technology. There are costs such as confusion in use, extremely poor code readability, and slow problem location.

Whether it is integrated into the architecture system, whether it has a great impact on the existing architecture, design, and code, and whether the cost of replacement is bearable

A very simple example, replacing MySQL from PostgreSQL, if the application layer is all in accordance with standard SQL statements, there is no problem. But the paging operation is different. Need to modify and test all paginated sql

Whether the community is active and strong, and whether the user group has a certain scale

Active community representatives are used by many people, and community representatives are strong

A financial company wants to use MySQL NDB to solve distributed problems. There are many problems with NDB, and there are not many user groups. None of the domestic MySQL gods have gone deep into it, and the problems that arise cannot be solved. Moreover, the commercial service of MySQL NDB is quite pitiful. Finally, the MySQL NDB was replaced, and the innodb engine was used.

Is there practice in complex environments such as large companies, large scale, high concurrency, etc.

If it is bat, and there are several large companies, which have been practiced in large-scale and complex environments, it basically means that this technology is in basic use and performance. no problem. There are problems, big companies have encountered, will provide a lot of documentation. Basically, a lot of experience in verifying technical feasibility, a large number of bugs, operation and maintenance, and use will be given.

Whether the developer or development team has commercial support or belongs to a commercial company

In the selection of technology, Niaocai believes that this is very important. Excellent open source technology requires excellent programmers, and may require excellent development teams. These excellent programmers are all people, need life, and life needs salary, and they are relatively high. Only with a stable life can we work without worries, ensure the quality of open source products, and ensure the stability of personnel. This is also the reason why many excellent open source projects are produced by large Internet or computer companies.

Have you ever used a certain technology, or a similar technology in the same environment?

When there are multiple choices, you can use this selection point as an important choice to inherit

Selectors and teams have sufficient technical depth and technical breadth, sufficient technical ability, coding ability, analysis ability, and problem-handling ability. Whether you have an in-depth understanding of the selection technology, understand the principle, expand, and read the source code

Without sufficient technical depth and technical breadth, it is difficult to analyze which is right, which is suitable, etc. from the above selection points. In the nearly five years of architecture career, Niaocai has basically never failed in selection. Most of them are birds and have a certain technical depth and technical breadth.

Maybe you have the right technology selection, but you just have a simple understanding of the principles. You don’t have enough technical ability, coding ability, analysis ability, problem handling ability, and you can’t integrate into the entire architecture system, and you can’t optimize, expand, maintain, etc. in depth. It is also a very serious time. It was found that the blind cat encountered a dead mouse or went with a big company or a great god, and the model was selected but the technology could not be used correctly, resulting in a very bloated structure, huge, difficult to maintain, slow development, and difficult to locate problems.

The architect and the architecture team have made other choices, but it is basically empty talk if they fail to achieve this one.

The architect and the architecture team have made other choices, but it is basically empty talk if they fail to achieve this one.

The architect and the architecture team have made other choices, but it is basically empty talk if they fail to achieve this one.

Those aspects can reduce the cost of entry, learning, research, in-depth, expansion, operation and maintenance, management

  1. open source technology
  2. Is the ecosystem perfect?
  3. Whether the community is active and strong, and whether the user group has a certain scale
  4. Is there practice in large companies, large scale, high concurrency and other complex environments

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324939162&siteId=291194637