How to Do Architecture Design Well: A Tencent Architect's Experience
A Tencent architect explains that effective software architecture requires clear distinctions between systems, subsystems, modules and components, understanding frameworks versus structural design, applying TOGAF classifications, evolving from monoliths to microservices, and following fifteen practical principles while avoiding common misconceptions such as over‑design and technology‑driven choices.
In the software industry, there has always been debate about what architecture is. Different books and authors define architecture differently from various perspectives. Before discussing architecture, it's essential to clarify related concepts: system vs. subsystem, module vs. component, and framework vs. architecture.
System and Subsystem: A system is a group of related individuals that work according to certain rules to accomplish work that individual components cannot do alone. Key concepts include: association (related elements), rules (how elements collaborate), capability (emergent abilities beyond individual elements), and subsystems (smaller systems within a larger system).
Module vs. Component: Modules are logical units resulting from decomposing a system logically for responsibility separation. Components are physical, independently replaceable units that can include application services, databases, networks, and technology components like MQ and Nginx.
Framework vs. Architecture: A framework is a specification for component implementation (e.g., MVC, MVP, MVVM) and provides basic functionality. Architecture is about structure - the arrangement of components and their relationships.
Architecture Classification (TOGAF): Business Architecture (strategy), Data Architecture (data assets), Application Architecture (individual systems and interactions), and Technology Architecture (hardware/software capabilities).
Architecture Evolution: Monolithic Application → Distributed Service-oriented → Microservices. Each stage addresses different complexity challenges.
15 Architecture Principles: N+1 Design (redundancy), Rollback Design (backward compatibility), Design for Disable (feature toggles), Monitoring Design, Multi-active Data Center Design, Use Mature Technology, Fault Isolation, Horizontal Scaling, Buy When Non-core, Use Commodity Hardware, Quick Iteration, Asynchronous Design, Stateless Design, Forward-looking Design, and Automation.
Common Misconceptions: Architecture is only the architect's job; architects finish blueprints without implementation; seeking perfect architecture from the start; over-designing for hypothetical futures; blindly following big company solutions; choosing technology for technology's sake.
Tencent Cloud Developer
Official Tencent Cloud community account that brings together developers, shares practical tech insights, and fosters an influential tech exchange community.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.