This is the ninth day of my participation in the August More text Challenge. For details, see: August More Text Challenge

Every programmer has a heart to be an architect. A lot of people ask, what is architecture?

This article to expand the discussion ~

1. Differences between architecture and framework

There are many terms for architecture, such as:

1) Open source system (MySQL, Nginx) architecture

2) Implementation of large company structure (Alipay, wechat)

So what’s the difference?

  • Architecture: Architecture is not software per se, but rather a strategy about how software is designed. An abstract description of the overall structure and components of a software, used to guide the design of various aspects of a large software system.

  • Framework: Domain-specific, reusable, “in-process” software that implements the common base parts of the domain and provides well-defined points of variability to ensure flexibility and extensibility. Is a domain – specific, language – specific and technology – specific architectural application solution.

Bottom line: Architecture is about “structure,” and framework is about “specification.”

Framework is software, the purpose is to abstract universal efficient problem solving; An architecture is an abstract solution to software designed to facilitate overall disassembly and local refinement.

2. What is the architecture?

Software Architecture

An abstract description of the overall structure and components of a software, used to guide the design of various aspects of a large software system.

— From Wikipedia

A system is made up of a group of related individuals who need to collaborate “according to certain rules,” and the architecture needs to specify the rules of collaboration.

Architecture = skeleton, structure, derived from architecture. The former reveals the supports inherent in the architecture, while the latter shows that the architecture cares about the way in which the supports are constructed together.

Why architecture design?

The reasons can be summarized as follows:

1) Business requirements are numerous and changeable

2) Software systems are getting more and more complex

3) More and more people are participating

4) There are more and more common/special problems across projects

5) Technological development changes day by day

Based on the above factors, the system maintenance cost is getting higher and higher:

1) The system has a large scale, serious internal coupling and low development efficiency;

2) The system coupling is serious, which leads to the whole body, and the subsequent modification and expansion are difficult;

3) The system logic is complex, and problems are easy to occur. It is difficult to troubleshoot and repair the problems.

3. What is the purpose of the architecture?

In order to solve the problem caused by the complexity of the software system.

The ultimate goal: to meet the requirements of building and maintaining the system with minimal labor costs.

What are the benefits of architecting?

1) Be aware, not confused (” new “architect)

2) Focus on what you want, not what you want (” old bird “architect)

Some of the Case:

“Our system must be able to support QPS 10W +…”

“The structure of wechat circle of friends is to do this, let’s also do this…”

“Docker is hot right now, and our architecture should bring Docker in…”

conclusion

As the business grows, cross-system architecture design will become an important problem for us to solve, which may require re-optimization. We expect one big architecture diagram to cover all of the business related design, but the fact is that without a deep understanding of the business, the architecture diagram is just an idea.

The essence of architecture lies in reasonableness, which can be expressed in two aspects:

1) Improve efficiency: take on more work with fewer people

2) Lower budget: do more work with fewer machines

πŸŽ‰ pay close attention to the public, | architecture diligence, real-time updates

  • I have ten years of experience in back-end research and development. I have worked as an architect and have been “involved” in several big Internet companies. I focus on the research and learning of software architecture technology.

  • Focus: software architecture research, technical learning and career growth. Content covers: system architecture application summary, message middleware, MySQL practical exploration, professional cognitive upgrade four modules, you can be at the bottom of the public account menu “selected topics” at any time to consult;

  • You see my public profile picture is like a top, in fact, it is a moral spiral upward, so that technology and self can continue to improve.

Thanks for reading!