Skip to main contentdfsdf

Home/ spotoclub9's Library/ Notes/ Ali architects

Ali architects

from web site

Ali architects share key knowledge and learning path of Java architecture design

 

 

 

 

 

 this article has included GitHub, interview questions, interview strategies, efficient learning materials, etc.

 

 learning structure, there are many things to master, do you start to worry that you will never finish learning in your life? In fact, we don't need to learn all the architectural skills at once. The important thing is to control the pace of learning and learn the right content at the right time. We can grow step by step in combination with our actual work. So in today's lecture, I want to give you some suggestions on the key direction and path of architecture learning.

 

 

 

 in the section of technical architecture, I have introduced a lot of architecture design principles for the high availability, high performance, scalability and low cost of the system. Different principles correspond to different goals. Here I summarize these architecture principles and goals into a table to help you understand them more intuitively.

 

 

 

 

 

 limited to space, here I choose a few principles to focus on:

 

 

 can be rolled back / disabled

 

 

 can be rolled back principle to ensure that the system can be backward compatible, when the system upgrade problems, we can roll back to the old version, to ensure that the system is always available. Sometimes, however, system rollback is difficult. For example, if the old and new table structures of a database are very different, exceptWhen we roll back the code, we also need to roll back the database. In this way, it often takes a long time to operate, and the system's rollback ability is relatively poor. So in the design, we should try our best to consider the compatibility of database modification and code, and make a plan for system rollback in advance. The disable principle requires us to provide the configuration of whether the function is available. In case of system failure, we can quickly offline the corresponding function. For example, if there is a problem with the new product recommendation algorithm, we can disable this function through the program switch.

 

Using mature technology

 

 as developers, we all want to try new technology, but we know that new technology has not been fully verified, and it often has a lot of hidden bugs. Therefore, as architects, when we do scheme design, on the one hand, we should start from the stability of the system and try to choose mature technology to avoid system availability problems caused by the pit of new technology; on the other hand, choosing mature technology also means choosing the technology that the team is familiar with, so that the learning cost is low and the landing speed is fast.

 

Using homogeneous hardware

 

 we should try our best to choose the same hardware and the same configuration when we do hardware selection. For example, for the server, we choose the same CPU and memory configuration, as well as the same operating system version, so that we can more easily configure the nodes through unified automation scripts, and it will be easier to expand the system horizontally.

 

 

 we need to deeply understand these architectural principles and gradually apply and master them in practice. So next, II'll take you to understand the specific implementation process of architecture to help you better understand the responsibilities and skills requirements of architects.

 

 

 in short, the responsibility of the architect is to design the architecture, track the implementation process of the architecture, solve the difficult problems in the process, and ensure the smooth implementation of the architecture. In the previous article, I introduced the ability model of architect, such as abstract thinking, balance, communication ability and so on. Next, I will combine the landing process of the architecture and the ability model of the architect to specifically describe how the architect works.

 

 

 

 

 

 the work of the architect starts from receiving the project requirements, or from actively identifying the current problems of the system. The work process of TA can be divided into three stages.

 

 first of all, the architect should communicate with the product manager or business personnel to understand the business; communicate with the developers to understand the system. After understanding the system and business, the architect will then design a specific scheme, which is divided into three steps:

 

First of all, according to the business requirements, the architect decomposes the corresponding functions into the existing systems and connects the various parts of the system. The first version of the solution should at least be able to solve the current problems on the surface, so as to form a grass-roots solution. Then, architects need to further think about the essence of the business and sublimate the existing grass-roots solutions. For example, through abstraction, they can make the solutions more general and solve multiple similar or potential business needs. In this way, the grass-roots solution becomes a high-level solution. It's a test for architects to see the essence and development through problemsNext, based on the existing constraints, such as time, capital, personnel and technical ability, the architect should simplify the scheme, turn the tall scheme into a grounded scheme, and realize the maximum value at the minimum cost, which tests the architect's ability to balance.

 

After the scheme is designed, it is necessary to publicize at last. The architect needs to persuade relevant personnel to accept the scheme, and is responsible for tracking the implementation of the architecture in the subsequent implementation of the scheme. If there are problems in the process, the architect also needs to help solve them.

 

 

 therefore, we can see that when architects design a scheme, there will be an iterative process, and finally they can get a simple but not simple scheme. And before and after the scheme design, the architect also needs to communicate with a large number of personnel, which requires the architect to have a wide range of knowledge and good communication skills.

 

 

 

 what specific skills do architects need to master? Here I provide you with a simplified skill map of architects, which can help you learn these architectural skills step by step.

 

 

 

 

 

 first of all, as architects, we need to understand the relevant knowledge of computer hardware and operating system. They are responsible for specific work. If we have a deep understanding of them, we can know how the bottom layer of the system is implemented, and we can do various optimizations when we do specific design. For example, in the design of RPC communication framework, we can improve the service through IO multiplexing and memory zero copy technologyThe ability to handle requests concurrently.

 

 

 above this is the content related to specific technology, which can be divided into three parts from shallow to deep:

 

 the first part is the basic knowledge related to development, such as data structure and algorithm, specific development language, common design patterns and development framework, etc., so you have the basic development ability. The second part is a variety of middleware knowledge, commonly used middleware including database, cache, message system, micro service framework, etc. for these core middleware, we should not only understand the specific usage, but also deeply understand their application scenarios. In this way, you can write efficient and robust code and independently undertake the development of a subsystem. Further down, you need to learn about distributed systems, including the underlying network and distributed communication technology, so that you can understand how the systems are connected. In addition, you also need to understand some peripheral systems, such as big data platform, operation and maintenance monitoring system, access system, etc. in this way, you can understand the end-to-end operation process of the system, and ensure the stability and availability of the system from the technical architecture.

 

After mastering these technical capabilities, you can gradually develop into a comprehensive architect. For example, you can combine business to design application system, including data model and service design; you can understand various application architecture models, know their advantages and disadvantages and applicable scenarios, and define a good application dependency relationship.

 

 

 to go further is to become an expert in the business field. At this stage, you already know how to split the business,How to realize the decoupling between services; how to realize the expansion and reuse of services through business abstraction.

 

 

 by the end of the day, you have a good understanding of the objectives and principles of various architecture design, and know the solutions to a specific problem. Then, after a lot of practice, you can integrate the technical architecture, application architecture and business architecture, and make a good balance of the objectives of the architecture according to the specific situation. Of course, as an architect, you have to deal with a series of people. At this time, you need to cultivate more soft skills to express complex architecture problems in a simple way.

 

 

 now you have a clear idea of what kind of knowledge structure TA needs to have as an architect. If you want to be an architect, you need to learn different things at different stages of your growth. Here, I take Java as an example to further give the key content of learning, and provide you with more specific reference.

The first stage is the primary development stage.

 

 

 at this stage, you need to deeply study the data structure and algorithm, and be sure to master the hierarchical architecture of single application, because this is the basis of architecture design.

 

 

 in addition, for some core classes of JDK, you should not just stay at the usage level, but study the source code deeply to understand its internal design. In this way, you will know how to develop an efficient program and how to do all kinds of code level tuning.

 

 

 the second stage is the advanced development stage.

 

 

 first of all, you need toTo have a good understanding of design patterns, each design pattern can be regarded as a small architecture design. There are good design principles and abstract thinking in it. You can learn from them when you do system design.

 

 

 then, you need to have a good understanding of the core middleware, including dB, microservice framework, cache and message system. You need to have a clear understanding of their applicable scenarios (such as peak shaving, decoupling and asynchrony of message system), know how to  spoto Answers  tune them, and know what common pitfalls they have. Core middleware is the basis for our technology selection.

 

 

 at the same time, you should have a deep understanding of database design and service interface design, and understand their best design practices, which carry the core business data and business logic of the system.

 

 

 finally, you need to further study the source code, which is a living textbook and contains a lot of practical design principles and techniques. Here, I suggest that you choose some open source development frameworks and RPC communication frameworks to deeply understand their internal implementation principles, such as spring and netty.

 

 

 the third stage is the architect stage, becoming a technical expert.

 

 

 first of all, you need to deeply understand network communication, such as network layering and HTTP / TCP protocol, as well as various common RPC communication frameworks, and understand their characteristics and application scenarios, so that you can make reasonable technology selection when designing distributed systems.

 

 

 the next step is to understand the underlying system, including JVM, operating system and hardware principles, and then extend to the systemThe access part of the system, to understand the common load balancing features and usage, so that you can have a thorough understanding of the overall system, the various links can be well connected. Here, I particularly recommend that you read the specifications of Java and JVM to understand the underlying design of Java.

 

 

 finally, you need to be proficient in various design tools and methodologies, such as Domain Driven Design and UML, and understand the common architecture design principles, so that you can select the appropriate application architecture and technical architecture and implement them in combination with your business. At this stage, the general requirement for you is to be able to conduct business analysis and system design from an end-to-end perspective.

 

 

 the fourth stage is the master stage.

 

 

 at this stage, you need to have a good understanding of all the objectives of the architecture. In addition to business system design, you also need to have a deep understanding of operation, maintenance and monitoring. At the same time, you need to understand the architecture practice of the industry and track the development trend of technology. If a new technology comes out, you can accurately position it and incorporate it into your own capability system.

 

 

 in addition, at this stage, you have developed good soft skills through a lot of practice, such as communication ability, project management ability and so on. In the end, you can integrate technology and business, balance various architecture goals, design a very practical and grounded architecture, and ensure its smooth implementation.

 

 

 

 you can find that the ability of an architect is a process of gradual improvement. From the perspective of the realm of an architect, the ability of an architect can be improved graduallyIt can be divided into four layers: the first layer is not a mountain, the second layer is a mountain, the third layer is not a mountain, and the fourth layer is a mountain.

 

 

 this is a spiral process, so what does it mean?

 

 

 

 

 

 when you first took over the project, you didn't know much about the business, and you were often dazed by the terms that came out from the business side. If you compare the existing problems to mountains, it's just like mountains and peaks. You can't understand them at all. At this time, mountains are not mountains.

 

 

 after business combing and in-depth understanding of the system, you can design a simple scheme to connect various systems to solve the current problems. You can see the whole picture of the current "mountain". At this time, you can see the mountain is the mountain. But this kind of design is often not enough, can only solve the surface problems, encounter other similar problems or problems slightly  aws solutions architect associate practice exam  deformation, the system needs to be redeveloped.

 

 

 by further abstraction, you can discover the essence of the problem and understand that the original problem is common, and there will be many similar problems in the future. Then you summarize and sublimate the design to get a general solution, which can not only solve the current problems, but also solve the potential problems. At this point, what you see is the essence of the problem, the mountain is not the mountain. However, such a scheme is often over designed, too general, and too many abstract concepts will be created. It is very difficult to understand and implement.

 

 

 finally, back to the problem itself, you can get rid of the excessive abstraction, give a concise and clear design, increase one point, reduce one pointIt can not only solve the current problems, but also retain a certain expansion capacity. At this time, the problem is still that problem, and the mountain is still that mountain. On the basis of understanding the essence of the problem, this plan takes into account the current situation and evaluates the future, and does not do much.

 

 

 you can compare these four realms to evaluate your   Microsoft Exam online  current architecture capabilities and constantly improve your requirements.

 

 

 

 this paper summarizes the common technical architecture design principles, which are the summary of practice. When you do architecture design, you can refer to these principles and take corresponding measures in the project to achieve the architecture goals. It is worth noting that when you do the specific architecture design, you need to iterate the design repeatedly in order to finally get a cost-effective solution.

 

 

 for the growth of an architect, I also provide you with the corresponding knowledge structure and a feasible way to advance. I hope you can grow step by step and finally realize your ideal.

 

 

 read thousands of books and travel thousands of miles. This is especially true for the growth of architects. There is no way to quickly complete architecture. First, we need to "read thousands of books" and learn all kinds of skills required by architecture, and then "walk thousands of miles" to turn architecture knowledge into architecture ability through a lot of practice.

 

 

 

spotoclub9

Saved by spotoclub9

on Mar 06, 21