preface

Many programmers in traditional industries are getting anxious, and some can’t even sleep. Why is that? Programmers in traditional industries write business code every day without access to new and better technology. The benefit of the company is not good, if the target income is not reached, we can only “slim down”, technical personnel are also very panic; Seeing the rapid development of BAT and other Internet enterprises, the treatment of programmers is also rising, it is inevitable to be jealous, but how to transform is confused.

The technical personnel of traditional industry how to transform the Internet with respect to a few aspects and everybody below.

The distinction between traditional industry and Internet industry?

The primary purpose of the traditional IT industry is to do projects, is to solve the practical needs of a customer, to provide personalized effects.

The central competitiveness of an enterprise is project experience, and IT skills are only a way to solve problems. Therefore, IT is required to control development costs and ensure the stability, compatibility and expansion of the system on the premise of solving problems. Therefore, traditional IT enterprises generally choose a mature and secure architecture layout plan. Ensuring compatibility with existing systems is another reason why traditional IT companies are cautious about skills.

The Internet IT industry’s primary purpose is to make products, is to solve a certain kind of needs of a certain kind of people, to provide a general solution plan.

The central competitive power of an enterprise is the number of users (traffic), and the transaction logic is relatively simple. On the premise of solving the problem, it is necessary for Internet enterprises to make products more attractive to users and retain users. Internet IT companies require skills to deliver products that are prettier, more usable and more secure than their competitors. Internet companies are also more willing to adopt new skills and structures to maintain their competitive edge in the face of cutthroat competition. The large transaction volume of Internet enterprises and the high demand for real-time performance are also important reasons for the adoption of new skills by Internet enterprises.

Why do programmers switch from traditional industries to the Internet industry?

On the one hand, many programmers have certain technical aspirations and like to focus on popular technologies. Dynamic languages, Ruby, Python, Nginx, concurrency, big data. But that’s a long way from working in the traditional industry, dealing with registers, underlying drivers, and countless SDKS packaged with chip manufacturers. The enterprise of many programmers has also been extinguished.

Traditional software industry technology updates slowly, and in the work can not be exposed to more new technology content. The probability of being “obsolete” is relatively high. As a result, many programmers are planning to switch careers.

Bill Gates, Lei Jun, Ma Huateng, Zhou Hongyi and Li Yanhong are all former technicians who caught up with the booming wave of the Internet, realized their self-value and established their own “business empires”.

Programmers in traditional industries can have a very long promotion cycle, five or even 10 years to reach the top. Everyone around you should have similar situation: at the end of the rating, my contribution is the biggest, but it is always the top person’s highest evaluation. The Internet industry is much better, offering capable, hardworking programmers another way to quickly realize their value. The Internet tycoon above is the best proof.

From the traditional industry to the Internet industry, how far are you still?

There is a common phenomenon that technical personnel from traditional industries, most of the skills mastered are SSH, slightly more senior engineers have some knowledge of J2EE specification, they are still using J2EE specification EJB, JPA, JMS, JCA, JAAS and other technologies, databases basically using Oracle, DB2, Essentially, and so on.

Technical personnel in traditional industries are generally in a perfect framework for business module filling, therefore, a traditional developer will undertake all the work of a module from the front to the back, which includes: HTML, JS, CSS, EJB, JPA, SQL, PLSQL and so on.

Only these technologies are not enough, if we want to step into the Internet, but also need to take these technologies as the basis to further expand the technical vision, the lack of technical breadth and depth to make up.

The following are some discussions on the current situation of technical personnel in traditional industries and what technologies need to be mastered in the transformation of the Internet industry:

The message queue

So if you’ve mastered the JMS specification’s message queue technology in the traditional industry, you just need to go one step further and dig into the open source Kafka, RockitMQ, ActiveMQ, RabbitMQ, MemcacheQ, Redis, ZeroMQ, MSQ, etc.

The cache

In addition to learning about distributed caching, for example: Redis, Memcache itself features and technical points, the most important to the thought of cache fragmentation, most of the heat in the Internet are cached data cache in the service, this requires a lot of cache server, single machine can’t meet the requirements, the cache fragmentation is a big topic, the realization of the cache fragmentation pattern generally has the following three:

  • It is implemented through the proxy layer, such as Codis, where data is routed and transparent to the application layer.

  • Client fragmentation, simple implementation, simple use, support fragmentation, replication, failure transfer and other functions.

  • The cache server supports high availability modes, such as Redis 3.x and Sentinel.

Service framework

In the world of Internet, almost all companies have realized servitization. The problem caused by servitization is consistency. How to solve the consistency of high concurrency system? I set up some solutions in the Java architecture group 895244712, interested can join to understand.

Microservices are becoming more and more popular recently. Microservices are actually an extension of servitization and a more detailed servitization architecture. The representative of the service framework of microservices is Spring Cloud, which integrates with Netflix and provides advanced features such as flow limiting, fuse breaker, warehouse wall isolation and failure transfer, which are essential in servitization. You can learn more about Spring Cloud in the documentation on the official website.

The database

In the traditional industry, most developers use Oracle, DB2, Sqlserver database, in fact, in terms of function and performance, they are no less than Mysql, or even better than Mysql, but Mysql is free, which makes Mysql favored by the Internet industry.

In the Internet industry in the face of performance pursuit to reach the extreme, so will require developers to understand the principles of the database, the most important part is the index, I also shared through the video “uncover the mystery of Mysql B+Tree index” principle, the same, add groups can be obtained.

Load balancing

What do you do when you’re under a lot of pressure on a high concurrency system? There is only a divide-and-conquer mind. Therefore, load balancing is very important. Traditional industries take selling products as the profit model. Therefore, most projects use F5 hardware load balancing when they need load balancing.

What about the Internet? Use soft load balancing, you must understand LVS, Nginx, Apache, Varnish, Haproxy and other layer 7 and layer 3 load balancing principles and products.

JVM

To do Java development in the Internet industry, it is essential to have some knowledge of the JVM and do in-depth research such as: GC, class loading, Hotspot compiler, multi-threading, concurrency and locking, IO and NIO, etc. These will also be of great help for subsequent performance tuning.

Big data and cloud computing

As an IT practitioner, I must keep up with the technological trend, such as cloud computing, big data, CAP, BASE, master selection algorithm and other concepts, and I have to study hot technologies, such as: Hadoop, Hbase, Zookeeper, Openstack, Dooker, Kafka, Storm, etc.

Performance evaluation and capacity estimation

If you decide to come to the Internet, you must learn performance evaluation and capacity estimation, which includes the front-end machine, cache, message queue, database and other performance indicators estimation, such as: throughput, response time, memory, CPU, IO, network IO, etc.

In order to ensure the rationality of the architecture design, performance and capacity evaluation is completed at the initial stage of the architecture design to prove the feasibility of the architecture solution. However, during and after the implementation of the project, pressure testing of the project is also needed to prove that the project is recommended and completed according to the established objectives.

Internet Architecture Methodology

In the Internet industry, the core of the user request to handle a large scale and high concurrency is only one, that is “divide and conquer”, therefore, usually be broken up into multiple responsibilities of a single business service, in a single service, business logic is not complicated, but the quality of nonfunctional requirements of the demand is higher, it often appears in such aspects as performance, availability, Therefore, the primary consideration in the architecture design of the Internet is non-functional quality, which is different from the traditional industry focusing on function and business process. .

Technical breakthrough and online emergency response

In Internet companies, most of the products are for the client, client’s products is characterized by having a huge number of users, the product will be able to handle huge amounts of the large-scale concurrent users request high, thus is more sensitive to product availability, in such an environment, technical research and online emergency is particularly important. Linux commands, scripts, and Java virtual machine commands are all required.

It’s gonna make you feel better

Hope this article can help more traditional industry professionals turn to the Internet, on the big stage of the Internet to show your talents, and finally, throw in a I in the Internet industry for many years experience of Java skills graph, we can according to the mind map to deeply study the knowledge, each knowledge require the system to learn, Or read a book or search for relevant information, remember to accumulate the breadth of knowledge as well as a certain depth.

Ps: friends who need high definition can add group 895244712 to obtain, the group will also share some of the above knowledge points of information to everyone to learn, is willing to encourage each other!

This Java Technology learning roadmap covers all of the above points in seven modules

Source code Analysis Most programmers “write” code, or at least copy and modify it. However, not many people can read code. Correct reading source code is the knowledge we must master.

The distributed structure As our business more and more and more important, monomer architectural patterns have been unable to corresponding large-scale application scenarios, and the system must not exist in a single point of failure cause the overall is not available, so only vertical or horizontal split business system, make them form a distributed architecture, the use of distributed architecture to eliminate redundant system of single point of failure, Thus improving the availability of the entire system.

1. For the right project and the right team, the benefits of adopting microservice architecture will outweigh the costs. 2. There are many attractions to microservices architecture, but before you embrace microservices, you also need to recognize the challenges it presents. 3. You need to avoid microservices for the sake of microservices. 4. Introduction strategy of microservice architecture — For traditional enterprises, it is advisable to introduce some appropriate principles of microservice architecture to transform existing systems or create new microservice applications at the beginning, and gradually explore and accumulate experience of microservice architecture, rather than implement microservice architecture completely.

Only by deeply understanding the operation principle of the bottom layer and strengthening logical thinking can we write efficient, safe and reliable multithreaded concurrent programs.

Performance optimization We are not only responsible for the project, but also able to solve all performance problems. Only by deeply studying the underlying principles of JVM, Mysql optimization and Tomcat tuning, can we achieve the effect of knowing what it is and why. In addition to performance optimization, it also provides common ideas and considerations for scheme selection, awareness, thinking and the ability to make various trade-offs during scheme selection.

If you want to be based on the Internet company, and can not be submerged in the wave of the Internet, the development of the project is not a small skill, but also a measure of their own ability, how much amount is equal to how much return. How much can we know about the underlying principle and implementation principle of a seemingly simple project requirement map?

conclusion

The above is the most mainstream technical knowledge system of the Internet at present, and also the Java technology system that BAT uses most at present. As long as you master these technical knowledge proficiently, there will be no problem in completing the transformation from traditional industry to Internet industry.

In addition to technology, what is more important is the comprehensive improvement of learning ability, technical vision, development orientation, management ability and other auxiliary abilities. Only in this way, we can gain a firm foothold in the rapid development of the Internet industry and not be eliminated.