Java

架构大图-全局架构治理的未来

2021-01-28  本文已影响0人  adam_go

序言

该篇文章由我的好朋友飞哥完成,倾注了公司全局架构组以及各个领域专家、技术专家以及业务负责人的建设性理念。本人很荣幸参与到架构大图讨论之中。也希望这篇文章在大家架构建设及治理上贡献一份力量。

一、现状

二、愿景

无论是全局架构师、垂直领域架构师,他们都需要一把利剑:架构大图。之前没人做出来过,而现在我们要做。

1、 可见

可见分为四个关键子能力

1.1、架构元数据"可见"

架构元数据"可见"是后面变更可见、服务级别可见、服务目标可见的基础。分为两个关键:元数据结构和浏览方式


1.1.1 元数据结构由来

怎么才能跟上时代的变化,架构的变化,从互联网到移动互联网,从传统零售到新零售...现在我们思考的是:究竟什么才是隐藏在诸多变化背后不变的东西?什么才是支配着万千变化的那双看不见的手?
追随前者会让我们疲惫不堪,迷失不断变化的幻象当中;而找到后者,则能让我们拥有一颗坚定的心,并拥有长期主义的心态。
架构大图追求的是长期主义,并使用基于领域的概念来结构化元数据。为什么用领域,先来唠叨下几个变和不变:

看了上面的内容就能明白商业压根就不关心后面是不是分表分库、是否使用了设计模式、是否写了100多个分支的if else。业务最关心的是用什么能力来支撑“业务的运转机制”。这个“业务运转机制”就能够帮助业务主角产生价值,而这个产生价值的过程就是价值链:

以上就是业务价值链的业务环节,每个业务环节都可以用一个或多个领域去支撑。架构大图的顶层结构我们按照领域来划分。


1.1.2 元数据结构说明

1.1.3 元数据浏览方式

浏览方式需要做到像高德地图那样的体验,分为以下三点:

1.2 变更"可见"

不是指所有的变更记录可存储可查询,因为这些都有了。而是在"架构元数据"搭建完的基础上把运营、代码、中间件等变更都串起来,把变更影响哪些业务、业务环节、业务用例、业务主角,以及影响到什么程度都可视化出来,否则一个变更窗口出现故障,那么多变更怎么去缩小影响呢?goc得拉个故障群问一堆人到底是怎么回事?但这个过程直接影响到1/5/30的指标。

1.3 服务级别"可见"

由于业务影响的定义,B、C类里面是不需要分级的,A级对于交易影响进行再分级。

1.4 服务目标、服务协议"可见"

有一个大佬说过:"如果你无法量化一件事,你就无法改进它"。Google SRE 里面定义了三个名词,SLO、SLI、SLA,这里的SL是service level,服务级别,而I、O 、A分别是indicator、object与agreement。和架构大图关联后可以做到业务链路覆盖率精准检查。

2、可控

在可见建设完以后,才有能力去做可控。可控能力分为两个关键

1、架构"可控"

架构大图可见以后,我们是不是有"自信地"引入架构评审机制,为什么是"有自信"呢? 因为架构不可见之前,架构师面对评审,时常两眼一抹黑。有三个问题:

2、稳定性"可控"

稳定性一般都有一套技术风险体系,但是大家还是觉得很难做,两个关键原因:

为了解决这两个难做,在实现了架构大图"可见"之后,来说下如何做到稳定性可控,一共有三项:

2.1 SLO风险巡检

2.2 预案体系

故障快速定位和止损的理想处理方式是故障业务定位(架构大图协助)和预案执行打通,当发生故障时,能够判断出故障业务定位、影响、以及对应的预案,并触发预案进行执行。当然实际的故障处理过程中有很多地方需要考虑,虽然并不是所有故障都能提前建立响应的预案,但我们可以根据历史故障和一些先验知识将故障进行归类,建立相应的预案。另外建立预案时,要方便预案执行和触发。如果不方便的话很难短时间内处理故障,最关键的问题是判断预案触发的时机,以及当前是否应该执行预案。

线上服务故障大体可以归类为如下原因:

2.3 链路风险报告

在架构大图可见中的元数据结构中每个用例的case就对应一个调用链路,这为链路风险分析报告提供了基础,让我们清晰看到哪些业务场景下面有链路风险。

链路风险分析就是从链路通信的历史数据出发,分析出链路当前存在的风险,减少链路通信的隐患,提高系统的整体稳定性。链路风险分析可以解决的问题域很多,如超时时间设置是否合理、重试次数设置是否合理、服务SLA指标设置是否合理、服务强弱依赖关系是否符合预期,服务通讯相关的一大部分问题是由于链路风险导致的,可以通过链路风险分析的方式提前发现和解决,避免故障发生。

链路风险分析的基础是链路实时trace指标,我们把这些数据离线抽取过来做分析。

下面介绍四种典型链路风险项:

上述两种超时风险均可以通过链路风险分析来解决。思路其实很简单,离线收集trace指标数据,通过trace数据分析当前服务访问的各分位耗时,比如99.99分位耗时是50ms,把要求的分位耗时和超时配置进行比较,如果差异过大,就存再超时配置风险。实际超时配置修复时,可以使用上述分析分位耗时作为基数,然后加上一个偏移Buffer。基数较小时,可以加上固定偏移(如5~50ms),如果基较大时,可以使用固定倍数的偏移(如1.1~1.5倍)

最后总结下架构大图的能力

可见

可控

上一篇 下一篇

猜你喜欢

热点阅读