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

简介:

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

  • 架构全景图(概要)

  • 架构技术栈

  • 开发者指南

  • 管理者指南

  • 环境搭建指南


结束语

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


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


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


来源:中生代技术

原文链接

相关文章
|
7月前
|
存储 运维 NoSQL
为什么以及如何要进行架构设计权衡?
【8月更文挑战第5天】架构设计权衡至关重要,需考量资源限制、性能与可扩展性、开发与维护成本、技术选型及安全性与可用性间的平衡。明确业务目标,评估多种方案,建立衡量指标,进行风险评估,辅以模拟测试,并经团队讨论后决策,确保架构既满足当前需求又兼顾未来发展。这是一个综合性、迭代的过程,旨在做出最合适的架构选择。
|
消息中间件 存储 NoSQL
【软件架构】软件架构权衡系列 - 第 1 部分
【软件架构】软件架构权衡系列 - 第 1 部分
|
3月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
4月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
94 3
|
4月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
3月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
359 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
1月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
|
4月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
110 1
服务架构的演进:从单体到微服务的探索之旅

热门文章

最新文章