乐趣区

关于架构:一线技术人的成长思考总结

简介:作为长期奋战在一线的技术人,我粗浅领会到几个思维能力对技术人成长的重要性,纯熟使用这几种思维能够帮忙咱们疾速的进入到新的畛域,在剖析、定位和解决问题上有很大帮忙。作为长期奋战在一线的技术人,我粗浅领会到几个思维能力对技术人成长的重要性,纯熟使用这几种思维能够帮忙咱们疾速的进入到新的畛域,在剖析、定位和解决问题上有很大帮忙。

作者 | 择琨
起源 | 阿里技术公众号

一 引言

作为长期奋战在一线的技术人,我粗浅领会到如下几个思维能力对技术人成长的重要性,纯熟使用这几种思维能够帮忙咱们疾速的进入到新的畛域,在剖析、定位和解决问题上有很大帮忙。

  • 抽象思维:帮忙咱们疾速抽取面对问题的要害因素和实质,能够是其余能力的“元能力”
  • 分层思维:帮忙咱们拆解问题,分而治之,划清问题和职责边界
  • 演绎思维:帮忙咱们从共性问题中形象出问题的个别法则和得出独特论断
  • 结构化思维:帮忙咱们积淀本人的常识树,逐渐系统性的思考问题

二 形象能力

  • 什么是形象能力

提到形象,程序员第一反馈可能是 abstract,形象能力的官网解释是这样的“形象是从泛滥的事物中抽取出独特的、本质性的特色,而舍弃其非本质的特色的过程。形象表白的是一种思维形式,用来反映事物的实质和法则的办法,形象强调的是关注因素,暗藏额定细节”。

形象能力是每个人自有的一种天生能力,能够让咱们把一些类似的货色集中概括起来,临时疏忽他们之间的差别。当咱们遇到从未见过的事物时,如果可能使用“形象能力”去寻找记忆中的常识与现有的事物之间的分割,作为解决问题的要害因素,那么咱们解决问题的效率将会大大回升,比方当咱们碰到下图中左侧这个动物的时候,咱们不晓得它具体是什么动物,然而因为咱们脑海里有一个猫科动物的形象(如右侧),所以通过寻找记忆中的常识,咱们能够晓得它是猫科动物的一种,而不会直观的把它当成一匹马。

  • 形象能力的重要性

形象能力在咱们的工作中十分重要,甚至能决定一个人能力程度的下限,一个形象能力强的人,往往能从简单的景象中直击事物的实质。这也就是咱们生存中常见到的一些人总是能抓住事件的重点、总能看到他人看不到的,或者碰到问题可能疾速给出无效解决方案或思路。

  • 形象能力决定你是否能比他人疾速把握技能

作为一线程序员的外围本职工作是编程,编程的实质也是为了解决生存中的理论问题而存在的,通过形象能力把事实中的内容的实质和个性形象进去,而后形象到零碎模型上利用于工作中,通过编程的形式来解决一类问题,这也就是“设计源于生存、扎根生存,最终为生存服务”。

举一个例子,阿里西溪园区有一个做麻辣香锅的档口,比拟好奇麻辣香锅是怎么做的,正好档口的加工过程是开放式的,所以我就站在那边等餐边察看他们的加工过程,上面是一个残缺的流程:

麻辣香锅有 4 个工人,每个工人负责固定的实操,整个麻辣香锅的加工过程依照一个固定的流程扭转,各个工人之间交接的内容规范固定,比方上图:

工人 1: 负责的实操:称重、收银(刷工卡)、摆放(有序摆放),工人 1 实现摆放最初一个操作后,会把商品放到一个筐中交给工人 2

工人 2: 负责的实操:取件(有序取件)、分类(蔬菜和肉类离开)、煮熟、装碗,工人 2 依照上述流程实现本人的工作后,将加工好的商品放到一个碗中交给工人 3

工人 3: 负责的实操:取件、加料、炒熟、换碗,工人 3 将工人 2 加工后的商品依照上述流程实现炒熟的加工,炒熟后给到工人 4

工人 4: 负责的实操:取件、加配料、妥投(叫号),工人 4 负责对最初的商家做精益求精的配料加工。

实现所有的实操之后,工人 4 通过叫号的形式客户上门自取的形式实现妥投.,整个工作流程中不须要独自有个工人来指挥调度(无状态,不须要记录以后的调度节点及进度),他们会依照既定流程实现本职工作。

在回到我的工作中,我的工作内容有一部分跟协同关系比拟大,协同这部分的实质和一个麻辣烫的加工过程十分类似,区别在于一个是人之间的协同,一个是作业节点之间的协同,上面给一个协同调度流程示例:

共性形象:

这两个看似不相干的货色其实有雷同的共性,麻辣烫的每个工人等同于咱们的实操节点,他们的工作等同于生成仓作业单、下发仓作业单、仓出库等,仓出库 –> 创立配作业单等同于工人 2[装碗]之后交给工人 3,仓出库就触发了一个协同事件,触发了工人 3 的作业,仓出库的包裹就是交接的碗(交接物),通过这个咱们把事实中的事物本质形象成了调度协同的根本模型,蕴含[协同模版]、[协同节点]、[协同事件]、[工序]、[交接物],而后通过编程零碎这个能力,借助于此解决了过后域内最大的痛点:协同调度模版的爆炸式收缩和无奈动静编排的问题。因为咱们把“调度协同的实质”共性形象实现了一下,所以人造收割了一波技术红利,第一次把正逆向调度协同业务都交融进来,同时也复用到了 2C 和 2B 的其余业务域中。

上面是咱们的调度升级版后的配置化页面:

本次降级也反对了调度模版的多版本控制、失效规定、审批公布流程等,也从以前一个中心化的调度降级到无状态去中心化的服务协同,升高了零碎依赖、进步健壮性。

  • 形象能力是将简单问题简单化的重要办法

《史记》有云:“大乐必易,大礼必简。”意思是说.“大”的音乐肯定是平易近人的;“大”的礼仪则肯定是俭朴的。世界的体现尽管简单,但办法的实质却是简略。面对纷繁复杂的万事万物,迎接一直呈现的新状况新问题,说难也难,说易也易,要害看你是否把握事件的实质,简单问题简单化是进步咱们生存工作效率的正要路径,通过抽象思维把简单问题简单化的例子有很多,比方:

  • 曹冲称象

孙权送来了一头大象,曹操想要晓得大象的分量,询问他的属下这件事,但他的手下都不能说出称象的方法。曹冲说:“先把象放到大船上,在水面所达到的中央做上记号,而后将大象牵下来,再让船装载其它货色,称一下这些货色,那么比拟下就能晓得了。

  • 地铁线路图

即便不标出各个站点之间相隔的具体间隔,也没有标出它们的具体位置,仅仅只是提取了必须的信息,就能将整个简单的地铁体系简略地体现进去。咱们只有有地铁路线图,就能够晓得要怎么去各个站。

  • 零碎交接

再举一个最近产生在身边的例子,前几天的一个零碎交接会上,交接过程中总感觉有些脱漏,基于我本人记忆中的常识,我判断交接清单至多蕴含如下几个内容:

  • 零碎架构图、外围畛域模型
  • 外围业务流程、时序
  • 上下游零碎依赖、外围联系人、协定形式
  • 中间件根底资源依赖、根本账号
  • 零碎操作页面、入口
  • 以往大促保障手册、应急预案、资损盘点
  • 零碎根底监控、业务监控地址
  • 遗留线上 Bug 清单和 Owner 调配
  • 代码权限以及外围 L0 入口

其实下面都是基于对一个零碎原本该有的内容的一个形象,所有的业务零碎都具备雷同的特色,日常的形象积攒能够让工作更轻松更简略,不至于大刀阔斧、慌手慌脚,抽象思维让咱们只关注了因素暗藏了很多细节,依照下面这 9 个大类因素深刻进去,咱们面对的就是无穷的细节,细节是决定成败的要害。

三 分层思维

除了形象,分层也是咱们应答和治理复杂性的根本思维武器。日常生活中的一些分层的例子,比方咱们常常所去的大商超,店铺的散布也是有分层的思维,比方负一层个别是小吃档口 / 停车场,一层个别是化妆品 / 香水 / 黄金首饰店铺,二楼是女装、三楼是男装、四楼是儿童 / 母婴用品,在往上就是餐厅和电影院、健身房等,通过分层思维,商超将一些共性的货色划分到一起,让治理和客户生产更轻松(如个别早晨只有电影院的那层关门最晚,其余楼层绝对较早,治理上能够重点保障该楼层的用电和安保。),相似用到分层思维的货色十分多,比方新华字典收录了 8000 字,通过依照汉语拼音的程序实现所有汉字的分层,同时提供一个目录用于疾速检索。这样一个简单的问题就简单化了。在零碎架构和设计中,分层思维也是罕用的一个思维形式,比方:


(TCP/IP 协定栈的分层架构)


(操作系统分层架构)

在我负责的零碎架构设计上,分层思维也是比拟罕用的一个思维形式,比方:

  • 业务能力治理[业务逻辑的分层治理]

如上图,业务需要治理上咱们采纳三层架构的形式来进行业务管理,其本质是采纳分层的思维,划分成三层,根底层、行业层、商家层,每一次有不同的定位和职责。

a. 根底层

次要积淀业务的共性和一些根底规范和标准定义,并提供一些默认实现。

b. 行业层

次要积淀业务的个性的内容,在根底层的根底上叠加一些个性内容造成具体的行业,不同行业之间也是一个分层思维,通过不同的行业分层治理行业间的差别。

c. 商家层

次要积淀业务的共性的内容,在行业层的根底上叠加一些共性内容造成具体的业务身份,不同业务身份之间也是一个分层思维,通过不同的业务身份来治理他们之间的差别。

  • 零碎架构设计[零碎模块的分层设计]

比方在数据中心的零碎架构设计上,划分不同档次、不同的档次职责边界清晰。

通过分层的思维设计,每一层有本人的根本定位和职责边界,逐级往上提供根底能力。

a. 数据根底层

次要解决多数据源疾速接入,数据疾速造成一个宽表,外围面临的挑战是数据的品质和稳定性这方面,因为数据实时性的进步必然带来一致性的挑战,对下层提供根底数据撑持。

b. 数据服务层

次要解决业务数据的疾速服务化的问题,积淀数据开发平台来撑持,配套的服务测试、公布审批流程以及撑持多数据源接入,对下层提供数据资产服务。

c. 数据视图层

次要解决数据资产服务的权限治理问题,管制了什么人能看到什么资源以及看到哪些数据范畴,对下层凋谢,反对 appkey 的多资源订阅。

d. 数据 APP 层

次要解决数据凋谢治理的问题,通过 appkey 来订阅,目前曾经撑持异样核心、小时达实时指挥核心、算法等泛滥生产场景。

通过这四层架构分层设计,实现了数据来源于业务又回归到业务这一过程。

咱们在使用分层思维的时候也离不开形象能力,利用形象能力去提取他们的共性疏忽差别细节。

四 演绎思维

很多时候,咱们习惯了碰到问题,都心愿能疾速的解决,而疾速解决的办法很多只能是做外表工作,从外表解决,从外表上下功夫,头痛医头脚痛医脚,不查究发病的病根,看似很快,实则隐患不少,待问题再呈现的时候代价会更大,其实最快的解决问题是从根本上解决问题,尽管这样后期不能最快解决问题,投入的精力也会很多,然而投入的成本低,在没有造成顽疾的时候,提前染指,一劳永逸。

“物有本末,事有始终,知所先后,则近道矣。”,当咱们理解了一件事件的前因后果,把握了事件的本末构造 就根本探索到了事件的原本风貌,演绎思维让咱们能够从一个个具体的事例中,推导出它们的个别法则和共通论断的思维。帮忙咱们寻找问题的根因,从而隔靴搔痒解决问题。演绎思维的办法有很多在此不做探讨,生存中使用到演绎思维的例子有很多。天空乌云密布,燕子低飞,蚂蚁搬家等景象时,咱们会得推断说天要下雨了。还有很多比方立冬晴一冬凌,立冬阴一冬温等等。演绎思维利用于工作中,能够帮忙咱们通过个别问题演绎推演出一类问题的共性和法则,采取正当的计划解决问题,举几个身边的例子:

  • 开发人员运维投入老本的问题

部门成立初期因为业务上的变动较大,为了撑持业务,底层数据模型的做了一次降级,新增了局部数据模型,兄弟团队或者业务经营同学常常会丢一个单子过去让开发同学人工帮忙查单据状态、物流进度、单据关系等,这个造成了值班的开发同学编码工夫常常被打断,效率降落,所以咱们演绎推演了下剖析问题的实质是【运维工具上的缺失】,基于此问题根因孵化了 < 火尖枪 > 和 < 乾坤圈 >,升高了开发同学的运维投入的问题。

  • 火尖枪

依据任意单号疾速查问全链路数据的工具,实现从交易场到物流场全链路数据一键查问。

  • 乾坤圈

通过单据的生命周期和单据之间的关系治理积淀了 ”AAR” 模型,实现任意单号 / 关键字全链路日志搜寻并依照理论产生工夫链式展现。

  • 业务疾速剖析的问题

为了更好的撑持业务接得快、改的少、让零碎更加高可用,FY22 财年针对目前零碎架构做了一次降级,本次降级和以往不同的是:技术和业务撑持同步进行且有人员资源上的问题,抽调了一部分负责数据和异样较多的同学来加入架构降级,所以一个问题就呈现了:对线上业务的理解和差别剖析。这个理解不独自是晓得业务是什么,要晓得线上的业务所有细节,包含这个业务下的一个开关在做什么。这个对于过后加入的同学和架构来言都是一个很大的挑战。通过演绎总结,咱们把一些好的案例规整当前产生出了一个业务梳理纲要,依照这个纲要去梳理业务,同时继续欠缺这个纲要。让所有同学都能够先有一个大的视角来看,疏忽一些细枝末节。梳理的业务纲要如下:

1. 通用资料库

2. 作业模版剖析

3. 业务身份剖析

4. 实操节点 (仓、运、配等) 接入形式剖析

5. 调度协同剖析

6. 售中逆向剖析

7. 售后逆向剖析

8. 财务 / 库存剖析

9. 外围业务流程剖析

10. 数据库关键字段剖析

11. 播送音讯汇总

12. 业务剖析汇总

13. 线上示例单据 & 音讯整顿

14. 要害报文

15. 单据属性比照

16. 畛域音讯比照

17. 架构降级新增测试点

18. 特地测试场景揭示

19. 自测案例

继续的演绎总结,不仅是让工作做的更好更轻松,更多的是对本人一直产生出滚雪球的收益,所以从这个需要 / 这个问题排查开始,多问几个为什么。

五 结构化思维

先来看下上面这些数字,而后再 10 秒内说出所有数字和字母

2, 4, f, 8, n, 4, 2, 3, 7, d, b, a, h, e, k, m, i, 3, g, j, 9, 6, 5, 1, 1, 0, c, l

面对这样一堆没有任何法则的数字,如果要记下来是不是有点难?如果咱们把这些数字的内容调整下,变成上面这样:

0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n

是不是清晰了很多?

其实这波及到了结构化思维:当人接管到大量芜杂信息时,解决简单信息的能力无限,然而更偏爱有法则的货色。咱们每天工作生存中都会接管到大量信息,如何把这些信息排汇并结构化为我所用就须要构建本人的常识树。比方下面的业务梳理纲要的例子,其实咱们就构建了一个本人的常识树,通过它咱们能够检索咱们须要的信息,好的常识树能够借鉴,然而每个人都有本人的一个思维形式,如果没有内化成本人的或者不是本人构建的常识树无奈纯熟的应用。

结构化思维指从整体思考到部分,是一种层级明显的思考模式。简略来说就是借用一些思维框架来辅助思考,将碎片化的信息进行系统化的思考和解决,从而扩充思维的档次,更全面地思考。没有结构化的思维是零散凌乱无条理的想法汇合,而结构化思维是一个有条理有档次,脉络清晰的思考门路,让这些点连成了线,举一个罕用的问题解决办法思维框架:

依照这个思维框架,很多问题的解决都能够用的上,比方下面举过的一个数据中心的例子,利用这个思维框架后,根本思维门路如下:

六 总结

一线技术人每天面临的都是写需要、改缺点、查工单,加班,长此以往。有时候无妨跳进去以一个旁观者的身份看一看本人,做一个需要前多问几个为什么?写一段代码前先理一下逻辑思路,需要公布当前想一下怎么运维(最好的是让没做过这个需要的人也晓得怎么解决工单,突破常识壁垒和人员壁垒),在这个域积淀的货色如何复用到另外一个域。咱们面临的业务是变动的然而做事的办法是有共性的,如何积淀这些共性的做事办法才是做业务需要带来的最大成长。

抬头走路,低头看天,长路漫漫,不忘初心 — 自勉

原文链接
本文为阿里云原创内容,未经容许不得转载。

退出移动版