谈谈架构和架构师

本文写于19年12月1日

不想当程序员的架构师不是好程序员。

写这篇文章的时候,我正坐在图书馆里,冬天的阳光透过宽大的玻璃窗户,撒在摆满了书架的地上,好久没有写文字了,突然有一种欲望:想谈谈架构和架构师。

当你提到架构两字的时候你首先想到的是什么,往往被关联到的是建筑,建筑架构的设计跟软件工程的设计的确很像,大家也都这样类比,甚至在英语中,建筑师 和 架构师 都是同一个单词 “architect”。但我觉得,软件的架构设计还要比建筑的设计复杂,软件架构是一个动态的,建筑不是。

说软件架构的设计是动态的,不觉得很贴切么,没有一成不变的架构,架构一直是在演进式的变化,以便更能服务好增长的业务而带来的需求。

架构设计,那设计是为谁服务的,是为应用程序系统服务的,那应用程序系统有什么样的需求,有两种需求:功能性需求和非功能性需求。

功能性需求,就比较好理解了,添加一个商品、修改一个商品、统计商品在一定时间段的销量报表,还有可能再给这些功能加上权限,这是功能性需求。表示的是,这个应用程序系统可以干什么。

非功能性需求,就是我们常说的是否可监控、可回退、是否具备高可用、高并发、高性能的特性,表示的是,一个应用程序在运行时的质量。

当然,还有一个更重要的需求,也是归在非功能性需求里面的,就是:快速安全的交付软件。

架构随着时间的变化演进着,人们在这方面的思考也在增加,于是,后来就有人发明了一种4+1的视图来描述架构。4代表的是4种视图,有逻辑视图、实现视图、进程视图、部署视图,1代表的是1个场景。

逻辑视图,是由研发人员来创建的,元素包含类和包,通过类和包之间的关系来实现依赖;

实现视图,由我们常使用的maven、idea等构建编译系统工具来实现,表示的是模块之间的以及组件之间的依赖关系;

进程视图,是一组运行时候的组件,他们之间如果发生关系就是依赖进程通信;

最后是部署视图,指的就是运行在机器上的进程了。最后通过业务场景来将这些视图关联起来。

依靠这样的模型可以便于说明架构,那架构的目标是什么呢,目标:“用最小的人力成本来满足构建和维护该系统的需求”。

那架构的价值是什么呢,其实先前我们在描述架构的需求的时候已经提到了功能性需求和非功能性需求,架构的价值就是对应这两种需求的,功能性需求--行为价值,非功能性需求-架构价值。哪种价值最重要呢,记住:架构价值最重要。

好了,该架构师登场了。

我们主要从两个方面来谈谈架构师,架构师是什么样的人,架构师的职责。

架构师是什么样的人,是能力最强的一群程序员,而且也必须坚持一直做程序员。他们的代码量虽然不多,但必须承接编程任务,如果不亲身承受因系统设计而带来的麻烦,就体会不到因设计不佳所带来的痛苦,随而会逐渐迷失正确的设计方向。

程序员最常接触的就是产品和业务人员,产品给你提需求,你陪产品聊需求,需求越聊越清晰。

产品人员关注的是需求对应的功能有无按照规范实现,扩展性、稳定性都是研发人员更关注。

业务人员提出业务期望给到产品人员,待系统上线后,业务人员开始推广业务,业务人员更加不会关心系统稳定性、扩展性。

但是,恰恰系统的可监控、可扩展、稳定性才是系统架构的基础。

第一职责

既然架构和建筑常来类比,我们继续打个比方。大家去楼盘买房,关注的都是户型,朝向,绿化,几乎没有人关心到这个大楼的的地基和主体结构。

而我们的架构的架构价值正如大楼的地基一样重要,因此架构师的第一个职责就是要关心架构的质量属性,也就是架构价值所强调的。乃至,需要持续地,从公司长远利益出发与其它非研发部门做抗争。

工作中常常有类似下面的三种程序员

图自网络

程序员A:“我们可以未来再重构代码,产品上线最重要”

程序员B:“在工程中容忍糟糕的代码存在,可以在短期内加快工程的上线速度,未来这些代码会造成一些额外的工作量,但是并没什么大不了”

程序员C:“我的工作是且仅是,按照需求文档编写代码,并且修复任何BUG”

第二职责

那么,架构师的第二个职责就是创建一个让需求功能实现更容易,修改更简单,扩展更轻松的软件架构。记住精力守恒定律:“你投入到程序中的精力越多,用户使用时遇到的麻烦和折腾的精力就会越少”。

图自网络

第三个职责,做一个演进式架构师,这样的架构师的职责就要分别从愿景、同理心、合作、适应性、自治性、治理、愿景分别去考虑问题。

愿景:确保在系统级有一个经过充分沟通的技术愿景,这个愿景可以帮助你满足客户和组织的需求;

同理心:理解你所做的决定对客户和同事带来的影响;

合作:和尽量多的同事进行沟通,从而更好地对愿景进行定义、修订和执行;

适应性:确保在你的客户和组织需要的时候调整技术愿景;

自治性:在标准化和团队自治之间寻找一个正确的平衡点;

治理:确保系统按照技术愿景的要求实现;

“好程序员”应该竭尽全力把程序写的通俗易懂,这样别人拿到这样的程序就能很好的理解,找起BUG来也容易,架构师首先是好的程序员,其次架构师要担当维护应用程序系统架构的架构价值的角色。

确保软件系统能够持续地提供业务所需要的功能,设计的架构应尽可能让程序员容易开发和维护。

注:文中漫画来自网络

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容