系统架构的11条原则

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 系统架构的11条原则

基本原则

 


原则一:价值为王

 

解析:


价值为王的另一种说法叫做YAGNI。YAGNI 是 You aren’t gonna need it 的缩写。该原则的基本含义就是,不应该开发任何当前不使用的功能。因为这些占用开发成本的功能,可能根本没有人用。而且不仅仅是开发成本打了水漂,你还要不断投入维护成本,来保证这些无人使用的功能可以正常运行。


要了解阿姆达尔定律,它告诉我们,我们不可能无限制的提升系统某一部分的效率。要提升的总体效果有没有产生相应的价值。

 

原则二:以终为始

 

解析:


以终为始是一种思维模式,最早出自《黄帝内经》,先人是在告诫后人要在人生的春天就认真思考人生终点的意义和价值。其引申义有三:一是凡事要有目标;二是凡事要有计划;三是凡事要有原则。正所谓“凡事预则立,不预则废”。


白话来说,以终为始,就是在做事之前,先想想结果是什么样子的,这个结果是否能达到最初的目标。小心X-Y问题:为了解决 X问题,觉得用 Y 可以解,于是研究 Y 问题,结果搞到最后,发现原来要解决的 X 问题。

 

原则三:分治原则

 

解析:


做架构时不要想着一次性把所有的功能都做好,要拥抱 MVP(Minimal Viable Product),最小可运行版本。先让程序完成最基本功能上线,根据反馈调整和决定下一步的迭代。


迭代着去做事情,敏捷开发的思路。对于每个功能点,创建里程碑,然后去迭代。

 

原则四:服务自治

 

解析:


在系统设计时,要考虑服务上线后,对于问题要自感知、自修复、自优化、自运维及自安全。

 

原则五:拥抱变化

 

解析:


重视架构扩展性和可运维性。无状态的系统的是可扩展的和直接的。任何时候都要考虑这一点,不要搞个不可扩展的,有状态的东东出来。否则,一旦需要改变,成本很高。

 

原则六:简单即正义

 

解析:


简单即正义的另一种说法叫做KISS。KISS(Keep it simple,sutpid)保持每件事情都尽可能的简单。用最简单的解决方案来解决问题。

 

原则七:尽量自动化

 

解析:


人力成本既慢又贵,还有经常不断的人工失误。如果不能降低人力成本,反而需要更多的人,那么这个架构设计一定是失败的。

 

稳定性原则

 


原则八:依赖最简

 

解释:


依赖原则是去除依赖、弱化依赖、控制依赖。多一个依赖多一分风险。能不依赖则不依赖,能异步弱依赖不要同步强依赖。实在不能弱依赖的,比如必须要调用加密存储来获取数据库的密码,不然无法连接数据库,可以控制获取密码在服务启动时进行,如果获取不到则服务启动失败,因为现在都是集群部署,一台无法启动不影响整体提供服务。

 

原则九:不作不死

 

解释:


尽可能的做较少的功能。当有疑问的时候,就不要去做,甚至干掉。很多功能从来不会被使用。最多留个扩展点就够了。


等到有人提出再说(除非是影响核心流程,否则就等到需要的时候再去做)。

 

原则十:容灾容错

 

解析:


Everything fails! 人都是要死的,机器都是要坏的。如果一件事情有可能发生则在生产环境中一定会发生,架构中要做好容错设计。

 

原则十一:用成熟的技术

 

解析:


不要给别人的技术当小白鼠,不要因技术本身的问题影响系统的稳定。尽可能的使用红利大的主流技术,而不要自己发明轮子,更不要魔改。在技术选型上,千万不要被——“你看某个公司也在用这个技术”,或是一些在论坛上看到的一些程序员吐槽技术的观点(没有任何的数据,只有自己的喜好)来决定自己的技术,还是看看主流大多数公司实际在用的技术栈,会更靠谱一些。

 

总结

 


一张图总结今天的内容:


1112728-20220414190836424-1178288153.png

相关文章
|
7月前
|
敏捷开发 缓存 架构师
Apache 架构师总结的 30 条架构原则
Apache 架构师总结的 30 条架构原则
83 0
|
4月前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
5月前
|
NoSQL Redis UED
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
|
4月前
|
消息中间件 监控 Java
解锁Spring Cloud微服务架构的奥秘:深度剖析拆分原则,打造高内聚低耦合的业务创新引擎!
【8月更文挑战第3天】踏入微服务领域,Spring Cloud以丰富组件助力高效系统构建。微服务拆分需遵循原则确保系统高内聚低耦合且能适应变化。首要原则为单一职责,每个服务专注一个业务功能,降低复杂度并提高可维护性。其次,追求高内聚低耦合以减少服务间影响。围绕业务域拆分有助于保持逻辑清晰及团队协作。处理数据一致性问题时,考虑采用最终一致性模型。Spring Cloud提供Eureka、Zuul/Gateway、Sleuth和Config等工具支持服务发现、路由、跟踪及配置管理,共同构建灵活健壮的微服务架构。
95 2
|
5月前
|
存储 设计模式 前端开发
软件架构设计的原则与模式:构建高质量系统的基石
【7月更文挑战第26天】软件架构设计是构建高质量软件系统的关键。遵循高内聚、低耦合、单一职责等设计原则,并灵活运用分层架构、微服务架构、客户端-服务器架构等设计模式,可以帮助我们设计出更加灵活、可扩展、可维护的软件系统。作为开发者,我们应该不断学习和实践这些原则与模式,以提升自己的架构设计能力,为团队和用户提供更加优秀的软件产品。
|
4月前
|
边缘计算 Kubernetes 持续交付
构建高效后端系统:面向未来的架构设计原则
【8月更文挑战第8天】在技术飞速发展的今天,后端系统的架构设计显得尤为关键。本文将探讨如何通过采用微服务、容器化及自动化等现代技术手段,来构建一个可扩展、高可用且易于维护的后端系统。我们将深入分析这些技术背后的原理及其在实际场景中的应用,同时也会讨论如何在保障数据一致性和系统安全性的前提下,提升系统的响应速度和处理能力。
|
5月前
|
搜索推荐
业务系统架构实践问题之有效地实现“域间不可见”原则问题如何解决
业务系统架构实践问题之有效地实现“域间不可见”原则问题如何解决
|
5月前
|
监控 Java API
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
86 0
|
5月前
|
XML 缓存 API
REST原则、RESTful架构
REST原则、RESTful架构
62 0
|
7月前
|
敏捷开发 监控 测试技术
软件架构的艺术:探索演化之路上的18大黄金原则
实际工作表明,一步到位的设计往往不切实际,而演化原则指导我们逐步优化架构,以灵活响应业务和技术的变化。这不仅降低了技术债务和重构风险,还确保了软件的稳定性和可扩展性。同时,架构的持续演进促进了团队协作,激发了成员间的知识共享与技能提升。
145 0
软件架构的艺术:探索演化之路上的18大黄金原则