首页 > 其他分享 >确认架构规划完整性的八个关注点

确认架构规划完整性的八个关注点

时间:2023-05-20 22:32:40浏览次数:37  
标签:架构 关注点 确认 用例 API 完整性 交付 文档

通过架构规划中的确认环节来控制风险与保障交付,就是在这个环节的核心关注点。具体而言,规划确认包含八个部分。

1、定稿架构规划文档

在定稿的过程中,你可能会和不同团队、企业外部专家产生诸多交互。这个时候你就需要与执行者确定规划内容。因为之前的收集主要是作为规划的输入,而不是执行者的承诺。所以你就需要把输入转成一个可行且有约束力的规划。

架构师的角色有点像律师。除了最小化交付风险外,还要确保所有参与者有能力且有意愿履行他们的责任。怎么确保呢?答案是为参与者拟定一个合同。

这是一个用来提升交付确定性的切实有效的工具。规划确认过程中的每一个交付项,比如用例文档、必保任务、领域模型、API 设计、消息和数据流、整体交付节奏和完整性验证等,都指向同一个目的,即提升交付的确定性。这也是架构规划的实质。

2、组织用例文档

用例文档是关于交付内容的最简洁的描述。它的作用是描述架构活动中某个团队或者小组要为某个用户角色,在某个场景中,创造出某种价值。

需要格外注意的是,无论是写用例,还是用一张图来表示用例,都需要避免堆积。在一个架构活动中,不论是十个人还是上百人参与,最顶层的用例最多也不能超过十个。

对用例的描述除了要尽量简洁外,还要将其整理成一个文档。这样的话,几乎所有人都能通过阅读这些用例来获得更为宏观的视角。而具体的每个场景的细节描述和需求文档,可以通过链接记录到另外的文档中。

3、确认必保任务的交付节奏

在架构规划的环节,我们还需要重新梳理一遍在任务边界划分中,做出来的具体的任务描述。并且要确保这些必保任务录入到了 Jira 之类工具中。借助这个工具,我们需要收集所有必保任务,并确认任务分配和交付排期。最终,我们需要通过这个工具来跟踪所有必保任务的交付情况。 需要注意的是,这些必保任务也要和用例形成关联关系。

4、确认领域模型

同样,在这个阶段之前,你准备的领域模型也是一组输入。那么在规划确认这个环节,你就需要完成定稿。这是一个统一语义的过程,整个架构活动只能有一个问题域模型。虽然不同的执行者可以帮你梳理领域模型,但是你必须把整个领域模型整理到同一个语义环境中。这是对于架构活动中要解决的问题的准确描述。另外,你必须让最终的执行者来确认领域模型。因为之前帮你起草领域模型的,不一定是最终的执行者。

5、确认 API

有了用例文档、必保任务和领域模型,接下来就可以请各个团队完成 API 设计了。如果架构活动中主要使用的是 RESTful 框架,那么 Swagger 就是一个非常好的选项。

相比 Wiki,Swagger 的优点是:

  1. 有约束性。我们刚才把架构师在这个环节的角色看作律师,那么我们就要看看执行方能提供什么样的服务。
  2. 易读易用。对于大多数程序员来说,读代码要比读文档更便宜。
  3. 有 Copyright 和 Ownership。研发人员非常在意自己的口碑,一般比较资深的研发都会在 API 的定义上面下很大的功夫。不像 Wiki,很容易变成一个 Group 文档。
  4. 有投入度。连 Swagger 都不想写或者写不出来的人,估计你未来也很难撬得动他,甚至也用不上这样的人。所以在 Swagger 上的投入,能让你提早发现资源和能力上的问题。
  5. 规范性好,很容易在团队中标准化掉。
  6. 可测试性好,容易验证其完整性。
  7. 长期回报大。仅架构活动本身,对定义者本人的价值就很大,可以帮助他想清楚问题。而对于依赖这个 API 的人来说,价值就更大了。他可以及早做 Mock 测试,及早给出反馈意见,避免在很晚的时候才发现集成问题。长期来看,还可以让整个团队形成好的设计习惯,从而提升整体的 API 质量。这是个典型的有复利的编程模式。

6、确认消息和数据流

在确认好 API 之后,接下来就要去确认消息和数据的流转了。也就是某个角色在某个时间能为某个使用方提供某些消息和数据。消息,是除了 API 调用外服务间最常见的通讯机制,甚至可以说是过分常见了。事实上我一直在怀疑,过去大多数利用消息解耦的场景,在今天的计算能力之下,到底还是不是一个好的设计模式。

这是个常规工作,没太大的技术难度,难的是保障资源投入、模型质量和数据质量。所以如果在这个阶段就及早规划,会省去后续很多麻烦。

7、确认强依赖任务的交付节奏

 虽然通过依赖解耦和 Swagger 的应用,能让你并行处理一些工作。但是真正的集成,以及对异常情况的处理,还是需要完成强依赖任务后才能进行。所以确认强依赖任务的交付节奏,是你这个架构师、项目经理和执行者在各个用例层级上都要进行的任务。

8、确认整个架构规划的完整性

整个架构规划的完整性确认,需要测试和相关团队核心人员的介入,从而确保核心场景的核心用例能被现有的功能所覆盖。同时也要确认 API、消息、数据是完整和兼容的,整体集成风险是可控的。在这个环节,一般不太关注边界条件的梳理,主要是担心会把过多的注意力分散在较小,甚至是比较难的异常情况梳理上,而在核心场景和强依赖任务的梳理上投入得不够。

规划确认环节的王道,就是通过精细规划来控制风险,保障全面启动前交付风险的最小化。


标签:架构,关注点,确认,用例,API,完整性,交付,文档
From: https://blog.51cto.com/key3feng/6318126

相关文章

  • 架构学习第一天
    1.架构分类  业务架构:业务战略,治理,组织和关键业务流程(L2级别).横向跨阶段,纵向跨流程  数据架构:组织的各类逻辑和物理数据资产以及数据管理资源的结构(用数据形成资产)  应用架构:部署的单个应用系统及系统之间的交互(总线式和微服务),以及它们与组织核心业务流程  ......
  • 基于ResNet网络架构训练图像分类模型
    目录1.数据预处理(1)导包(2)数据读取(3)制作数据(4)读取标签对应的实际名字(5)展示数据2.构建网络(1)加载已有网络模型(2)选择需不需要冻住哪些层(3)重新加入全连接层传入自己的分类数(4)网络搭建结果3.训练自己的全连接层4.训练所有层5.测试网络效果(1)加载训练好的模型(2)测试数......
  • TDenigne 签约路特斯科技,助力高性能跑车领域数据架构升级
    近日,TDengine正式签约路特斯科技,打造出属于高性能跑车领域的高效、可靠和灵活的数据处理解决方案,帮助路特斯科技更好的处理在业务加速扩张中的爆发式增长的车辆数据、实现数据架构的升级。路特斯科技作为专注于技术创新和勇于打破常规的行业领先者,随着车联网的快速发展和自身业......
  • 分布式和集群部署架构设计
    一、微服务部署架构设计方案1、先采用微服务架构设计,将工程拆分成多个模块(通过接口彼此调用,降低代码的耦合度)2、后采用分布式工作方式将拆分开的各个模块分别部署到多台服务器上(通过缩短单个任务的执行时间来提升效率)3、再采用集群物理方式将各个模块部署到多台服务器上(通过提......
  • API架构的选择,RESTful、GraphQL还是gRPC
    hi,我是熵减,见字如面。在现代的软件工程中,微服务或在客户端与服务端之间的信息传递的方式,比较常见的有三种架构设计的风格:RESTful、GraphQL和gRPC。每一种模式,都有其特点和合适的使用场景,今天,我们主要来对三种风格做一个深入的理解和对比,以方便我们在做技术选型时,能够做出有效的......
  • LKT6850安全MCU(二):系统架构
    LKT6850主系统由以下部分构成:两个驱动单元ARMCortexM0内核和系统总线(S-bus)DMA总线三个被动单元内部内部闪存存储器AHB到APB的桥(AHB2APBx),它连接所有的APB设备这些都是通过一个多级的AHB总线构架相互连接的。系统结构系统总线该总线连接ARMCortexM0内核的系统总线到总线矩阵......
  • 领域驱动设计DDD架构解析和绘图模板分享
    DDD整洁架构DDD整洁架构为了解决强调用的关系,出现了洋葱架构(六边形)架构,就是为了实现依赖倒置它的思想就是把领域模型放到核心的位置,领域模型是独立的,不会直接强依赖其他层,而通过适配器来完成领域模型和外层的数据交换。DDD分层架构和三层架构的区别与关系DD分层架构和三......
  • 云数据库时代:企业数据架构的云化智能重构和变革
    云数据库时代:企业数据架构的云化智能重构和变革原创 国内数据库 作者:数据和云 时间:2018-11-2611:05:13  668  0在2018年11月16日举行的『数据技术嘉年华』大会上,我对行业近期的观察和思考做了一个总结,在此和大家分享商榷。我以为,近代数据库技术的发展可以划分为......
  • 夜莺官方文档优化第一弹:手把手教你部署和架构讲解,消灭所有部署失败的 case!干!
    前置说明各种环境的选型建议Dockercompose方式:仅仅用于简单测试,不推荐在生产环境使用Dockercompose,升级起来挺麻烦的,除非你对Dockercompose真的很熟二进制部署:最推荐的方式,稳,升级也方便Helm方式:公司大规模使用了Kubernetes,可以选择 Helm方式,前提是贵司对Helm这......
  • 使用buildx在x86机器上面编译arm64架构的Docker镜像
    buildx多架构编译安装docker下载docker下载buildx安装架构支持dockerrun--privileged--rmtonistiigi/binfmt--installall创建一个自己的空间buildxcreate--use--namemybuilder检查支持的架构buildxinspectmybuilder--bootstrapNodes:Name:mybu......