02.一文搞懂架构设计的目的
02.一文搞懂架构设计的目的
架构设计的误区
对于架构设计,很多人都有误解。
有人认为架构很重要,所以任何项目都必须做架构设计,但他们忽视了一个事实,即使没有精心设计的架构,很多创业公司的初期产品也能运行,过分强调架构设计反而不会有好的收益。
还有些人认为,架构设计可以提高研发效率,但其实简单的设计往往更高效。架构设计需要时间和资源,如果把这些资源用在写代码上,项目可能会更快完成。
还有一种误区认为,大厂的项目都会做架构设计,考虑高并发、高性能、高可用性,所以我们也要做。
由于大厂的成功,以及从这些大厂来的技术专家,项目在决定架构时,最有说服力的话就是“阿里就是这么做的”,“腾讯就是这么做的”。
大公司的经验和成功模式很重要,值得学习,但盲目抄袭大厂架构,会使架构过于复杂,导致项目难以实施和维护,甚至影响团队的协作和系统稳定性。
不做架构设计,会有什么问题?
如果不做架构设计,说明你的系统还不够复杂。
但随着业务增长,系统会从单体应用变为分布式应用,系统变得越来越复杂,技术团队可能会分化为多个专门的团队,每个团队维护一批职责相关的应用。
如果没有架构设计,系统会变得混乱不堪,出现以下痛点问题:
- 应用边界模糊:研发人员胡乱拆分应用,没有基于当前业务出发,也没有明确的拆分原则和规范。导致了系统进入无序状态,大幅降低开发效率。
- 应用缺乏模块化设计:项目中所有功能代码混在一起,没有明确的模块划分,导致一个小改动牵一发而动全身,产生各种意外bug,后续修改和扩展困难。
- 团队协作效率低:没有明确的架构设计,团队成员无法理解各自的工作和依赖,导致频繁沟通、扯皮,影响开发进度和产品交付时间。
- 技术架构失控:不同的研发团队使用不同的技术或组件,导致公司内部的技术架构失控。研发人员为了追求时髦,不断引进新技术,但缺乏深度,导致出现各种问题,很难快速定位和修复,团队疲于奔命。
架构设计的目的是什么?
架构设计的目的是为了解决系统复杂度带来的问题。
通过架构设计,对系统进行有序的重构,降低系统的“熵”,使系统持续进化,从而改进软件质量,提高效率,满足当前业务的发展,并能快速扩展。
虽然结论很简单,但明白了架构设计的真正目的,我们就不难判断,在什么场景下,需要真正去做架构设计:
需求相对复杂
在需求复杂的情况下,系统可能涉及多个业务领域、复杂的数据处理流程,架构设计帮助我们理清系统的核心要素和关系,明确每个部分的职责,确保系统模块化并易于维护。
满足非功能性需求
例如,对于大型电商系统,性能、安全性、可用性、可扩展性等非功能性需求都至关重要。
架构设计要保证系统在高峰时期也能高效运行,通过运用负载均衡、缓存和读写分离等架构方案可以实现这个目标。
系统生命周期长
对于长期使用和发展的系统,架构设计时,要考虑未来可能的变化,包括新功能迭代、业务量增长带来的系统挑战等。
业务变革的需要
例如,电商平台决定从B2C模式扩展到B2B或C2C模式,这通常涉及业务流程调整、产品功能变更。架构设计确保这些新功能能顺利集成,不影响现有系统的稳定性和扩展性。