架构中的“大象”

2023-11-10 13:04
文章标签 架构 大象

本文主要是介绍架构中的“大象”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

西方有句谚语叫做:“an elephant in the room”。

用以指代那些显而易见又容易被忽视的东西。

这些东西是什么呢?

“an elephant”:我们可以解释为那些重要的,困难的或者棘手的。

这里我们要讨论的则是架构中的"大象":业务价值。

通常我们做架构评估的时候,一般会对关联系统的性能,容错弹性,业务扩展性等进行论证,但很少会考虑各个系统的业务价值以及这些业务价值和前述架构特性之间的关系。

没有这些价值关联的理解,对于架构设计中的一些关键因素选择就会很难做决定。

交易系统容错

以向交易系统添加容错机制为例,通常需要花费大概几万到几十万不等。那么这笔钱到底值不值得花呢?

做这个决定的前,要先了解系统所承载的业务价值,如果是日亿级的交易量业务,那么上面所说的花费就显得微不足道,是否添加容错机制这个架构元素也就更容易做决策了。

这里举上述这个例子,并不是为了申述架构团队在做决策时容易忽略业务价值因素这个问题。相反,这个点的考虑也已成为了普遍会进行考量的关键点。这里所要重点指出的是,很多时候,架构团队并不能很好的明晰各个系统所承载的业务价值是什么?价值的量是多少?不同系统模块对业务表现的贡献?

保险公司系统微服务化

一个保险公司确定要将公司的单体服务拆分为产品线维度微服务(家庭险、个人险、车险等),但是它们对不同业务线对公司利润的贡献比例不甚清楚。那么这种情况下需要优先考虑哪些决策因素呢?可以肯定的是首先需要拆分出的一定不是价值最高的业务,因为第一次拆分必然会伴随着许多不定性的风险。前期非核心系统迁移的试错,经验积累必不可少。

一、核查架构价值流映射

首先要做的是针对架构中的每一个系统模块,构建其价值映射。也就是每个系统对应的业务价值映射。

企业通过业务系统来服务外部客户,客户在使用企业的服务时都会遵循特定的行为步骤。

以用户购买商品为例,用户通常会执行登录、查询商品、对比价格、下单、支付,查看订单、跟踪物流,商品签收,服务评价等一系列操作。用户每一个操作行为都对应于业务系统特定的服务模块。基于此,我们可以明晰每个业务系统模块对于服务用户这个商业行为的贡献价值,以及各个环节的失败影响。

二、考量系统异常的业务价值影响

我们评估一个业务系统模块的价值的时候,除了有明确的其承载的业务价值的标准,对于哪些无法明确考量的(如底层数据库,存储等)模块,我们可以从另外一个角度来估量:失败异常会造成的损失。

例如,在某个重大节日大促将要到来之前,研发排期里已经罗列很多业务功能 feature 迭代需求。此时,要如何将一个看似和业务无关的“数据库灾备、恢复演练”需求插入到日程里呢?

此时,只需要提出如下问题即可:假如节日大促时,数据库服务宕机了,会造成多大的损失?希望数据库服务能在多长时间内恢复?

在评估业务价值风险时可以通过如下两种方式:

1、自上而下,跟踪业务功能流程并识别支持每个流程节点的业务系统。

2、自下而上,检查各个业务系统,分析其失败所影响的业务功能。

风险考量另一个需要关注的点是:不同的失败异常所可能引发的影响不同。不同的业务系统所需要的系弹性是不同的。

例如,人门对开盘日宕机的股票交易系统和一时无法使用的内部报销系统的容忍系数是完全不同的。达成何种弹性界别完全一种业务决策

还有常见的“数据一致性”问题也是同样的道理,例如在对待分布式数据存储时,相对于可用性,架构师更倾向于追求数据一致性表现。但是就商业层面来看,以订票业务为例,重复订票反而是无伤大雅,人们更加不愿意看到的是无法订票这种情景。

就如我们经常会谈论到的CAP理论一样,CP ? 还是 AP ? 从来都是一个业务决策,而不是技术决策。

三、基于业务价值评非功能需求

在评估功能价值时,不应只关注单一的业务功能,还要考虑如系统质量、兼容性、稳定性等非功能性需求。

如果我们想要系统达到某些技术标准,那么我们就需要让非技术人员了解到,如果达不到这些标准将会失去什么样的业务价值。

评估非功能更性需求价值通常都比较困难,许多技术人员也常常会回避由此产生的争论。但是避而不谈则会产生比低价值技术投入更大的危害,同时也会在技术人员和非技术人员之间产生更大的合作障碍。

以业务价值的理解和组件灵活性需求决策为例,某个客户的支付处理组件是由特定的支付处理供应商提供服务的。现在客户想要将支付组件升级为可配置化,这样就能够更好的应对支付供应商的变化。要实现这个需要有两种方案可选,一是将和服务提供商的交互逻辑进行硬编码处理,二是将所有的交互逻辑可配置化。但是,交互逻辑可配置化处理必然会增加支付组件的复杂性及其它变更的成本,这也会是一个相当大的投入。然而,通常支付提供商变更的商务谈判交互会就会花费相当长的时间,这里或许根本不需要支付组件上的快速配置变更,反而,低成本的硬编码处理更加适合。

四、非功能性需求业务价值评估因组件而异

上述实例的阐述说明了在评估如系统弹性、灵活性等非功能性需求业务价值上不能单纯的采取“一刀切”的统一标准。

例如,实现一个交易系统的5个9的可用性是合理的,但是对于一个内部订餐系统则是完全没有必要。

对不同层级业务提供不同级别标准的服务系统是我们应当遵循的基本准则。

特定服务的宕机是否会立刻影响到用户体验及收入?能否承受数据库几个小时的宕机,恢复损失?等等。

关于分析系统支撑业务价值,另一个需要关注的情景是:单个组件支撑多个业务价值流及不同业务价值流所需的不同级别可靠性。简单来说就是公共服务组件问题,尤其在单体服务模式下更为明显。这也促成了人们对微服务模式的追捧,关注核心价值业务并提供高级别服务系统。

五、基于监控工具评估业务价值

监控是必要且必需的。

随着分布式大行其道,交互逻辑,交互流程日趋繁杂,监控更是我们能够把控服务健康状态的必要工具。

监控数据通常分为两类:1、技术性指标,这是术人员通常关注的;2、业务性指标,则是我们这里所需要讨论的,对评估业务价值非常有用的数据。

业务性监控数据,如交易数据走势,营收曲线,用户活跃度等等,往往成为日常经营决策基础,更加科学化的以数据驱动企业发展。

六、只进行必要的核心业务上云

随着云服务的日趋繁盛及成熟,很多企业都倾向将自有业务系统迁移至云上服务。迁移的过程通常会持续很长一段时间,在这段时间内,云上,云下服务通常会并行运行。在这个过程中,人们通常会犯的一个错误是将所有服务完全的照搬到云上,简单的理解为一个复制粘贴过程,这是非常不可取的。

上云应该是一个优化,提升的过程。我们前面论述过,核心价值的业务才是最值得关注的。另外,在历久的业务迭代过程中,存在着许多无用的,低价值的,甚至对业务优化形成干扰的功能。因此,上云之前应该对整个业务系统进行充分的分析,拆解,提优去糟,只将最核心,必要的的业务优化上云。相对于完全的照搬策略,这样反而更容易实施,roi更高。

七、业务价值重要且变化无常

架构元素业务价值不是一成不变的,同样一个业务,有发展,成熟,衰败的渐变或骤变过程,因此相应的价值映射也要做相应的调整。

业务价值预估也是我们进行业务价值评估所必要做的工作,这其中的影响因素包括企业经营决策,行业发展趋势等不一而论。

比如,大数据模型由原来做推荐,然后跟随趋势支撑AI;核心的社区业务转变为非核心的交易支撑业务等等。

八、技术职业生涯中的业务软技能

做技术的人不能只关注技术,技术是利器,而业务知识则执利器之手。

技术人员在掌握必要的技术技能同时,更多的应该关注其所负责业务知识,逻辑,业务价值的产生,流动路线,变化发展规律,趋势等。能够深刻的理解怎么能用现有的技术更好的服务业务价值。

附:The Elephant in the Architecture

这篇关于架构中的“大象”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382804

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

【系统架构设计师】黑板架构详解

黑板架构(Blackboard Architecture)是一种软件架构模式,它模仿了多个专家系统协作解决问题的场景。在这种架构中,“黑板”作为一个中央知识库,存储了问题的当前状态以及所有的解决方案和部分解决方案。黑板架构特别适合于解决那些没有确定算法、需要多个知识源(或称为“专家”)共同作用才能解决的复杂问题。 一、黑板架构的组成 黑板架构主要由以下几个部分组成: 黑板(Blackboa

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

Arch - 演进中的架构

文章目录 Pre原始分布式时代1. 背景与起源2. 分布式系统的初步探索3. 分布式计算环境(DCE)4. 技术挑战与困境5. 原始分布式时代的失败与教训6. 未来展望 单体时代优势缺陷单体架构与微服务架构的关系总结 SOA时代1. SOA架构及其背景1. 烟囱式架构(Information Silo Architecture)2. [微内核架构](https://www.oreilly.c

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成

Linux 云计算底层技术之一文读懂 Qemu 架构

Qemu 架构概览 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成