Hot article index, adhere to the original is not easy, please friends don’t hesitate to “like” support:

  1. How to design a beautiful Web API?
  2. Programmers must master performance tuning X, Y, and Z
  3. How to break down monolithic applications into microservices? 【 the 】
  4. How to break down monolithic applications into microservices? 【 the 】
  5. Programmers “seek to keep” strategy revealed



Yesterday we talked about what architecture is. Today we are going to look at the past and present of architecture. Client-server (C/S), browser-server (B/S), Service-oriented Architecture (SOA), Microservice, Serverless, functional computing (FaaS) — we’ve all heard a lot of architecture-related terms, but what exactly are they related to each other? Which architecture is better? Maybe you have the same problem as me, so let’s sort it out.

  • 1. Evolution overview

In the 60 to 70 years since the 1950s, the architecture has evolved in four generations, roughly every 15 years. In terms of expertise, architecture can be divided into application architecture and infrastructure architecture. Application architecture refers to the design content that needs to be paid attention to when building a service system, while infrastructure refers to the design content that needs to be considered when deploying a service system. As we all know, any science and technology is to serve the business, the real driving technology innovation is business needs. From the whole process of evolution, we can see that business types are becoming more and more diversified. At first, software was mainly used for computing of scientific research institutions, and then information services began to rise, gradually innovating traditional media such as newspapers and magazines and yellow Pages. Then, enterprises use computers and networks as tools to improve internal work efficiency, and transform various offline manual work processes into various enterprise applications. Finally, from the Internet + to empower all walks of life, our daily necessities are inseparable from software.

  • The first stage: computers were originally developed to solve scientific computing problems, such as simulating nuclear tests and calculating the trajectory of ballistic missiles, because the scale of computation has been beyond the scope of human computation. At this stage, the software complexity was relatively low. It was mainly to realize various algorithms to meet the requirements of computation and adopt process-oriented application architecture. At that time, computers were still mainframes. Process-oriented application architectures still exist today, especially in developing simple software or in computer science courses at school. I learned the programming language C from process-oriented architecture.
  • Stage 2: With the increasing popularity of computers and the connectivity of the Internet, many organizations begin to provide external information services through the Internet. What impresses me most is that Yahoo, Sina, Sohu, netease, etc., which used to be only available through traditional media (newspapers, magazines, radio and TV, etc.) began to release information through the Internet. Compared with scientific computing, the complexity of information service software is much higher. Business requirements give rise to object-oriented and component application architecture, which reduces complexity and improves reusability and flexibility by means of encapsulation, inheritance, polymorphism and other technologies. The infrastructure in this phase is primarily minicomput-based, with lower costs and more flexible usage scenarios than mainframes.
  • The third stage: this stage more and more enterprises began to use software to optimize the production and office, at that time the most popular is enterprise resource planning ERP and other information management system, around 2000 veteran brother I was still in school, at that time also used JSP/Servlet and other technologies to develop student apartment management system, teaching management system. Layered application architectures such as SSH (Struts/Spring/Hibernate) in the JAVA language were born in this stage, separating different types of technology or complexity from the supporting infrastructure of PC Server.
  • Stage 4: When Google, baidu, tencent and alibaba enterprises, with the help of computer software and the Internet have promoted the information, communications, and e-commerce industries after the change of all walks of life are beginning to embrace the Internet this productivity, Internet + is now the biggest trend, all aspects of related to our life begins to be refactoring optimization, Including payment, travel, travel, dining, entertainment and so on. Software systems are no longer isolated islands. They are becoming exponentially larger and more connected to each other. Microservices application architectures are the best choice, coupled with cloud computing infrastructure. Spring Boot/Spring Cloud, Docker, Kubernetes and other new technologies are the most popular at present, and we programmers need to learn and master them.
  • 2. Comparison of different architectures

Looking back at the evolution of the architecture, the business has become more and more complex, starting with research institutions and gradually affecting everyone’s daily life, and software has grown in size and complexity. So are the different types of architectures comparable? This is the way we used to think, and this is what I used to think, but now I feel that the various types of architecture are not either-or, in fact, there are complementary relationships: process-oriented, which focuses on the complexity of function granularity; Object component is concerned with the granularity of class object, module component complexity; Multi-layer architecture is concerned with the complexity of the whole system granularity; Microservices are concerned with complexity across multiple systems. As such, they are solutions for different granularity complexity, each with its own advantages, and able to coexist harmoniously within a software system.

If compared the process oriented to a cart, compare object component to tractors, compared the multi-tier architecture to cars, compared the micro service to super sports car, these different types of traffic tools for each are not identical, but not the more expensive the better, they each have each applicable scenario, like super car cannot be in the mountain road. When choosing an architecture, we need to understand the characteristics and scenarios of each architecture. The best architecture is the one that fits. This is similar to finding an object. Today, we will continue to talk about architecture, to see what styles or patterns architecture has, class libraries, modules, frameworks and the relationship between architecture, etc., please pay attention to it.

It is not easy to insist on the original, if you think it is valuable, please move your hands and point out the “recommend” button below, so that more friends can see, veteran brother will be more motivated to insist on sharing. In addition, I will share my experience in career planning, job interviews, skills improvement and influence building in the future. Please follow this column or “IT veteran brother”!

  • Soft Skills – Hot articles (published on official account) :
  1. “Fancy” layoffs go a long way, you know?
  2. Encounter redundancy, how to spend psychological crisis?
  3. How to Find a good job in winter?
  4. 2C or 2B, what does that have to do with getting a job?
  5. Big company vs. small company, which would you choose?
  6. Keep that in mind and don’t worry about getting a good job!
  7. Jump, jump or not jump, how to jump?
  8. Programmers “seek to keep” strategy revealed
  9. Very hard, why am I still in the same place?


  • Hard Skills – Hot articles:
  1. How to write a good product help document?

  2. Is there a shortcut from programmer to architect?
  3. Spring: HTTP Request Processing flow and mechanism [1]
  4. Spring: HTTP Request Processing and mechanism [2]
  5. Spring: HTTP Request Processing and mechanism [3]
  6. Spring: HTTP Request Processing flow and mechanism [4]
  7. Spring: HTTP Request Processing flow and mechanism [5]
  8. How to use Spring Cloud correctly? 【 the 】
  9. How to use Spring Cloud correctly? 【 in 】
  10. How to use Spring Cloud correctly? 【 the 】