Redian新闻
>
架构自治服务:构建数据驱动的架构洞察

架构自治服务:构建数据驱动的架构洞察

科技

架构自治服务是一种面向架构分析领域的数据自助服务。它提供了一种集成一体的数据分析方案,让开发人员、架构师、管理者等可以根据不同任务,自由搭配、组合出适用于自身洞察需求的任务/函数。

最近,刚好看到两本书名非常有意思的书:《持续 API 管理》、《数据自助服务实践指南》,前者书的内容对不起大纲,后者书的标题对不起内容 —— 内容是好内容,但是标题不对。原书的标题是《The Self-Service Data Roadmap》,重点在于介绍各种数据自助服务的模式和路线图。

回到正题上来,这两本书的书名让我开始思考两个问题:1. 如何构建持续的架构治理?2. 如何构建架构的自治服务呢?只有达到自助 + 持续性之后,开发人员才可以实现架构自治。另外一个方面,从数据治理的角度来看,架构治理本身也是数据。而在数据领域,自助服务已经是数据民主化的重要趋势(源自《大数据湖最佳实践》)。这一点可以从流行的 Tableau、Apache Superset 等看到。

为什么我们考虑架构自治服务?

Log4j 的跟踪

我们从 SourceGraph 的 Insight 工具上获得了启发,在这个工具的 Demo 上,它提供了一个 Log4j 版本的趋势跟踪。开发人员可以通过编写表达式,诸如于: >= 1.12.0 的方式来进行数据统计。于是,我们又一次地迎来了 aha 时刻:这不就是在过去的几个月里,诸多 ArchGuard 用户面临的一类痛点吗?对于的 IT 大型组织来说,从治理的层面来说,这种跟踪能提供更高的全局视野。

改变是一种进行时

从一个 “无序” 的状态到一个 “有序” 的时期,都需要一个很长的过程。这种缓慢的过程里,每个人或者组织的应对方式都是不同的,有的是可视化,有的是通过数据。不论采用的是何种方式,它都需要对于进行时的数字化。

最佳实践的局限性

技术专家的日常,总是会向人传播各种 “最佳实践”,那并不是人们所需要的。于多数人而言,他们更想要的是能解决当前的问题,需要的是一种最好的实践。这种实践可能是代码上的实践,分层架构上的实践,边界划分上的实践。除此以外,看上去 “标准化” 的架构度量模型,往往很难以在多数大型组织上适用。

什么是架构自治服务?

启发于《数据自助服务实践指南》,我们便开始探索什么是架构自治服务务。我们称架构治理类型的数据自助服务,称为架构自治服务:

架构自治服务是一种面向架构分析领域的数据自助服务。它提供了一种集成一体的数据分析方案,让开发人员、架构师、管理者等可以根据不同任务,自由搭配、组合出适用于自身洞察需求的任务/函数。

从本质上来说,它是特定领域(即架构)的数据自助服务。作为一个工程师、架构师,我们可以基于我们的领域知识来打造系统。这种领域知识,除了来自于自身的经验,还来自于大量先辈的经验:各种书。

根据这样的思想,我们制定了一个在不同阶段中,ArchGuard 应该处于怎样的状态,即架构自治服务的路线图。

架构自治服务路线图

在架构演进的场景之下,可以以可自定义架构适应度函数作为自动化的目标。按不同的自治服务需求 ,对应有四种对应的模式(由低到高):

  • 探索性数据分析模式。关注理解和总结架构治理所需的数据集,以确定所需的数据整理转换,诸如数据结构、内容、关系是否正确?

  • 领域知识转换模式。将行业内熟知的最佳实践知识,如 SOLID、CUPID 等内化到自助服务中。

  • 分析转换模式。结合架构关注点与可视化分析,通过交互式的方式来整理数据,并转换到流程中,如对于 Log4j 的整改跟踪。

  • 操作洞察模式。从多层指标出发,为数据用户提供一组丰富的可操作集合,它们之间是相互关联的,如架构适度度函数。

从抽象模式上来说,它是结合了领域知识所构建出来的数据自助服务,更多的是集中于数据转换 + 数据搜索的两个核心中。

架构自治服务的示例

还记得开头提到的 SourceGraph 吗,它提供了一种灵活的数据洞见服务。采用如下的方式,就可以跟踪系统的 Log4j 问题:

  1. lang:gradle org\.apache\.logging\.log4j['"] 2\.(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)(\.[0-9]+) patterntype:regexp

由于 SourceGraph 更多的是基于正则分析的,所以需要通过复杂的正则来实现。

在 ArchGuard 是基于 AST + 模型分析的,所以需要基于字段(field)进行过滤:

  1. field:name == /.*log4j/ field:version > 2.17.0

为了提供更好的自助服务,我们需要在平稳灵活性与实用性。在这种情况下,基于正则显然能提供了更强的灵活性。

于是乎,我们便能跟踪起整个组织的 Log4j 的治理情况。

如何实现架构架构自治服务?

从 ArchGuard 的试验,以及我们在数据上的一些经验,实现这样一架构自治服务可以分为四步:

  1. 构建架构治理的数据底座

  2. 抽象数据服务的接口

  3. 揉和 BI 的自助交互分析

  4. 设计指标驱动的架构演进。诸如于设计合理的适应度函数

简单来说,就是数据的自助服务。而对于我们来说,重点便在于如何构建这样的数据底座。

1. 构建架构治理的数据底座

大量的组织内现有的一系列架构(广义上的架构)管理相关的工具:

  • 代码质量控制:SonarQube(部分功能) 、ArchUnit、Jacoco、CheckStyle 等

  • SCA (软件成分分析)分析:JFrog Xray、Black Duck 等

  • 漏洞扫描工具:OpenVAS 等。

  • API 管理:Swagger 等

诸如此类的工具也非常之多,只是呢,很多我也不懂。针对于这一系列的工具,需要进行数据上的打通,以提供一个 “联接共享” 的数据底座。

于是乎,为了达到数据上的自助能力,我们就需要构建数据底座作为基础设施。当然了,在 ArchGuard 里,我们对于这点做得并不好。

2. 抽象数据服务的接口

从定义上来说,对于架构治理,围绕于 ETL + 数据自治服务,我们可以关注于:

  • 数据整理服务。它包含了方方面面的元数据处理,诸如于模型与接入标准化:在 Chapi 底层对于不同语言的数据模型进行抽象,又或者是在 Scanner 底层对于依赖进行抽象。

  • 数据转换服务。让开发人员可以在数据处理的过程中,添加一些特定的业务逻辑。

  • 数据搜索服务。如何简化数据的发现过程,使用关键字、通配符等,并降低处理所需要的耗时。

在整理、转换、搜索三个阶段里,我们都要构建大量的抽象,才能提供数据上的自助服务。在整理上可以模型来抽象,在转换上通过插件化接口来抽象,在搜索上通过 DSL 来进行抽象。

3. 揉和 BI 的自助交互分析

在简单的场景里,我们应该使用现有的 BI (Business Intelligence, 商业智能)工具进行分析。它的前提是,组织内部已经有了成熟的数据体系。如果没有的话,那么我们就要思考着如何达到这样的能力?如何构建这种架构上的数字孪生?

但是,不论如何,构建一个支持自助交互分析的工具也难。

4. 设计指标驱动的架构演进

在《演进式架构》里推荐的适应度函数,依旧是我们推荐的架构治理方式。虽然,书中不会给出明确的定义,但是通过其提供的参考就可以:为每个组织制定适合于自身需求的指标模型。

我们也依旧在思考什么才是合理的模型?怎样才能更好地推进整个组织的架构治理?也欢迎在 https://github.com/archguard/archguard 提出你的想法。

小结

最后,回到 ArchGuard issue(#93 ) 的问题类似:做了这么多,怎么证明能起作用?

也因此,基于这些数据,我们还进行了一些思考,打个比方:基于 AST 与机器学习构建自动升级。当我们有 10 个项目采用了基于 log4j 的内部封装,那么,对于相似的项目是不是直接能以相似的方式进行改进,又或者是生成对应的自动重构 CLI。当我们是一个 1000+ 的团队时,这一类工具带来的收益就会相当的可观。

参考资料:

  • 《大数据湖最佳实践》

  • 《数据自治服务实践指南》

  • 《持续 API 管理》

  • 《演进式架构》

欢迎在后续关注我们在 ArchGuard 实现它(扫码关注):

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
七麦数据徐欢:全球游戏数据洞察及苹果动态分析美丽日本京都:几个最著名的景点西门子EDA如何构建数字化创新“底座”?解密!第一个开源架构工作台的构建过程构建数据驱动型精准医疗服务体系,质谱多组学企业「中科新生命」获数亿元B轮融资|36氪首发Science:构建出迄今为止最为庞大的多种人类器官的单细胞图谱鹊哥心理:用数字心理SaaS系统构建心理服务生态体系,打造一站式全生命周期的心理健康服务平台封闭两个月,一栋上海高楼的教科书式自治魁省省长发表重要讲话: 将向联邦要求更多移民控制权, 希望100%自治我的城市(25) — Marlborough Street观点丨冯玉军:构建知识体系,坚持理论创新居家抗疫美食(369):玉米面窝窝头配酱香香干肉末VC即服务:CVC制造工厂AQR:构建更稳健的商品期货组合走向墨西哥39 – 如果时间是无限的基于互联网架构演进, 构建秒杀系统《中国医药电商行业研究2022》发布,单病种院外药事服务成为新一轮驱动力阿里10年沉淀|那些技术实战中的架构设计方法中国第三艘航母下水:构建海军尖端力量观点丨陶文昭:构建马克思主义学科知识体系D2C品牌纷纷加入的数据驱动CRM MKT是什么?讀《我叫劉心武》有感如何使用原生 NTFS 驱动替代旧版 FUSE NTFS 驱动 | Linux 中国米哈游新加坡总部曝光,今年内将组建数百人团队前端质量|基于业务驱动的前端性能有效实践案例数据驱动创新,健全科学数据治理机制刻不容缓【财富大餐】基建数据回暖,产业链机会几何?《杀戮尖塔》开发者分享:如何做数据驱动的游戏设计与平衡?奥芮济医疗:构筑可降解金属镁材料技术平台索尼上线全新会员服务:近400款游戏免费玩!​债务:发展中国家面对的金融陷阱针对新时代女性的母亲节营销应该怎么做?始于洞察但不止于洞察 | 刀法周报架构工作台:构建企业(应用)架构的数字孪生平权运动与企业支持背后:以利益驱动的脆弱承诺五大突破!深度分析“锁岛”联合军事行动的意义及对未来行动的期待!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。