laitimes

Xu Shiwei: These 4 points play a decisive role in architectural capabilities| geek time

Hello, I'm Xu Shiwei.

Today I want to talk to you about architecture, and what is outside of architecture.

In my past work experience, I have seen many architects tend to think of architecture as a purely technical act. Their workflow is this: the product manager makes the product design according to the user's needs, and the architect gives the implementation according to the product design, that is, the architecture design of the software.

In my opinion, this is probably a misunderstanding. We do architecture, empty body technology is far from enough, the depth and breadth of knowledge, often play a decisive role in the architectural ability. And that knowledge, from the moment you step into the IT industry, should have been stockpiled even sooner.

On how to learn technology, how to reserve knowledge, I would like to talk to you about my personal experience, I hope to give you some different inspiration.

1

Learning technology can not be too specialized, it needs to be understood horizontally and excavated to breadth.

In college, I was exposed to the course "Theoretical Physics" and found that Laplace's equations can solve all the physics problems in the high, and the fractal geometry in "Modern Mathematics" also fascinated me, not only reading all the books about fractals and chaos in the library, but also writing a program to simulate the fractal models I had touched with with a computer.

These two courses allowed me to see the intrinsic connection between many things and to start thinking and exploring the reasons behind them.

This way of thinking had a big impact on my later work, for example, many people think that storage is not just storing things on disk, and what does it have to do with mathematics?

But I found that to go deeper, the storage system and mathematics are very closely related, the usual storage services to ensure that the data is not lost, you must save multiple copies, which will increase the cost of storage, want to use lower cost storage, you have to use domain algebra.

The use of domain algebra to reduce costs is an inevitable direction for the development of the storage field, and Qiniu's [Storage 2.0] has already adopted this approach. So, for technology in either direction to reach its peak, it must be understood horizontally, because everything in the world is interconnected.

Learning technology can not be too specialized, in the process of specialization encounter bottlenecks, we must dig in the direction of breadth.

Here's a mention, since 2022, my column "Xu Shiwei's Architecture Class", the number of subscriptions has also exceeded 31,000+, and geek time has applied for a wave of New Year benefits, a drop of 90 yuan. This column is more to share my feelings about architecture, but also my 20 years of work experience precipitation, recommended interested friends to see.

Page to pick up the voucher, hand 119

Join a super membership and learn for free

2

Any thing that wants to be done to the extreme must be studied as a discipline.

When I joined Kingsoft in 2000, I was assigned the task of reading and saving disks of the software. This module was not very important at the time, and it looked relatively simple, but I tried to understand all the functions of the software and its corresponding data expressions, and inadvertently touched the core of the software system - data.

I studied how microsoft office functional modules are stored in data and modified the design of the original software accordingly. A year later Kingsoft began to develop WPS 2002, the new version is called the "format compatibility war", in order to achieve compatibility with the Microsoft Office file format, I/O has become a strategic level of technology, the save function from the edge module to the core module of the entire WPS research and development.

So, at the end of 2002, as the chief architect, I began to lead the overall architecture design of WPS, spent 3 years to make WPS Office 2005, completely re-architected, and did three major compatibilities: file format compatibility, secondary development interface compatibility, user operation habits compatibility, product positioning: first established and then broken, do Office alternatives.

We innovated at the software architecture level, introducing a data layer that abstracts away the stored procedures of all data, changing the traditional "undo/redo" function that was previously only possible through the anti-operation of the command, making all the data naturally rolled back, and easily supporting multi-version save, Undo/Redo (undo/redo), and various asynchronous operations.

This innovation is not a simple imitation of Microsoft, it is inspired by the thinking of incremental savings. Office has a "quick save" concept, the user is editing the content, if you have saved the disk once, after modifying the disk again, just add data on the original basis. It is equivalent to storing two versions of the data for the same file.

So I thought, since you can do fast save, you don't have to care about how many operations the user has done, to achieve the undo and redo functions, you only need to do forward and fallback based on the data state.

The architecture of the data layer greatly reduced the complexity of research and development, and played a very important role in Kingsoft at that time. At first glance, I look like I'm in luck and doing things that go from edge modules to core modules. But I believe that many people have been exposed to the deposit before, but how many people have thought deeply about the principles?

I have always believed that if you want to achieve anything to the extreme, you must study it as a discipline and think it through. Assuming this stuff is fun, you have to think about what it would look like in the end if you took it to the extreme. If it is only done as a simple task, the results achieved will be very limited.

3

Technology alone is not enough, you must understand the business and how it works, and think about the relationship between product and business.

2006 was the dividing point in my career, and although WPS accumulated many users, it did not achieve commercial success. If the product doesn't make the user pay, in a sense, your value isn't certified. So I realized that technology alone is not enough, you have to understand the business and how it works, and think about the relationship between product and business.

This year, Kingsoft began to explore the Internetization of office software, and I pondered the development direction of office software while touching other fields horizontally. When researching search engines, I found that the technical threshold for distributed storage is relatively high, and it is possible to develop independent business models.

At that time, the mobile Internet was in its infancy, and Lei Jun had already begun to invest in startups in this field. Therefore, I expect that once mobile phones become popular, keyboards will no longer be the main form of human interaction, and rich media such as pictures, voice, and video will become a trend, which will lead to explosive growth in the demand for storage in the future.

Although a new direction was determined, if I wanted to start a business, I felt that I was still too technical, and there were many things missing, so I set up a team from scratch, established a Kingsoft Laboratory, freely explored new products, focused on distributed storage research and development, and undertook some internal projects of Kingsoft to make my storage products land.

4

Choices are related to the degree of symmetry of information, and when you know a certain area well enough, the decision-making process will be very natural.

When I first founded Qiniu, the initial product direction was network disk, the product was released in mid-September, and in October I decided to move to the underlying storage, during which it took only a month to think. This decision was difficult to make, but from the perspective of the company's core competitiveness, adjustments must be made.

There are two reasons: one is that the domestic cloud computing environment at that time was not good enough, if Qiniu did the network disk, it is difficult to find a third-party storage provider, while doing the underlying storage and network disk applications, the energy will be more scattered; second, the team's genes are biased, the end user understanding is not deep enough, and the programmer is our most familiar group, so, under the trade-off, I chose the cloud storage road.

At the same time, Qiniu is also the first company in China to choose Go as the main language of the server, although the grammar characteristics of Go at that time were not completely stable, this decision seemed a bit radical and risky, but in fact it was strictly demonstrated by me, not arbitrarily.

I've always thought that choice is related to the symmetry of the information. The less you know about something, the more you tend to choose a conservative approach, and when you know a certain area well enough, your decision-making process will be very natural.

When making decisions, my methodology is:

First try to understand the whole background, see what others generally do,

What are the emerging ideas, are these ideas reliable,

If I do it, I will tend to go in which direction.

When you delve into the way a new technology thinks and the problem it's trying to solve, you know how relevant it is to the problem you're trying to solve. This requires you to have a rigorous way of thinking, and perhaps in the eyes of many people, rigor is old-fashioned and will stifle innovation.

But in my opinion, rigor is not the antithesis of innovation, but the foundation of innovation. No matter how good the whimsy is, it cannot be turned into action without a rigorous reasoning process. In this way of analysis, there may be some bolder choices, but not arbitrarily.

The same is true of architecture, which requires rigorous design deduction. This requires us to establish a complete architectural knowledge system, and reading and learning is of course a very good way.

But I've found that when I want to recommend a classic architecture book, I can't quickly think of which one to recommend. If you count the architecture-related books I've been exposed to, there are probably the following categories:

Architectural thinking class. Usually from some well-known architectural theories, such as the open-shut principle, the single-responsibility principle, and so on. The disadvantage lies in over-theorizing, and computer science belongs to the category of engineering technology in the final analysis, and should be practiced first.

Design pattern classes. This kind of generally comes into the local details of the architecture, and the ins and outs of each pattern are not easy to understand. Even if you understand a specific pattern, it is difficult to really learn and apply it. Distributed System Architecture Design Class. The challenges faced by large business systems are usually discussed by starting with common issues on the server side, such as consistency, high availability, and high concurrency challenges. This knowledge, while valuable, cannot be extended to a common business architecture and does not have real guiding significance for the architectural practices of most enterprises.

Refactor classes. Mainly talking about how to improve the code, it is actually the most practical category. But in my opinion, the initial foundation of a module is the most important, which basically determines how long the building can last, and the reconstruction focuses more on how to repair and prolong life under the premise of serving people after the building is completed.

These architecture books didn't meet my personal expectations, and in my opinion, they didn't reveal the full picture of architectural design. So all along, I have had this idea: "Write a different architecture book." This idea, which is the origin of today's column, is not quite the same as most of the architecture books you can see now.

In this column, I will construct the entire information world from scratch by understanding the macro perspective of software architecture, and in the process, explain the architectural paradigms of common business scenarios and the application of these paradigms in daily engineering practices.

In terms of content design, I hope this is a low-threshold architecture design column that not only helps beginners who want to become architects, but also allows technicians who have become architects to avoid some wrong experiences.

In terms of writing, I will try to avoid esoteric terminology, and describe the thoughts and thoughts of the builders of the information world in easy-to-understand words, so that you can understand and learn.

Exclusive New Year's Eve benefits for fans:

5

About "Me"

I am Shiwei Xu, CEO of Qiniu Cloud, founder of the ECUG community, and an open source enthusiast. He once worked in Jinshan and Shanda, and has more than ten years of R&D experience in the fields of search and distributed storage related technologies.

At Kingsoft, he led the architectural design and development of WPS Office 2005 as lead architect. After founding Kingsoft Labs, he led distributed storage development as a technical director. Later, he joined shanda innovation institute and launched "shanda network disk" and "shanda cloud". In 2011, I became an entrepreneur and founded Seven Bulls, focusing on enterprise-class storage services.

In my current career, I have made more than a dozen architectural speeches, but these sporadic speeches are far from enough to convey architectural design thinking.

This column is the first time that I have fully and systematically shared my architectural experience and related thinking, and I will share my nearly 20 years of experience with you without reservation, I believe that you will be able to learn and gain.

In particular, time is more precious than money, find the right way to follow the right people, in order to do more with half the effort, I recommend you to start geek time this year just launched the "super membership", you can learn nearly 200 system courses for free, my column is also in it, special value!

Xu Shiwei: These 4 points play a decisive role in architectural capabilities| geek time

Read on