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

Posted by Rohde Nygaard on February 13th, 2021

this article has included GitHub, interview questions, interview strategies, efficient learning materials, and so on learning structure, there are numerous what to master, do you start to worry that you will never finish learning in your daily life? Actually , we don't have to learn all the architectural skills at once. The main thing is to control the pace of learning and learn the best content at the proper time. We can grow step-by-step in combination with our actual work. So in the current lecture, I wish to provide you with some suggestions on the key direction and path of architecture learning. in the area of technical architecture, I have introduced a whole lot of architecture design axioms for the high availability, high performance, scalability and low cost of the machine. Different maxims correspond to different goals. Here I summarize these architecture principles and goals right into a table to help you understand them more intuitively. limited to space, here I choose a few axioms to pay attention to: could be rolled right back / disabled could be rolled right back principle to make sure that the device could be backward compatible, when the system upgrade problems, we could roll back to the old version, to ensure that the machine is always available. Sometimes, nevertheless , system rollback is difficult. Like if the old and new table structures of a database have become different, exceptWhen we roll back the code, we also need to roll back the database. In this manner, it often takes a long time to operate, and the system's rollback ability is relatively poor. So in the look, we should take to our better to consider the compatibility of database modification and code, and make an idea 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 are able to quickly offline the corresponding function. For instance , if you have a problem with the newest product recommendation algorithm, we could disable this function through this system switch. Using mature technology as developers, most of us want to try new technology, but we realize that new technology is not fully verified, and it often includes a large amount of hidden bugs. Consequently , as architects, once we do scheme design, on the one hand, we ought to start from the stability of the device and try to choose mature technology to prevent system availability problems brought on by the pit of new technology; on the other hand, choosing mature technology also means choosing the technology that the team knows, so your learning cost is low and the landing speed is fast. Using homogeneous hardware we should take to our best to pick the same hardware and the same configuration when we do hardware selection. Like for the server, we pick the same CPU and memory configuration, plus the same os version, in order that we could easier configure the nodes through unified automation scripts, and it will be simpler to expand the device horizontally. we have to deeply understand these architectural principles and gradually apply and master them in practice. So next, II'll take you to comprehend the precise implementation means of architecture to help you better understand the responsibilities and skills requirements of architects. simply speaking, the obligation of the architect is always to design the architecture, track the implementation procedure for the architecture, solve the difficult problems along the way, and ensure the smooth implementation of the architecture. In the last article, I introduced the ability model of architect, such as abstract thinking, balance, communication ability etc. Next, I shall combine the landing procedure for the architecture and the capability type of the architect to specifically describe how a architect works. the job of the architect starts from receiving the project requirements, or from earnestly pinpointing the current problems of the device. The job procedure for TA may be divided in to three stages. first of all, the architect should keep in touch with the merchandise manager or business personnel to comprehend the business enterprise; communicate with the developers to comprehend the system. After understanding the machine and business, the architect will likely then design a certain scheme, which can be divided into three steps: First of all, according to the business requirements, the architect decomposes the corresponding functions in to the existing systems and connects the various areas of the system. The first version of the perfect solution is should at least be able to solve the existing problems on the top, to be able to form a grass-roots solution. Then, architects need to further look at the essence of the business enterprise and sublimate the prevailing grass-roots solutions. For instance , through abstraction, they are able to make the solutions more general and solve multiple similar or potential business needs. This way, the grass-roots solution becomes a high-level solution. It's a test for architects to begin to see the essence and development through problemsNext, based on the existing constraints, such as for example time, capital, personnel and technical ability, the architect should simplify the scheme, turn the tall scheme right into a grounded scheme, and realize the most value anyway cost, which tests the architect's capability to balance. Following the scheme was created, it is necessary to publicize finally. The architect has to persuade relevant personnel to just accept the scheme, and accounts for tracking the implementation of the architecture in the subsequent implementation of the scheme. If there are problems in the act, the architect also needs to help solve them. consequently , we are able to see that when architects design a scheme, you will see an iterative process, and finally they are able to obtain a simple but not simple scheme. And before and following the scheme design, the architect must also communicate with numerous personnel, which requires the architect to really 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 could assist you to learn these architectural skills detailed. first of all, as architects, we have to understand the relevant familiarity with computer hardware and operating-system. They are responsible for specific work. If we've a deep understanding of them, we can discover how underneath layer of the system is implemented, and we could do various optimizations once we do specific design. For instance , in the design of RPC communication framework, we could improve the service through IO multiplexing and memory zero copy technologyThe power to handle requests concurrently. above here is the content linked to specific technology, which can be divided in to three parts from shallow to deep: the first part may be the basic knowledge associated with development, such as for instance data structure and algorithm, specific development language, common design patterns and development framework, and so on, so you have the basic development ability. The 2nd part is many different middleware knowledge, widely used middleware including database, cache, message system, micro service framework, and so forth for these core middleware, we have to not merely understand the particular usage, but also deeply understand their application scenarios. This way, you are able to write efficient and robust code and independently undertake the development of a subsystem. Further down, you'll need to understand about distributed systems, such as the underlying network and distributed communication technology, to be able to know how the systems are connected. Additionally , you also need to understand some peripheral systems, such as for instance big data platform, operation and maintenance monitoring system, access system, and so on in this manner, you are able to understand the end-to-end operation process of the machine, and ensure the stability and option of the device from the technical architecture. After mastering these technical capabilities, you can gradually develop into a comprehensive architect. Like you can combine business to create application system, including data model and service design; you are able to understand various application architecture models, know their advantages and disadvantages and applicable scenarios, and define an excellent application dependency relationship. to go further is to become a specialist in the commercial field. At this time, you already know how to split up the business enterprise, How exactly to realize the decoupling between services; how exactly to realize the expansion and reuse of services through business abstraction. by the finish of the afternoon, you have a good comprehension of the objectives and maxims of various architecture design, and know the solutions to a particular problem. Then, after a large amount of practice, you are able to integrate the technical architecture, application architecture and business architecture, and make a good balance of the objectives of the architecture in line with the specific situation. Of course, as an architect, you have to cope with a series of people. At this time, you need to cultivate more soft skills to express complex architecture problems in an easy way. now you have a clear notion of what type of knowledge structure TA will need as an architect. If you want to be an architect, you need to master different things at different stages of your growth. Here, I take Java for example to further provide the key content of learning, and supply you with more specific reference. The first stage may be the primary development stage. at this time, you need to deeply study the info structure and algorithm, and start to become sure to master the hierarchical architecture of single application, because this is actually the basis of architecture design. additionally , for a few core classes of JDK, you should not just stay at the usage level, but study the origin code deeply to understand its internal design. In this way, you will be aware just how to develop a competent program and how to do all kinds of code level tuning. the second stage may be the high level development stage. first of all, you will need toTo have an excellent understanding of design patterns, each design pattern could be seen as a small architecture design. There are good design axioms and abstract thinking in it. You can study from them when you do system design. then, you'll want an excellent 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 tune them, and know very well what common pitfalls they have. Core middleware may be the basis for our technology selection. at the same time, you should have a deep knowledge of database design and service interface design, and understand their best design techniques, which carry the core business data and business logic of the device. finally, you'll need to further study the source code, which really is a living textbook possesses a whole lot of practical design axioms and methods. Here, It is suggested that you choose some open source development frameworks and RPC communication frameworks to deeply understand their internal implementation maxims, such as spring and netty. the third stage is the architect stage, being a technical expert. to begin with, you will 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, to be able to make reasonable technology selection when making distributed systems. the next thing is to comprehend the underlying system, including JVM, os and hardware maxims, and extend to the systemThe access area of the system, to know the most popular load balancing features and usage, to enable you to have a thorough comprehension of the overall system, the different links could be well connected. Here, I especially recommend that you see the specifications of Java and JVM to know the underlying design of Java. finally, you have to be proficient in various design tools and methodologies, such as for instance Domain Driven Design and UML, and understand the most popular architecture design maxims, to enable you to choose the appropriate application architecture and technical architecture and implement them in combination with your company. At this time, the general requirement for you is to be in a position to conduct business analysis and system design from an end-to-end perspective. the fourth stage may be the master stage. at this stage, you'll want a good comprehension of all of the objectives of the architecture. Additionally to business system design, in addition, you need to have a deep knowledge of operation, maintenance and monitoring. At the same time, you must know the architecture practice of the industry and track the development trend of technology. If a new technology comes out, you are able to accurately position it and incorporate it in to your own capability system. additionally , during this period, you allow us good soft skills through a whole lot of practice, such as communication ability, project management ability and so forth. In the long run, you are able to 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 capability of an architect is a process of gradual improvement. From the perspective of the realm of an architect, the power of an architect may be improved graduallyIt could be divided in to four layers: the first layer isn't a mountain, the next layer is a mountain, the next layer isn't a mountain, and the fourth layer is a mountain. that is a spiral process, just what exactly does it mean? when you first annexed the project, you did not know much about the business, and you were often dazed by the terms that arrived on the scene from the business enterprise side. If you compare the present problems to mountains, it's the same as mountains and peaks. You cannot understand them at all. At the moment, mountains aren't mountains. after business combing and in-depth comprehension of the device, you can design an easy scheme to get in touch various systems to fix the present problems. You can observe the whole picture of the current "mountain". Currently, you can see the mountain is the mountain. But this kind of design is frequently not enough, can only solve the outer lining problems, encounter other similar problems or problems slightly deformation, the system must be redeveloped. by further abstraction, you could find the essence of the situation and recognize that the initial problem is common, and you will have many similar problems as time goes on. Then you definitely summarize and sublimate the look to obtain a general solution, that may not only solve the current problems, but also solve the potential problems. At this point, what you see may be the essence of the situation, the mountain isn't the mountain. Nevertheless , such a scheme is often over designed, too general, and a lot of abstract concepts will be created. It is extremely difficult to understand and implement. finally, back to the situation itself, you may get gone the excessive abstraction, offer a concise and clear design, increase one point, reduce one pointIt will not only solve the current problems, but also retain a particular expansion capacity. Currently, the situation is still that problem, and the mountain remains that mountain. Based on understanding the essence of the situation, this plan of action considers the present situation and evaluates the future, and does not do much. you can compare these four realms to judge your present architecture capabilities and constantly improve your requirements. this paper summarizes the most popular technical architecture design principles, which will be the summary of practice. When you do architecture design, you are able to make reference to these maxims and simply take corresponding measures in the project to ultimately achieve the architecture goals. It really is worth noting that whenever you do the particular architecture design, you need to iterate the look again and again to be able to finally get yourself 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 am hoping you can grow step-by-step and lastly realize your ideal. read a large number of books and travel a large number of miles. This is especially valid for the growth of architects. There is absolutely no way to quickly complete architecture. First, we have to "read 1000s of books" and learn all sorts of skills required by architecture, after which "walk a large number of miles" to turn architecture knowledge in to architecture ability through a whole lot of practice. Sweat « Washington Hushies » thestylexplorer “ “jacket grab the look here ” ”

Like it? Share it!


Rohde Nygaard

About the Author

Rohde Nygaard
Joined: February 12th, 2021
Articles Posted: 1