写点什么

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

作者:Kurt Bittner, Pierre Pureur

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

    阅读完需:约 12 分钟

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

最小可行产品”(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:184513

评论

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

智能电饭煲

OpenHarmony开发者

OpenHarmony

35岁程序员自荐:我所掌握的架构技术

小小怪下士

Java 程序员 中年危机

长安链ca 容器部署(解决无法访问Mysql问题)

长安链

2.69分钟完成BERT训练!新发CANN 5.0加持

华为云开发者联盟

人工智能 企业号九月金秋榜

开发者问第四期|统一扫码服务、机器学习服务等问题解答

HarmonyOS SDK

Lua脚本在Redis事务中的应用实践

京东科技开发者

数据库 redis 事务 开发语言 Lua脚本

老生常谈!数据库如何存储时间?你真的知道吗?

小小怪下士

Java 数据库 编程 程序员

一个代码仓库(免费)与技术点 的故事

八点半的Bruce.D

GitHub Linux 网络服务 GitHub仓库

成为优秀程序员的8种方法

小小怪下士

Java 程序员 职业发展

这样Debug,排查问题效率大大提升...

程序知音

架构师成长之路——什么是架构师

小小怪下士

Java 程序员 架构 后端

腾讯云,DevOps 领导者!

CODING DevOps

腾讯云 DevOps IDC CODING

前端面试哪些是必须要掌握的

loveX001

JavaScript 前端

英特尔Wi-Fi 7速率提升5倍,为多应用场景带来改变

科技之家

基于云原生技术打造全球融合通信网关

阿里云视频云

云原生 网络 通信 通信云

高精度的“文件转换excel”背后藏着这些解题思路!

合合技术团队

人工智能 表格识别

数字化办公,企业OA软件技术该如何发力?

FinClip

2022年面试复盘大全500道:Redis+ZK+Nginx+数据库+分布式+微服务

小小怪下士

数据库 redis 分布式 微服务 java面试

Java 面试之技术框架

小小怪下士

Java spring 编程 程序员

爆肝整理5000字!HTAP的关键技术有哪些?| StoneDB学术分享会#3

StoneDB

数据库 HTAP StoneDB 企业号九月金秋榜 9月月更

模块一

早安

极客时间架构训练营

云图说丨DDoS防护解决方案:DDoS大流量攻击防得住

华为云开发者联盟

云计算 后端 华为云 企业号九月金秋榜

中国DevOps平台市场,华为云再次位居领导者位置

华为云开发者联盟

云计算 华为云 企业号九月金秋榜

ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)

矜辰所致

ESP32-C3 9月月更 NVS

元宇宙场景技术实践|虚拟直播间搭建教程

ZEGO即构

音视频开发 元宇宙 虚拟直播

2022最新腾讯面经分享:Java 面试刷题 PDF(17 大专题 )

Java-fenn

Java 编程 程序员 面试 java面试

作为一个菜鸟前端开发,面了20+公司之后整理的面试题

beifeng1996

前端 React

【存疑】爬虫学习中decode问题

Sher10ck

存疑

为什么Java中有三种基础的类加载器?

小小怪下士

Java 编程 程序员 程序

EasyCV带你复现更好更快的自监督算法-FastConvMAE

阿里云大数据AI技术

深度学习 算法 计算机视觉

打破联接壁垒,华为云IoT到底强在哪?

华为云开发者联盟

云计算 后端 物联网 华为云 企业号九月金秋榜

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