【FCon】聚焦金融行业在数智化的全面革新,一线的金融数智化实践干货 了解详情
写点什么

最小可行产品与最小可行架构

作者:Kurt Bittner, Pierre Pureur

  • 2022-06-23
  • 本文字数:3669 字

    阅读完需:约 12 分钟

最小可行产品与最小可行架构

6 月 17 日,极客时间《企业级 Agents 开发实战营》正式上线,10 周掌握企业级 Agents 从设计、开发到部署全流程。

最小可行产品”(MVP)的概念可以帮助团队专注于尽早交付他们认为对客户最有价值的产品,这样他们就可以在投入大量时间和资源之前用最低的成本快速地评估产品的市场规模。简单地说,MVP 就是:

 

“产品的一个版本,只为早期的客户提供足够他们使用的功能,让他们为未来的产品开发提供反馈。专注于发布 MVP 意味着开发者可以避免冗长和(最终)不必要的工作。相反,他们专注于迭代 MVP 版本并对反馈做出回应,以及挑战和验证有关产品需求的假设。”

 

MVP 的概念不仅适用于创业公司。每个应用程序都有一个可以被认为是 MVP 的初始版本。几乎每个组织都有这样的故事:他们如何花费数月或数年时间开发一个新系统,然后部署它,却发现它不能满足用户的需求。尽早发布 MVP 有助于避免在错误的需求上投入大量的时间、金钱和精力。

 

为了更好地理解 MVP 的目标,需要先考虑“可行”的含义。MVP 必须证明它能够以足够的数量为足够多的人提供价值,从而具备经济可行性。简而言之,它必须是有足够多的人去购买的东西,从而提供良好的投资回报。换句话说,你有一个足够大的问题,涉及足够多的人,而且解决这个问题是值得的。但经济可行性还有另一个方面:成本。成本必须是可负担的,而且它总的生命周期成本必须在产品期望的利润范围内。

 

结合使用现代的敏捷方法,产品必须能够根据反馈和需求的变化逐步演化。与原型不同,MVP 不会被“扔掉”。这里就是最小可行架构发挥重要作用的地方。

什么是最小可行架构?

 


当人们使用术语“最小可行架构”(MVA)时,他们通常指的是以下其中之一:

 

  • 一种包含最小组件集的设计。当团队主要关注于尽可能快实现 MVP 时,他们的 MVA 往往主要受功能需求而不是质量属性需求(QAR)的影响,因为后者可能还没有得到很好的理解。他们的设计决策往往是战术性的,因为速度是他们的主要关注点。他们通常认为如果 MVP 被证明是成功的,MVA 就需要重新设计,并最终演变成一个成熟的产品。产品的可持续性并不是优先考虑的问题。构成 MVA 的组件可以来自商业云供应商提供的现成产品、低码或无码产品,或在现有的系统基础上做一些细小的变更。

 

这种方法的缺陷在于人们认为“解决方案的架构对客户不重要”。但客户确实关心解决方案的可持续性,可见架构对他们来说很重要。正如我们在前一篇文章中指出的,这种方法可能涉及对初始设计的重大重构,导致时间和精力的浪费,并可能产生重大的技术债务。将交付速度置于架构关注点之前(这本身就是一个应该文档化的架构决策)可能是正确的做法,特别是当团队无法提供有效的反馈循环时。但是,团队应该愿意接受这样的可能性,即他们交付的大部分东西在以后可能需要进行大量的返工。

 

  • 开发团队对解决方案所做的一小部分基本决策。这个定义关注的是 MVP 的可持续性和长期可行性,考虑产品如何在满足功能需求的同时最大限度地减少技术债务。正如我们在另一篇文章中指出的,软件架构是由 QAR 驱动的,而不是由功能需求驱动的。这种 MVA 由一组最小的技术决策组成,随着时间的推移,这些决策将通过经验来验证,并不断演变。此外,还有一些额外的实践帮助团队在开发产品时保持产品的架构可行性。

什么样的决策塑造了 MVA?

 

“怎样才算足够”这个问题的答案取决于是否必须为了产品的可行性而做出架构决策。如果做(或不做)出一个决策会影响产品的可行性和可持续性,或者如果改变决定需要付出高昂的金钱或时间成本,导致产品不经济、不切实际或不可能,那么这个决定必须作为 MVA 的一部分。

 

这些决策包括产品将如何处理与产品/系统特征相关的 QAR,例如:

 

  • 并发性——并发用户、传感器和其他设备的数量,产品必须对这些事件做出响应。

  • 吞吐量——产品在给定的时间段内必须处理的事务或数据量。

  • 延迟和响应性——产品对事件做出响应的速度。

  • 可伸缩性——系统通过增加成本来处理增加的工作负载的能力,一般呈近似线性的关系。

  • 持久性——产品必须存储和检索的数据的吞吐量和结构。通常涉及不同类型的数据存储技术的选型(例如 SQL DBMS, NoSQL DBMS 等)。

  • 安全性——产品如何通过实现保密性、完整性和可用性来保护自身免受未经授权的数据访问。

  • 监控——对产品进行增强,让产品支持人员能够了解产品何时无法满足 QAR 并防止出现关键的系统问题。

  • 平台——产品如何满足与系统资源约束(如内存、存储、事件信号等)相关的 QAR。例如,实时和嵌入式产品(如电子表或自动制动系统)与基于云的信息系统有着截然不同的约束。

  • 用户界面——产品为用户提供的交互方式。例如,虚拟现实界面与二维图形用户界面有完全不同的 QAR,而二维图形用户界面与命令行界面也有完全不同的 QAR。这些决策可能会影响上述的其他 QAR(GUI、VR、命令行或其他类型的界面)。

 

这并不是一个完整的清单,开发团队可能需要根据自己的 QAR 对这个清单的内容进行增减。

开发团队如何演化产品的 MVA

 

与最终被丢弃的原型不同,开发团队会将最初的 MVA 作为 MVP 的一部分,因为它是产品的第一个版本。就像他们通过一系列敏捷迭代(或 Scrum 的 Sprint)MVP 一样,他们也迭代 MVA。在任何时候,他们的产品都应该满足已知的 QAR,这样就不会基于猜测和假设的特性给产品增加负担,有助于我们以一种可持续的方式实现业务功能的持续交付。

 

我们可以从概念层面来描述这种方法:

 

  • 团队最初只提供可以满足已知 QAR 的架构,快速构建出可供真正客户使用的可行产品。

  • 然后,随着团队更多地了解客户的真正需求,他们不断地改进产品以满足额外的需求或需求变更(包括 QAR)。保持架构的灵活性是必要的,应用持续架构原则之一——“延迟设计决策,直到绝对有必要”——是实现这个目标的有效方法。

 

简而言之,随着团队对产品需求的了解越来越多,他们只构建足够的产品,只做出满足已知需求的绝对必要的架构决策。产品仍然是 MVP,架构仍然是支持 MVP 的 MVA。这么做的原因很简单:团队可能会花费大量的时间和精力实现产品的特性和 QAR,结果却发现客户并不认同他们的价值。相信什么是有价值的仅仅是一种假设,直到得到客户的验证,而这才是假设和实验发挥作用的地方。

 

所谓的假设,就是对某些尚未被证实(或被否定)的观察结果提出解释。从需求方面讲,它是一种信念,认为做了一件事将导致另一件事的发生,例如交付特性 X 将导致结果 Y。实验是用来证明或否定某些假设的。

 

每一个特性和需求(包括 QAR)实际上都代表了一个关于价值的假设。实证的目标之一是让这些假设变得明确,并有意识地设计实验对特性和需求的价值进行明确的测试。实际上团队不需要构建出整个特性或需求来确定它是否有价值,他们只需要简单地构建足够多的代码,就足以对能够证明其价值与否的关键假设进行验证。

 

对于 MVA,团队将在每次迭代(Sprint)中验证他们关于解决方案的假设,根据经验对其进行测试,然后根据了解到的东西做出决策。例如,Scrum 团队会通过对产品需求项进行排序来决定他们需要了解什么。产品需求项包括功能需求(比如特性和故事)和 QAR。

 

当团队在计划一个 Sprint 时,他们选取一些产品需求项作为 Sprint 的目标,这不仅是对产品能够为客户提供的价值的假设,也是对增量产品如何随着时间推移而持续演化的假设。产品需求项(包括 QAR)的顺序将因此迫使团队面对他们关于价值和产品如何可持续交付价值的假设。

结论

 

MVP 不仅需要考虑产品的市场可行性,还需要考虑其技术可行性,以便随着时间的推移满足不断变化的需求。MVP 并不局限于初创公司,因为每个应用程序都有一个可以被认为是 MVP 的初始版本。MVP 是产品开发策略的一个有用的组成部分。将 MVA 作为 MVP 的一部分可以帮助团队评估技术可行性,并为产品提供一个稳定的基础,可以随着产品的演化进行调整。架构决策透明化有助于组织更好地理解为什么做出某些选择,这有助于他们更好地做出关于如何使产品适应不断变化的市场条件和客户需求的决策。

 

作者简介:

 

Kurt Bittner 拥有超过 30 年短周期交付软件的经验。他帮助过许多采用敏捷软件交付实践的组织,包括大型银行、保险、制造和零售企业,以及大型政府机构。他曾为大型软件交付企业工作,包括甲骨文、惠普、IBM 和微软,并曾是 Forrester Research 公司的技术行业分析师。他的重点领域是帮助组织建立强大、自组织、高性能的团队,为客户交付受欢迎的解决方案。他撰写了 4 本与软件开发相关的书,包括“The Nexus Framework for Scaling Scrum”。他现居科罗拉多州博尔德市,并担任 Scrum.org 的企业解决方案副总裁。

 

Pierre Pureur 是一位经验丰富的软件架构师,拥有丰富的创新和应用程序开发背景、广泛的金融服务行业经验、广泛的咨询经验和全面的技术基础设施知识。他曾担任一家大型金融服务公司的首席企业架构师,领导大型架构团队,管理大型并发应用程序开发项目,指导创新计划,以及制定战略和业务计划。他是“Continuous Architecture in Practice: Scalable Software Architecture in the Age of Agility and DevOps”(2021 出版)和“Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World”(2015 出版)的合著者,并发表了许多文章,以及在多个软件架构会议上发表相关演讲。

 

原文链接

A Minimum Viable Product Needs a Minimum Viable Architecture

 

2022-06-23 09:184244

评论

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

Navicat Data Modeler Ess for Mac(顶级的数据库建模与设计工具)v3.3.16中文直装版

影影绰绰一往直前

最常用的几款Paas平台编译构建工具的对比

华为云PaaS服务小智

软件开发 PaaS 华为云 编译构建

Kaleidoscope for Mac(图片和文本差异比较工具)v4.4激活版

影影绰绰一往直前

DBeaverUE for Mac(数据库管理软件) v24.0.0旗舰激活版

iMac小白

Media Encoder 2024 for Mac(ME2024) v24.2.1激活版

iMac小白

强大好用的shell:shell的工作原理

小魏写代码

数仓的等待视图中,为什么会有Hashjoin-nestloop

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

华为云峰会2024,GaussDB扬帆出海,给世界一个更优选择

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

Find Any File (FAF) for Mac(专业的本地文件搜索查找器)v2.5beta2(364)激活版

影影绰绰一往直前

Alfred 5 for Mac(苹果效率提升工具)v5.5 (2247)免激活版

影影绰绰一往直前

Permute 3 for mac(全能媒体格式转换器) v3.11.6中文版

iMac小白

漏洞处置:HTTP/2 快速重置攻击对 F5 NGINX 的影响

NGINX开源社区

cpu DOS攻击 nginx 开源版 NGINX PLUS HTTP/2

AI数字人直播克隆系统源码交付!

青否数字人

数字人

定制开发一款家政小程序,应知应会

天津汇柏科技有限公司

小程序 小程序开发 定制软件开发 app定制开发 软件开发定制

建木流水线SaaS版已上线,公测免费体验中!!!

都广科技

DevOps DevOps工具

住宅IP代理有什么优势?住宅ip如何购买?

摘星星的猫

Navicat for SQL Server for mac(数据库管理工具)v16.36汉化版

影影绰绰一往直前

Infuse Pro for Mac(多媒体播放器)v7.7免激活版

影影绰绰一往直前

DBeaverEE for Mac(数据库管理) v24.0.0企业激活版

iMac小白

Things3 for Mac(日程和任务管理工具) v3.20中文免激活版

iMac小白

半小时到秒级,京东零售定时任务优化怎么做的?

京东零售技术

JavaScript MySQL 后端

一起学Elasticsearch系列-Pipeline

Java随想录

Java 设计模式

Scrutiny for Mac(网站分析检测工具) v12.8.7激活版

iMac小白

FastScripts for Mac(脚本调用工具)v3.3激活版

影影绰绰一往直前

PDF Expert for Mac(PDF编辑阅读转换器) v3.9.2中文激活版

iMac小白

FSNotes for mac(文本处理软件) v6.6.9中文免激活版

iMac小白

Downie 4 for Mac(视频下载工具)兼容14系统 v4.7.4中文版

iMac小白

面试官:Redis如何保证高可用?

王磊

Java 面试

ExpressScribe PRO for Mac(易于使用的专业转录软件)v13.06注册激活版

影影绰绰一往直前

新手程序员必学10大技能

敏捷开发

#编程 #程序员 #数据结构

Premiere Pro 2024 for Mac(PR 2024视频编辑软件) v24.2.1中文激活版

iMac小白

最小可行产品与最小可行架构_语言 & 开发_InfoQ精选文章