Architecture design and architecture thinking

Foreword

Kind of stick method is not necessarily Gai, such as Yang Guo.
Kind of stick does not necessarily law can not be when Gai, such as Qiao Feng.
Architect architecture does not necessarily have a title, there are architects who does not necessarily know the title of architecture, or have a chance to participate in architectural design.
For programmers, even without the architect's title, we can also train their architecture effort, as long as the martial arts, as smartly travels.
Next, chat Architecture something

First, the good architect What are the characteristics

  1. Good technology. At least the code easy to read, easy to extend, reuse is good, not only need to learn object-oriented and design patterns, but also by a large number of coding practices, not just stop at the planning stage
  2. Understand the business. Do not understand the business, you can not fit the business architecture design, and knowledge of the industry is not a short time can be accumulated.
  3. Good communication skills. Architects need to communicate identify needs, teams need to understand the architecture.
  4. There are architectural thinking. Know how to use abstract, divide and conquer, reuse, reduce iterative software complexity thinking, etc.

Second, what is architecture design

Architecture design is to use the least cost to meet the manpower needs of the development and needs change, with minimal operating costs to protect the software is running.
Commonly used methods such as:

  1. The use of micro-service architecture, the system splits the complex into a series of small service, and then split into functional modules, allowing staff to better division of labor
  2. Before and after the end of the separation, the programmer focus on a particular field of knowledge, reduce development effort
  3. Hierarchical design, separation of business logic and reduce the impact of requirement changes

Third, why need architecture

  1. Let technology needs become complicated. Make a blog and do a Google, the complexity of the technology is not a level
  2. Staff make technical complexity. Software developed by a team member is not the same level, good technical direction is not the same, how to collaborate effectively is a big test.
  3. Technology itself is complicated. Software projects using programming languages, frameworks, components, databases, artificial intelligence, big data technologies, have learning costs
  4. Let the stable operation of the software is also complicated. After the completion of software development on-line, full of uncertainties, such as cloud service providers may freeze, such as star send a microblogging can cause system failures, but such was deleted library Paolu

Because there are more than these reasons, we need to design the architecture to reduce these complexities

  1. Reduce development costs. Complex systems split into multiple relatively simple services, such programmers of ordinary can be done to reduce labor costs.
  2. Help people organize efficient collaboration. By abstracting and split, so that developers can complete functional modules independently.
  3. Organize a variety of techniques. Select the appropriate programming language, protocol, frame, and other components, to achieve the most efficient demander
  4. Security services and stable operation. The use of sophisticated infrastructure programs, such as load balancing, current limiting, demotion, fuse, thus guaranteeing high availability services.

Fourth, what is the architecture thinking

Reduce the software complexity, there are several effective ways: abstract, divide and conquer, reuse and iterative, architecture thinking that these collections

  1. Abstract thinking
    architecture to meet business demand exists, usually need some descriptive text of the prototype, UI design, which will eventually turn into the machine code for execution.
    We have to be abstract, the model needs to become computer can recognize.
    For example, the abstract individual users, orders, content model, draw the way the various roles and responsibilities of object interaction, hide a lot of irrelevant details.
  2. Divide and Conquer thinking
    of the complex system of divide and rule, broken down into smaller, simpler parts.
    For example, high concurrency scenarios, the flow can be designed into different servers to avoid overloading a single server.
    As another example, a 1000-line function, packaged as N independent no more than 50 rows of function calls
  3. Multiplexing thinking
    reuse is the most simple and effective way to enhance the development efficiency by abstraction of the same content can be re-let for different scenarios.
    Many beginners like to copy and paste the code program, if the requirements change, need to modify the pasted all over the place, the development of low efficiency and difficult to maintain, but also waste a lot of testing effort.
  4. Iterative thinking
    good architecture evolution is over, there is little architecture in one step, we need to ensure that the foundation does not affect the normal progress of the business, and gradually into the final iteration of rational architecture

Guess you like

Origin www.cnblogs.com/chenqionghe/p/12549664.html