The Art of Technology selection

Source: Internet
Author: User
Tags mongodb

What is technology selection

Technology selection for the vast number of programmers, especially the Internet company's technical leaders or architects, must not be unfamiliar. Small to the daily development of a tool library selection, large to the entire system language, architecture level of choice, are the scope of technology selection. Today we will briefly talk about technology selection.

In general, we will encounter the selection of technology, can be divided into the following categories: Infrastructure selection: Cloud Platform or IDC, programming language, database and so on. Framework and Library selection: Front and rear end of the development framework, core class library and so on. Middleware selection: Load balancing, message middleware, cache middleware and so on. Third-party service options: third-party push, SMS, etc.

In fact, what we often face is not the selection of individual technology, but the selection of a set of technologies, schemes, specifications or products involved in a project. This requires us to weigh more carefully the pros and cons of various technologies and combinations and make trade-offs.

Technology selection, in essence, is an architectural decision. System Architecture This book summarizes architectural decisions into six modes, including options, filtering, assigning, partitioning, arranging, and connecting. and the choice of technology is obviously the option (decision-option) mode, that is, each decision is a set of discrete options, from which to choose a suitable. factors influencing the selection of technology Project Factors

The first consideration is the project.

We need to identify the nature of the project itself, including the size of the project, its importance, its time requirements, and so on. If it is a small-scale experimental project, then try some new technology can not be. If the time requirement is very tight, consider a program modification based on open source or commercially available. Taobao when online, is to buy a commercial program after the modification. In addition, the cost and budget of the project must also be considered. If the budget is adequate, we may also consider purchasing commercial or third-party services.

The requirements of the project will also affect and even limit the selection of technology. It is important to note that non-functional requirements, such as concurrency, real-time, usability, data consistency, security, etc., often have a great impact on technical solutions and sizing. For example, payment related applications, the consistency of the data is very high requirements, the core of the payment data storage, will be inclined to choose Oracle, PostgreSQL This strong consistency of the database, and do not choose MongoDB (although it is said to support the transaction immediately). Team Factors

The second thing to consider is the team, that is, the human factor.

Technology selection must consider the current team members of the technical composition. For some of the more basic technology selection, such as language and framework, database and so on, often the most appropriate choice is the team most familiar with the technology. If you're going to choose a different technology, consider whether someone in the team can hold it. Another important consideration is recruiting, and if you're using a niche technology, recruiters can be more difficult when it comes to expanding your team. We have a clever almond in this area, and we started with the JVM-based Scala language, but when we recruited it was a cover-up for Java engineers.

The development period of the team will also have some influence on the technology selection. For the early team, most employees are like innovation, willing to take risks, then you can choose some relatively new, challenging technology, team development to a certain stage, it is necessary to start to consider the team efficiency, development norms and other factors, at this time will often choose some of the more popular, proven technology.

When I joined the present company, we just started to transform. The original product is a Web-based website and we intend to develop a mobile APP. Our original application used the Scala language and the Play framework, and the question was what technology should be chosen for the new product backend. Although Java was also considered, we chose the most familiar Scala in the team because of the tight time. But when we started to serve, we chose Java.

Another point is that although the technology selection needs to consider the team's preferences, but do not because of a few people's personal preferences, to determine the choice of technology. or through careful analysis and experiments to choose. And policymakers need to look longer and drive team technology forward. Technical Factors

Technology selection must also take into account technical factors such as technical features (ease of use, maintainability, scalability, performance, etc.), technical maturity, community activity, architecture matching and evolution, and so on.

Technical characteristics are often people will pay attention to, I believe needless to say. But be careful not to just browse the Internet to see the various analysis, for the important characteristics, or need to go to experiment or do some tests, there is a first-hand feeling. In addition, these features are often not available, so we need to make tradeoffs against project factors and team factors.

The development of technology has its inherent trend, Gartner publishes a Hyper Cycle every year, marking the development stages of various technologies, and another good reference is the technical radar of ThoughtWorks. We can choose different maturity technologies and products according to the project, team and other factors. But for the core project, it is best to choose enough mature technology, avoid blindly pursuing new technology.

For more important applications, we will generally choose to compare the popular technology, because the use of more people, but also to some extent that the product is relatively good, and recruitment will be easier. There are Github star numbers, Google Trends, Baidu Index, and so on that can be consulted. Community activity is also a must to consider the factors, you will not want to use a no maintenance, ask questions and no one reply to the technical product bar.

Finally, you need to consider how well the technology product matches the current architecture. The technical stack of a team is too fragmented, and it can be very stressful for development and operation, even affecting the stability of the system. For example, our current database is using MySQL, and a technical product if required to introduce MongoDB, then I will certainly think more about how we maintain a mongdb is not worth it. In addition, if you have a certain plan for the evolution of your architecture, consider whether the new technology products introduced and the future architectures will match. Other factors

Finally, there may be some additional factors to consider. For example, the issue of the license agreement, a period of time before the uproar of the React Native License Agreement incident, I believe we remember. There are also companies that may have some principles or even specifications for the use of third-party programs or services, which must also be taken into account. In addition, there may be some factions involved in a slightly larger company, which is not much to say. How to choose a technology

We have listed above a number of technology selection needs to be considered, so how to do technology selection. Can be divided into the following steps: First of all to identify the needs and objectives of the selection, it is best to list the various factors must be considered as well as the evaluation criteria. Then you can start looking for candidate technologies or products. The scope can be as wide as possible, to collect as many candidate technologies and products. Second, the preliminary screening can be carried out. Filter out 3 or so alternatives by excluding technologies or products that cannot be selected or are obviously impossible due to various restrictions. Then we have to do some detailed investigation and analysis. A table can be included, and the options, as well as the factors that need to be considered, are presented in the horizontal and vertical form, with an analysis of the evaluations. At this point, you may need to do some small Demo verification feasibility, or do some performance testing, stress testing and so on. If necessary, you can score each factor in the table. Finally, the analysis results are reviewed and final decisions are made.

Technology Selection Analysis table, each lattice can have a specific score, can also have advantages and disadvantages of evaluation.

candidate a candidate B candidate C
Technical Maturity Level
Schema consistency

Of course, small less important technology selection is not necessarily so troublesome, and the important technology selection may have to repeat the various steps multiple times. technical selection of several points of attention must be carried out feasibility analysis, if not too sure, do a Demo to verify. If the project is halfway through, it would be a very painful and time-consuming task to find out that one of the scenarios originally conceived was not feasible. Do not have a mindset, habitual use of certain technologies, such as service to use Dubbo, cache with Redis, specific problems to be analyzed. Don't be trendy and use too new and immature technology on important projects. As your business grows, many architectures need to be upgraded, so be sure to consider whether it will be cumbersome to replace a technology in the future. You can choose technologies or products that meet some criteria, or deploy an adaptation layer in your application to facilitate future adaptation of other technologies. The architecture should be as unified as possible, and one domain avoids introducing too many technical products of the same functionality. Summary

Finally, we will find that technology selection is not only a science, but also an art, and sometimes there is no right or wrong points. At last, when faced with a dilemma, it is necessary for the decision-makers to take courage, make decisions, and firmly push forward.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.