Involution, which in economics means diminishing marginal utility, comes from the fact that “in 1963, the American anthropologist Clifford Geertz did field work in Indonesia and found that the population of colonial and post-colonial Java was not concentrated in capital – and technology-intensive industries, Instead, it was constantly invested in limited rice production, leading to internal refinement of agricultural production.” In adult terms, it used to be easy to get a $1 million job with Hadoop and MapReduce. Now you may not even be able to find a job. You used to be able to work 58 hours a week. Now you’re working 612 hours. Something has to come, is that the value of the individual has been pulled down, become worthless. Today we’re going to talk about how can programmers avoid internalization?

As a programmer, it is not enough to only focus on business logic development, CRUD, architecture, performance optimization, this is must to master new technology, only the continuous efforts of grinding technology, with technology development trends, in order to present the best way to solve the business demands, guarantee the high availability, high performance, high concurrency, in, to avoid in an impregnable position.

In learning architecture knowledge, we need to understand two things:

  1. Architecture change: from individual services to SOA architecture to microservices architecture to no services architecture
  2. Design of architectural patterns: layered architecture, client-server architecture, event-driven architecture

Single architecture is the Web server & business program & database & background server all together (typical Linux+Apache+Mysql+PHP), for the development of beginners can quickly build a complete application website;

SOA architecture is to split individual services, develop different services by different teams, and then connect them through ESB enterprise service Bus. Enterprises with small business scale usually adopt this architecture.

Microservice architecture is the atomization of each service module of the business, and different services are developed and maintained by different teams. Services and services are connected through MQ messaging middleware or RPC remote invocation. Enterprises in the business scale generally adopt this architecture.

The middle platform architecture abstracts the shared capabilities of multiple business modules, develops and maintains them by a dedicated team, provides interfaces to the upper layer, and quickly generates applications and iterates products.

The design pattern of layered architecture mainly divides the whole architecture into presentation layer, business layer and persistence layer. The design idea of “high cohesion and low coupling” makes each layer focus on its own thing. The presentation layer is responsible for the display of user interface data, the business layer is responsible for processing business logic, and the persistence layer is responsible for data persistence. This pattern (Service→Controller→DAO) is often used in Java design and development.

The main idea of event-driven architecture is that all business action triggers are driven and processed by events. This pattern can realize the expansion of simple small systems to complex large systems. The common architecture pattern in distributed systems is event-driven, in which all business layer events are passed through the messaging middleware MQ, and the background listens to MQ message queue data for business processing.

In performance optimization, we need to understand interface design, system monitoring. At the interface design level, it can be realized through algorithm tuning, technical architecture upgrading and technical component upgrading. We will not discuss it here, but mainly look at the system monitoring module. Monitoring is like our eyes, helping us monitor every business operation and every business call. By selecting appropriate monitoring tools and setting corresponding monitoring indicators, problems can be discovered in advance and solved in time. The full-stack monitoring of an application system includes APP monitoring, browser monitoring, server monitoring, network monitoring, log monitoring, infrastructure monitoring, and physical environment monitoring. As business research and development, we mainly focus on App monitoring, browser monitoring and server monitoring, and leave the rest to the operation and maintenance students.

APP monitoring is to install the probe in the corresponding APP treasure when packaging, and form an official package for release. After the user downloads the APP on the mobile phone, the entire behavior trajectory is also recorded by the probe when using the APP’s various functions. The collected data includes the daily activity, access area, access version and other operational data of the developed APP users. When the user opens the APP, the operation and maintenance data such as whether the APP has a blank screen, whether the APP is stuck, whether the APP is slow or not, and whether the network is hijacked by the operator can help the product r&d students to solve problems quickly, improve the user retention rate and optimize the performance system.

Browser monitoring is the Browser probe (a piece of JS code) embedded in the front page, through the Browser onload event, navigation event and other page access data, For example, basic browser information, page performance data collection, Ajax performance data collection, request and response data, JS error data, page tracking data, etc., and then sent to the background processing. Form user operation data (such as page PV, operator information, browser information, visited city and capital information) and operation and maintenance data (such as Ajax error information, JS slow page information). After obtaining these data, it can help product r&d students quickly solve problems, improve user retention rate, and optimize the performance of the system. Server Server monitoring is mainly to install probes in containers (such as Tomcat, JVM, and Docker) where code is deployed to obtain service call links, interface call times, function execution stack, SQL execution, Server CPU, memory, disk network, etc., so as to help back-end research and development to know business running conditions and optimize system performance.

In new technologies, we need to understand continuous integration delivery CICD, cloud native, DevOps, and more.

Cloud native applications are applications that run on the cloud platform and have the characteristics of cloud, such as elastic scaling, distribution, rapid deployment, rapid iteration, efficiency, and sustainability. The four core elements of cloud native are microservices, DevOps, continuous delivery, and containerization. It can be said that cloud native has already accommodated the design ideas of CICD and DevOps. So let’s start with cloud native. In order to achieve cloud native, it is not just a simple migration of the original application on the physical server to the virtual machine, in addition to the infrastructure and operating platform in the cloud, application architecture, application development mode, application deployment mode, application maintenance mode all need to change. Microservice technology makes applications atomized, and all applications can be independently deployed and iterated; DevOps allows applications to be quickly compiled, automated tested, deployed, released, rolled back, and integrated with operation and maintenance. Continuous delivery allows for frequent releases, rapid delivery, rapid feedback, and reduced release risk. Container makes the overall application development based on container, forming code component reuse and resource isolation.

That concludes the list of three ways to avoid internalization (architecture, performance optimization, and new technology). Of course, with the continuous development of technology, there will be a steady stream of new technology and new ideas, we continue to pay attention to, learn, polish their basic skills. In the Internet circle, there is also an unwritten rule that programmers should not be more than 35 years old, in addition to this group of people have older and younger, less effective than young people, followed by normal business skills are not enough to pass the test. In fact, as long as you steadily consolidate your skills and constantly improve your ability, age is not a problem at all, and there is no problem in finding a job during the epidemic. The most important factor in avoiding internalization is never external circumstances, but yourself.

So, work hard, backbreakers, the harder the luckier!

Java>>>

Big data > > >

Python>>>

Web front end > > >