写点什么

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

  • 2020-04-17
  • 本文字数:2481 字

    阅读完需:约 8 分钟

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

在这 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 给出


  • 架构全景图(概要)

  • 架构技术栈

  • 开发者指南

  • 管理者指南

  • 环境搭建指南




本文转载自头哥侃码公众号。


原文链接:https://mp.weixin.qq.com/s/d1MMp86xPTqCxRrLcVs7NQ


2020-04-17 15:041352

评论

发布
暂无评论
发现更多内容

YashanDB数据库多租户环境下的隔离策略

数据库砖家

YashanDB数据库分布式架构详解与部署教程

数据库砖家

YashanDB数据库高效备份恢复操作详解

数据库砖家

YashanDB数据库分布式事务机制深度解析

数据库砖家

YashanDB数据库高可用架构搭建实用教程

数据库砖家

CAD外部参照未找到文件是怎么回事?

在路上

cad cad看图 CAD看图王

RPC的三大问题:跨语言、跨平台通信的终极解决方案是如何炼成的?

poemyang

网络协议 RPC RPC框架

YashanDB数据库多租户数据隔离实践分享

数据库砖家

YashanDB数据库分布式架构下的数据一致性实现

数据库砖家

YashanDB数据库高并发写入优化实用技巧

数据库砖家

YashanDB数据库高性能设计及优化实战分享

数据库砖家

什么是海外舆情监测?为什么品牌出海必须拥有海外舆情监测系统?

沃观Wovision

舆情监控 沃观Wovision 舆情监测系统 海外舆情监测

仓颉之并发编程的速度激情

华为云开发者联盟

高并发 仓颉 华为开发者空间

框架大冒险:开发者的奇幻之旅

华为云开发者联盟

tensorflow PyTorch mindspore 华为开发者空间

YashanDB数据库服务稳定性及高可用配置方法

数据库砖家

YashanDB数据库高可用架构建设实战

数据库砖家

YashanDB数据库高效索引设计及维护技巧

数据库砖家

大数据-79 Kafka 监控从入门到实战:度量体系、JMX采集与可视化告警全流程 Prometheus、Kafka Eagle

武子康

Java 大数据 kafka 分布式 消息队列

YashanDB数据库分布式锁实现及应用

数据库砖家

YashanDB数据库高性能存储引擎设计

数据库砖家

YashanDB数据库高可用集群快速部署教程

数据库砖家

YashanDB数据库高可用配置及演练实务

数据库砖家

CAD怎么入门?看这一篇就够了,超详细的CAD入门教程

在路上

cad cad看图 CAD看图王

YashanDB数据库故障恢复自动化流程分享

数据库砖家

YashanDB数据库分布式事务及高可用架构介绍

数据库砖家

YashanDB数据库分布式索引设计与性能提升技巧

数据库砖家

YashanDB数据库分片策略及数据迁移实操指南

数据库砖家

YashanDB数据库服务的高可用集群搭建指南

数据库砖家

YashanDB数据库多线程查询性能提升方法

数据库砖家

YashanDB数据库多租户架构设计与安全隔离

数据库砖家

YashanDB数据库分布式架构设计方法详解

数据库砖家

架构的纵坐标与横坐标,你权衡好了吗?_架构_头哥侃码_InfoQ精选文章