写点什么

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

  • 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:041143

评论

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

一周信创舆情观察(1.18~1.24)

统小信uos

2021分享三面阿里:Java面试核心手册+Java电子书+技术笔记+学习视频

比伯

Java 编程 架构 面试 程序人生

同事有话说:ThreadPoolExecutor是怎么回收线程的

Java 程序员 面试

面试官:一年跳槽三次,你是怎么做到的?

程序员阿沐

程序员 面试 软件测试 测试工程师

听说隔壁班的程序员给女友做了个智能风扇

智能物联实验室

物联网

nacos 配置中心自动化运维之namespace坑

Sky彬

nacos

内存数据库解析与主流产品对比(一)

星环科技

数据库 大数据

译文《全新首发JDK 16全部新特性》

潘大壮

Java jdk JVM

PostgreSQL使用clickhousedb_fdw访问ClickHouse

PostgreSQLChina

数据库 postgresql 开源 软件

【Skeleton】按钮

德育处主任

CSS 大前端 CSS小技巧 28天写作 纯CSS

Redis核心剖析:为什么这么“快”的秘密

Java架构师迁哥

从零开始学习Git

ITCamel

git

自动化测试现状趋势解读,附带近年自动化测试常用工具

程序员阿沐

程序员 软件测试 自动化测试 测试工程师

图解分析:Kafka 生产者客户端工作原理

李尚智

kafka 中间件 消息队列 消息中间件

关注直播 走近滴滴夜莺K8S监控组件

滴滴云

k8s 滴滴技术 监控告警 滴滴夜莺

一文读懂Java动态代理

潘大壮

Java jdk 动态代理

JDK源码深度学习!阿里P9架构师终于总结出了这份“源码级”的笔记了

Java架构追梦

Java 源码 架构 jdk 面试

LeetCode题解:389. 找不同,位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

滴滴开源Logi-KafkaManager 一站式Kafka监控与管控平台

滴滴云

kafak 滴滴开源 监控告警 运维平台

内存数据库解析与主流产品对比(二)

星环科技

数据库

毫不留情地揭开负载均衡的真面目~

田维常

负载均衡

阿里P8大牛亲自教你!实战讲述Flutter跨平台框架应用,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

产品利益相关者分析

LT_product_elearning

免费ETL批量调度,任务调度,作业调度自动化运维工具Taskctl Web

敏捷调度TASKCTL

大数据 kettle 海豚调度 自动化部署 ETL

互斥锁 vs 自旋锁

行者AI

互斥

Alibaba最新产物手册宝典:分布式核心原理解析,简直是Java程序员福音!

996小迁

Java 架构 面试 分布式

厌倦了EXCEL想玩点新花样?教你利用Python做数据筛选(下)

智分析

Python

一文读懂HTTP协议的昨天,今天与明天

后台技术汇

28天写作

一文告诉你Java日期时间API到底有多烂

YourBatman

LocalDateTime Date JSR310 Calendar

kotlin下载!我们究竟还要学习哪些Android知识?Android岗

欢喜学安卓

android 程序员 面试 移动开发

软件测试在不同应用场景中,我们该如何进行测试呢?

程序员阿沐

编程 程序员 软件测试 教程 测试环境

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