架构的纵坐标与横坐标,你权衡好了吗?

简介:

王晔倞,现任职好买财富平台架构部技术总监,负责好买中间件及平台化的研发及运营,团队管理和实施重大技术决策。2011 年在大智慧担任测试负责人期间,针对互联网产品技术核心和重点,DevOps 的倡导者与实践者,曾建立大智慧数据平台“云测试平台”。2013 年加入好买财富,参与了整个公司应用和技术架构变迁,参与很多和系统建设,辗转过不同的业务团队,对技术与业务都有一定的深入了解。

业余时间喜欢运动、户外与画画,也维护了一个知乎专栏“草根罗汉的修行之路(kiddwyl)”,欢迎关注。



在旧文《把越来越多的服务治理好才是当务之急,服务微不微可以慢慢来》的结束语中,我有提到“对于好买来说,今年应该是推行‘平台化’以来的第2个年头,有时抬头看看,会觉得很累,路途漫漫,可当你回头看看走过的路,将会觉得成就满满”。

在这2年里,虽然实现的平台时长有这样那样的问题暴露,但总体上来讲,特别是用户操作、用户体验上还是比较有特点的

一说起 “架构”,相信很多小伙伴的脑海中都会浮现出“海量高并发”、“大促场景”、“容器化”等牛X的词语,有时在架构师的面试中,也会被问及“你们这多少台服务器”、“每秒TPS多少”、“容器化做了吗” 这样的问题。

的确,这些很重要,也充分体现了“没这点量,你还搞什么架构”的观念,可是在某些业务场景与技术策略面前,单单考虑架构纵向深度是不够的,我们还需要充分满足架构横向广度的实现


名词解释:架构的纵坐标与横坐标


首先,先用一张图来解释下“啥叫架构的纵坐标与横坐标?”


通过图中罗列的内容,相信大家已经看出,在我的理解中,所谓 架构的纵坐标 与 架构的横坐标 各代表了什么。


聊一些我们的现状


在描述现状之前,先来讲一个段子:

  • 段子背景:某技术聚会,谈论到某某公司在实施集成测试环境中mock方案时,研发与测试之间产生了互相推诿的现象,最终导致效率低下的事件

  • 其中某一段堆话:

    • ...... ......

    • A君:“怎么会有这样的事?他们老大是干嘛吃的,怎么不出来说话?”

    • B君:“出来说了呀,研发老大与测试老大的意见还不统一呢?”

    • A君:“研发老大?测试老大?你们还是按测试与运维来划分组织结构的?”

    • B君:“嗯,是啊。。。”

    • A君:“晕死。。你们居然还没有F-Team啊!?这怎么玩啊”

    • B君:“说来话长啦。。至少现在还没有,打算逐步逐步调整。”

    • A君:“这有啥逐步的,就你们老大一句话的事,说调不就调啦,我觉得就是你们老大怕担风险,不作为!”

    • B君:“...... ......

    • ...... ......


段子听完了,这位B君同学说的似乎很有道理,可我们是否可以这么设想一下

  • 假如他们系统的耦合度很高呢?

  • 假如他们业务部门不同意呢?

  • 假如他们目前找不到既懂业务而且还能Hold技术的F-Team老大呢?

  • 假如他们当前不打算重构系统呢?

  • 假如...... ......


道理人人都懂,记得之前在大智慧时期,听到过这么一段话 你绝对不是第一个看到问题的人,也绝不是第一个提出这样方案的人,为什么一直没解决呢?总有原因的,有时缺的不是方法,而是时机


好了,为了表达清晰,做了一些现状的铺垫,现在我就从 应用系统耦合结构 与 技术团队组织结构 这2个维度来说明

应用系统耦合结构


  • 描述特性:

    • 产品业务线多

    • 产品业务共享性低

    • 产品业务之间的自定义组合要求越来越多

    • 业务特性带来的强监管(如环境、灾备、拆分等)

    • 资源快速满足业务实现,技术改造周期长,见效慢(‘污染’的速度比‘治理’的速度快)

技术团队组织结构

  • 描述现状:

    • 逐步推进平台化,但各团队标准与方式各有不同

    • 平台类/中间件架构需同时满足多部门、多视角的需求

    • 流程长,决策点多,节奏慢

‘横向’架构对架构师带来的挑战

请容许我再一次把 架构 与 架构师 等同起来,立足在架构师的视角,从3个维度出发,来谈谈‘横向架构对架构师带来的挑战’


  • 对自身能力的挑战


  • 对场景符合的挑战


  • 对执行落地的挑战

再谈“架构规划与设计”

架构,是一个比较抽象的词语,架构师,却是一个实打实的“第一人称”


既然称为 “师”,那就有个性,有理想,有情感,有倾向性... ...再加上硬技能的不同,不同团队在“架构的纵坐标与横坐标”之间的权衡将通过架构规划、架构设计等方式表达出来


基于以上说明,下面我将从3个方面来描述下我们在“架构的纵坐标与横坐标”之间的权衡中的问题与经历 

我们比较喜欢



案例1:涂涂画画一黑板,指天画地一张嘴

  • 喜欢的原因:简单,方便,画一下,说一下,大家都明白了,拍个照片微信发一下,开干了

  • 纵坐标:(可以使用)通常的场景是,纯技术与纯技术一起的沟通,人为因素较少(比如加密方式、数据分布等),很容易达成共识,漏斗效应较少

  • 横坐标:(不建议使用)通常的场景是,操作/管理人与纯技术一起的沟通,人为因素较多(比如管理界面、链路监控等),表面达成共识就算过得去,漏斗效应极大


案例2:你说,我做,有问题我再改

  • 喜欢的原因:你又没说,我怎么知道要做什么,先这么做做么好来,不行就改好了,万一我规划出来的东西你不要呢?

  • 纵坐标:(可以使用)通常的场景是,纯技术自我发起的事件较多(如扩容、降级等),不用人告诉你,系统出问题,就算你再被动,也会去解决

  • 横坐标:(不建议使用)通常的场景是,业务/需求/产品发起的事件较多(如界面、流程),要的不是说改就改的效率,是专业的用户视角方案,像挤牙膏这样,最后就变成一堆“补丁架构”了

我们有点反感

如上所说,对于 架构的横坐标 我们也推行过一些方法,但都不长久


方式1: 又爱又恨的 “4+1”

  • 反感的原因:费时、费力、没鸟用

  • 为什么推行?:纵横向坚固,表达各种视角,清晰可见

  • 为什么废弃?:对架构师要求太高(无论是硬技能、软技能、经验等,无法推广)


方式2: 完全不理解的 “DDD”

  • 反感的原因:费时、费力、没鸟用

  • 为什么推行?:纵横向坚固,表达各种视角,清晰可见

  • 为什么废弃?:对架构师要求太高(无论是硬技能、软技能、经验等,无法推广)


方式3: 浪费时间的 “详细设计”

  • 反感的原因:见鬼去吧,没那么多时间,又要快又要详细,你觉得可能吗?

  • 为什么推行? :别的不说,在做之前,难道不该想的很清楚吗?拿着清晰地设计与需求交流难道不对吗?

  • 为什么废弃? :你觉得在没做之前就想的很清楚,现实吗

现在我们是这么干的

说实话,在上面一系列想法 ‘失败’ 后,平台类/中间件类的架构,在“横坐标”上让我失去平衡,没有了着力点


经过一年的不断尝试,直到17年1季度,基本在平台类/中间件类架构的“横坐标”上摸索出了一些门道:


设计阶段:按模板输出PPT

  • 故事开始:

    • Why - 痛点与现状

    • How - 怎么做才能解决?

  • 故事经过:

    • Who - 谁用?谁能获得利益?

    • User - 有哪些用户视角的突破或改变?(含应用运维、系统运维、管理员、应用接入等)

      • 当前:使用前(或前版本)的顺序图

      • 改变:使用本版本后的顺序图

      • 未来:最终希望达到的顺序图

  • 故事结尾:

    • Cost - 几个人(人/天)?多少资源(如服务器)?

    • When - 什么时候上?



上线阶段:基于WIKI给出

  • 架构全景图(概要)

  • 架构技术栈

  • 开发者指南

  • 管理者指南

  • 环境搭建指南


结束语

这篇文章写得有点长,看到这里您辛苦了,用简短的话结束吧


每家公司,每个团队,每位架构师,都有着不同的情怀与特点,所谓 “条条大道通罗马” ,在发展的过程中切记不应该照搬别人的经历,我们要做的,应该是把这些经历当成故事来看,并在相似的经历篇章中灵活借鉴


我想,这才应该是我们学习的方法吧(全文完)


来源:中生代技术

原文链接

相关文章
|
2月前
|
存储 运维 NoSQL
为什么以及如何要进行架构设计权衡?
【8月更文挑战第5天】架构设计权衡至关重要,需考量资源限制、性能与可扩展性、开发与维护成本、技术选型及安全性与可用性间的平衡。明确业务目标,评估多种方案,建立衡量指标,进行风险评估,辅以模拟测试,并经团队讨论后决策,确保架构既满足当前需求又兼顾未来发展。这是一个综合性、迭代的过程,旨在做出最合适的架构选择。
|
消息中间件 存储 NoSQL
【软件架构】软件架构权衡系列 - 第 1 部分
【软件架构】软件架构权衡系列 - 第 1 部分
|
4天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
27 2
|
19天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
19天前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
1天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
20 8
|
4天前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。