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

简介:

王晔倞,现任职好买财富平台架构部技术总监,负责好买中间件及平台化的研发及运营,团队管理和实施重大技术决策。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给出

  • 架构全景图(概要)

  • 架构技术栈

  • 开发者指南

  • 管理者指南

  • 环境搭建指南


结束语

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


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


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


来源:中生代技术

原文链接

相关文章
|
存储 运维 NoSQL
为什么以及如何要进行架构设计权衡?
【8月更文挑战第5天】架构设计权衡至关重要,需考量资源限制、性能与可扩展性、开发与维护成本、技术选型及安全性与可用性间的平衡。明确业务目标,评估多种方案,建立衡量指标,进行风险评估,辅以模拟测试,并经团队讨论后决策,确保架构既满足当前需求又兼顾未来发展。这是一个综合性、迭代的过程,旨在做出最合适的架构选择。
293 4
|
消息中间件 存储 NoSQL
【软件架构】软件架构权衡系列 - 第 1 部分
【软件架构】软件架构权衡系列 - 第 1 部分
|
4月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
417 3
|
7月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
603 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1510 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型