Required capabilities of Web architects

Source: Internet
Author: User
Tags what sql

Recently, I talked with a few friends about the popular Web 2.0 and the most important role, architect. There are various disputes between different parties, not only because of the background and perspective, including the term architecture, which is used for reference in architecture. As for architects, they can be simply extended from architects, it is nothing more than designing the structure of a building. Back to the software itself, you can simply understand the person responsible for designing the software framework.

We have not discussed the key to the seemingly identical but different roles of architects, software architects, system architects, and their Web architects. The wise, wise, and benevolent roles are not clear at half past one, finally, we will discuss some basic knowledge and capabilities required by a Web 2.0 website architect. As a personal opinion, it is inevitable to be biased:

Be familiar with your business model and target audience

This is the most important thing. Web 2.0 is essentially a Web-based business application. If you do not really understand your business, your core needs, and typical behaviors of your target customers, it is very difficult to do a good job on the website. From this perspective, a Web architect must first be an outstanding product manager. Most of the time, we only need to lead the business technology, and blindly pursuing the advanced technology will be stuck in the quagmire.

Finding a balance between technology and business means that you must understand the core competitiveness of the entire business? What are the basic demands of the target group? Then select the lowest-cost technology to meet business needs, but in turn, you must reserve the appropriate platform space for business development.

For example, if it is a photo sharing application, you can write the registration program a little bad (but it cannot be broken to the animation ), you can make the system look a little less nice, but it is definitely not slow to upload and browse photos. You can design a database that is not so good, but you must be careful about storage, it is absolutely impossible for a website to be as fast as a normal website after more than 10 thousand photos ......

Only by truly understanding what you have to do can technology become cute.

Understanding load balancing policy implementation

Regardless of the 2.0 or business, you must make a key assumption: Your traffic will definitely increase, and a single machine will not be able to meet your business development needs. I believe this assumption is reasonable. No Web 2.0 company believes that they can use a machine to change the world.

It is not a requirement to design an idealized load balancing policy from the very beginning. It is a little "coming soon", but as a Web architect, you must leave some room for separation. Therefore, it is necessary to properly understand the implementation of Load Balancing policies at different levels.

In general, in the early stages of small-scale development, it is enough to properly consider database splitting and domain name splitting based on business. In medium-scale scenarios, you may need to properly adopt hardware or software Load-Balancer. In this scenario, you can use hardware such as F5/NetWare to implement Server Load balancer on the Web layer. Of course, you can choose Apache or more professional Server Load balancer software, for example, NLB in Windows and LVS in Linux. In order to achieve load balancing, it is also necessary to make some appropriate adjustments at the application server level, at least at this moment, you cannot use the session variable as you like (in fact, it is not completely unavailable). Once you use the cache (who does not know MemCached in Web 2.0 ?), If you don't think about it well, a good application in a single-host environment will eventually become messy. In essence, it is nothing more than the problem of data synchronization. In fact, in turn, you think that you have broken down the traffic and pressure, data is independent from each other, and there is no reason to avoid any problems.

To put it bluntly, as a Web architect, you must understand the different implementations of Server Load balancer policies, learn more about the problems and key points that may arise after Server Load balancer, and do not know anything about them.

Design reasonable storage

No one wants to store everything in a relational database. No one can say that a Web 2.0 website can solve the problem with a relational database. If Web 2.0 is user-centered, it can also be said that it is user data as the core value, and the core drive of applications is data. There is no way to discuss whether to use a relational database or not. Many things are to find a balance and a "reasonable" balance among them.

Traditional storage can be divided into SAN, NAS, and DAS, but with the development of technology, the boundary is becoming increasingly vague, fuzzy can even make you forget the difference, although you are optimistic about the silver in your pocket, you can roughly understand how much money you can do. However, you still need to make a choice. For Web applications, most of them are still PC servers, and many may be keen to build storage architectures such as GFS through relatively inexpensive devices.

Many people think that the most important thing about Web 2.0 is the business. "The problem that can be solved with money is not a problem, in the early days, if the architecture was designed as an architecture for the next five to ten years, the architect's "foresight" will surely become a joke in the future, but in turn will not consider the possibility of any data distribution, such a short view will ultimately be self-defeating.

Let's look at the actual situation. What should the architect do? In the startup phase, a simple and direct relational database can be used. You don't need to spend too much energy to think about it. You just need to roughly test the capacity of a server, then we can estimate the amount of time you have to spend to reach the upper limit of capacity. That's enough. To put it simply, a file server and a database server do not make stupid mistakes. For example, a file has only one directory and cannot be split. For example, a database has only one table, too many logic coupling and so on. Since there is no, let's do it. As the business grows to a certain scale, if there are already 0.1 million users, it is no longer possible to ignore your storage. At this time, we will find that, many performance problems are caused by unreasonable storage problems. In this case, the storage design should be considered for performance. With the development of a larger scale, the manageability and cost of storage are gradually becoming the key.

For architects, it is especially important to select different design strategies in different periods. There is no best solution, and only a reasonable architecture is supported.

Integration capabilities of heterogeneous platforms

From the perspective of enterprise applications, If we absolutely do not agree that a system has multiple platforms, it will increase the cost of integration without any need. The "Data Islands" in the past are the best proof. So is it enough for a Web architect to be proficient on a single platform, or to be able to drift between multiple platforms?

Let's redefine the meaning of the "Platform". I simply understand it as two layers: the operating system and the development language, the problem is big. You can say that the framework, database, protocol, and so on. However, you must be certain that the operating system is the foundation of your business software, and the development language is the tool for implementing the business. The combination of the two has some recommended classic architectures ,. NET is Windows 2000 + SQL Server + IIS 6.0. Then Visual Studio 2005/2008 relies on Microsoft to fully use the services they provide, LAMP is Linux + Apache + MySql + Php, while the J2EE Web architecture is generally accepted as Hibernate + Spring + Struts. As for RoR, This is a star-style improvement.

It is silly for a Web architect to think about which platform is superior or inferior. In addition to being proficient in one platform, this allows you to easily process your business, but it is best to be familiar with another platform at the same time, although we can say that the times have changed, all of them are XML and standard rest calls, can you ensure that? Most applications are. net Writing, you need to provide a forum, you use discuz, You need to modify the business as appropriate, although the Forum itself has a powerful customization function, but to embed a specific business, don't know nothing about lamp, so the problem of unified login is not easy to solve. Of course, you can also say that I don't need it for myself, because there are other options, but one thing is also true, you cannot add modules that best suit your business needs as you like.

In my personal understanding, it is better for a good architect to be familiar with two operating systems and more than two development languages at the same time. One aspect is the business complexity of the real world, one aspect is that since there will be different platforms, they must be rational. By taking advantage of the power of the family, an architect can look at the problem more rationally and fairly on his work platform, in fact, let's look at it in turn. net, Java, or PHP.

A good architect should be able to process heterogeneous platforms. Remember that the Web itself is heterogeneous.

Better interaction design

When talking about interaction, most people will think of Interactive Design in the product design scope. Web 2.0 emphasizes user-centric interaction and user-driven interaction design. But here I will talk about the front-end design in the general sense, which can also be called the "presentation layer architecture ".

We all know that Web 2.0 attaches great importance to interaction. Because of this, most engineers spend more time not processing data in the background, but interacting in the foreground. Today, when Ajax and RIA are widely used, a very important role of web architects is to simplify the high development complexity caused by "high interaction.

We will discuss Ajax, but not let every developer operate XMLHttpRequest, not let everyone know about html Dom, JavaScript and CSS, and then the combination will be dazzled, everyone will know, many developers don't need background code debugging, but JavaScript and CSS, because they need a lot of patience and skills. The role of architecture is to define effective norms and implementations.

To put it simply, developers need to pop up a box similar to Facebook, so that each developer will not be able to work together separately, and then try to be compatible with different browsers, compatible with different versions, and then compatible with different pages. I need to retrieve data from the background, and each developer needs to write the data on his own. I need a hidden effect, and I also need to show it clearly.

As a result, some people will say that jQuery can solve the above problems, and some developers will adopt this class library, but some will also use prototype, and the architect's responsibilities, it specifies what to use, how to use, and what to use.

Then I can simply understand that the key role of the Interaction architect at this level is to define whether jQuery is used, how html should be used for different interfaces, and what server interface technology should be used, what kind of remote processing framework should be used.

The goal of defining these interaction technologies is to achieve the best interaction in the simplest way, which is the responsibility of the architecture.

Performance and Fault Diagnosis

This issue should not be included, but considering that the typical Web 2.0 version is always beta, the problem will always exist, it is impossible for you to make a perfect application at the beginning. As your business grows, performance problems and system faults are inevitable. The scenario is normal and the traffic goes up, however, it is found that the overall website becomes very slow, and some pages encounter intermittent errors. what's even worse, the developers themselves also review the code, but still did not find the "stupid" error.

A good architect should be able to assist in some diagnosis and optimization at this time. Based on business and technical judgment, he can find out the core problems in more complex systems. Generally, the performance of an application system is related to the SQL level, but what SQL statements are problematic and the extent to which the problems are affected.

I do not agree with Zhuge Liang afterwards, but a good Web architect should be able to gain insight into the problems caused by performance, and also propose a set of effective fault diagnosis solutions, whether the database is a program or a network, either the operating system or the hardware itself, or both.

There are too many layers involved in performance and fault diagnosis, including the operating system, database, configuration file, program code, and even network. Each aspect needs to be described in a book, maybe not enough. But as an architect, you must feel this.

This is my personal understanding of the quality required by the Web 2.0 architect, but I think there are still many capabilities required, such as the ability to communicate, abstract, and balance, I also hope you can help us with this.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.