技术架构设计12原则(上篇)
在「架构能力的四个阶段」一文中,我提到我把架构的能力分为四个阶段,分别是架构原则(principles)、架构模式(patterns)、架构建模(modeling)、架构框架(frameworks)。其中第一个阶段是「架构原则」。架构原则是在架构设计领域中基本要遵守的原则,通常不会有太多条,且每一条都很简单、用处很广泛、彼此独立。我自己目前就建立了12条技术架构设计指导原则,这篇文章的目的就是为了跟iThome的读者分享这些原则。
架构原则1:不要使用Stored Procedure,因为这会让业务逻辑难以维护。资料库管理系统(DBMS)里面可以直接执行PL/SQL等程式,这种程式叫做Stored Procedure。这些年我在许多金融公司的工作经验让我发现Stored Procedure的问题重重,导致业务逻辑难以维护,应该尽量避免使用Stored Procedure。当然,不排除有人能把Stored Procedure的程式码写得非常好,有很好的抽象隔离和模组化,使得系统容易维护,但我看到的实际状况都不是如此,且Stored Procedure让业务逻辑和资料的储存结构结合得太紧密,这在未来系统调整时也会一个巨大的风险。
有人认为Stored Procedure直接在资料库内处理资料,执行效率比较好。但任何选择都有机会成本和风险,Stored Procedure非常可能会带来业务逻辑难以维护的危害,比起它带来执行效率提升的利益,大多数的情况下我们会选择「让业务逻辑好维护」。效率当然重要,但在这个时代,执行效率的提升通常会透过弹性灵活的分散式系统来达成,而不是透过单一个庞大系统效率的垂直提升。
架构原则2:一个系统内部可以包含储存和程式码,但系统间不能共用资料库。一个系统应该完整地控制自己的资料库,所有对资料库的存取都必须透过系统本身,不能直接去读写资料库,不光是不允许其他系统「写入」此资料库,就连「读出」资料也不行。如此以来,系统之间的依赖只透过API,当系统根据需要调整自己的资料格式和资料解读方式时,其他系统并不会受到影响。
架构原则3:逻辑容易变动的程式码必须剥离成另一个系统,容易变动者(例如应用系统)可以依赖较不容易变动者(例如平台系统)。提前做好这个剥离的动作,后续在业务功能变化时,好处就很明显了:需要要修改和测试的部分就会最小化,範围可控。
架构原则4:任何系统都不能依赖容易变动的系统。这一条原则和上一条原则是有关联的。容易变动的系统可能API的规格不稳定,且内部功能的稳定性也比较低,依赖这样的系统就会导致你的系统也很容易受到影响。
架构原则5:被调用方必须提供清晰、文件化的API。当我做系统设计评审时,我非常关心API设计的良窳。好的API可以让使用者一目了然,且有说明清楚的文件。关于API的设计,我的经验是「核心系统」的API要做到弹性至上,API的数量少,但每个API的参数个数比较多,这么设计的好处是可以避免核心系统经常需要修改。比较靠近应用的系统要做到使用的方便性至上,API的数量多,但每个API的参数个数比较少(且尽量让参数有预设值,可以空缺不设定)。
架构原则6:使用者界面要被剥离出来,且使用者界面内尽量不要有逻辑。使用者界面内可以有布局(layout)和操作等和业务无关的程式逻辑,但只要和业务有关的逻辑,一定要剥离出来。这么做的好处是,可以在不同的终端设备之间共用业务逻辑。
这篇文章先介绍六条架构原则,下一篇再介绍剩下的六条架构原则。
免责声明:本文由用户上传,如有侵权请联系删除!
猜你喜欢
- 张金利清华大学(张利 清华大学职业经理人培训中心教授)
- 猪猪爷爷什么意思(网络猪爷爷是什么意思)
- 我家有喜到底多少集(!)
- 初到佛山在佛山求职有什么要注意的吗(哪里找工作比较可靠)
- 求一首歌开头歌词是嘿呦(求一首歌.悬赏急!!!!!!!!!!!)
- 这什么车载高德一个北斗卫星信号都没有(北斗不是组网成功了吗)
- 湖南省吉首矮寨特大悬索桥的鬼结婚到底是什么(图能放大吗)
- 藏獒对战凶猛的老虎(za的真皙美白乳液)
- 腾讯的ff14跟盛大的ff14(最终幻想14百度跟盛大有什么区别)
- 急!!诺基亚6700c(凤舞霓裳珍藏版怎么样啊)
- nds下载站(哪有NDSI的游戏下载)
- 如何使用ImTOO(MPEG Encoder Wizard 3改变视频的相关设置)
最新文章
- 能链综合能源港里的充电站为何成为香饽饽
- 鸡蛋怎么做比较有营养(鸡蛋怎么做比较好吃)
- lol手游霞怎么出装(LOL新英雄霞与洛逆羽霞如何出装霞怎么出装)
- 穿越火线什么时候上架(穿越火线什么时候能玩)
- 北比臼舅怎么读(北比臼日怎么读)
- 创世之柱任务有什么用(创世之柱任务怎么做)
- 徐磊的歌曲(写给你的歌 徐磊乐演唱作品)
- 广州市经济适用住房准购证明怎么办理(如何取得广州市经济适用住房准购证明)
- 王者里的百里玄策怎么玩(王者荣耀百里玄策怎么玩好百里玄策介绍)
- 荡漾意思是(荡漾的漾什么意思)
- 永和豆浆和永和大王有什么关系(永和大王和永和豆浆有什么区别)
- 血尿酸(血尿)
- 中国新歌声各季冠军(中国新歌声第一季冠军亚军分别是谁)
- 微信红包有语音红包吗(微信红包新玩法语音红包)
- 蚊子会被雨砸死吗(蚊子会被热死吗)
- 电脑上免费的录屏软件有哪些(电脑上免费的录屏软件哪个好)
- 2017世界杯赛程表时间(2018世界杯赛程时间表2018世界杯赛程安排)
- cz3790航班几点到珠海(今天的航班cz3740到达珠海是几点)
- 鸡蛋羹水开后蒸多长时间(鸡蛋羹水开后蒸几分钟)
- 微博ip属地以运营商为准什么意思(微博ip属地以运营商为准什么意思)
- 进出口贸易实务教程复习(进出口贸易实务教程)
- 最好的hdmi线有什么牌子好(哪个牌子的的HDMI线更好)
- 平均发电增益高达6.91%!国电电力天津30MW光伏电站晶科N型TOPCon发电数据出炉
- 水反复烧开好不好(水反复烧开有害处吗)