NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

作者: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:184199

评论

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

Go应用性能优化的8个最佳实践,快速提升资源利用效率!

SEAL安全

Go 企业号 6 月 PK 榜

OpenHarmony中Ability组件基本用法

坚果

OpenHarmony 6 月 优质更文活动

性能提升30%!袋鼠云数栈基于 Apache Hudi 的性能优化实战解析

袋鼠云数栈

数据湖 Hudi 企业号 6 月 PK 榜

师资培训|《经管大数据》课程教学能力提升训练营课程安排

ModelWhale

数据分析 数据科学 经管 交叉学科 师资

Spring应用启动分析优化

林贻民

字节码插桩 字节码增强 spring-boot

视频直播源码技术知识分享:连麦功能

山东布谷科技

软件开发 源码搭建 直播源码 短视频直播源码

Spring源码核心剖析 | 京东云技术团队

京东科技开发者

spring bean 企业号 6 月 PK 榜 SpringAOP

【SIGMOD 2023】深度学习弹性数据流水线系统GoldMiner,大幅提升任务和集群效率

阿里云大数据AI技术

人工智能 深度学习 数据库 企业号 6 月 PK 榜

稳,从数据库连接池 testOnBorrow 看架构设计 | 京东云技术团队

京东科技开发者

数据库 架构设计 数据库连接池 企业号 6 月 PK 榜 testOnBorrow

PAGC2023 金帆奖 | 融云三度荣膺「年度优秀出海产品技术服务」奖

融云 RongCloud

网络 通信 融云 PAGC

深度解读 Linux 内核级通用内存池 —— kmalloc 体系

bin的技术小屋

内存管理 Linux内核 Linux内核源码 kernel

堡垒机免费版有哪些优点?哪家免费堡垒机好用?

行云管家

网络安全 堡垒机 行云管家 免费软件 免费堡垒机

AI教你实现敏捷游戏自由,再也不用担心陷入瓶颈啦!

禅道项目管理

项目管理 AI ChatGPT

聊聊 220V交流 过零检测

矜辰所致

电路设计 过零检测 6 月 优质更文活动

程序员常见的6种最佳实践

互联网工科生

程序员 前端 技巧

到底什么是Java AIO?为什么Netty会移除AOI?一文搞懂AIO的本质!

JackJiang

网络编程 即时通讯 IM

金华等保测评机构名单以及电话信息看这里!

行云管家

等保 等级保护 等保测评 金华 浙江

SAP UI5 OData 谣言粉碎机:极短时间内发送两个 Odata 请求,前一个会自动被 cancel 掉吗

Jerry Wang

SAP OData ui5 思爱普 6 月 优质更文活动

使用 Midjourney 进行 UI/UX 设计的一些典型场景

Jerry Wang

人工智能 ChatGPT MidJourney 6 月 优质更文活动

SLF4J门面日志框架源码探索 | 京东云技术团队

京东科技开发者

jdk slf4j 源码剖析 企业号 6 月 PK 榜

Jenkins配置仅合并代码后触发流水线

这我可不懂

jenkins #GitLab

师资培训通知 | 数字化转型背景下《经管大数据》课程教学能力进阶提升训练营

ModelWhale

数据分析 大数据课程 经管 师资培训

ZEGO 即构音乐场景降噪技术解析

ZEGO即构

音视频

如何用手机在区块链上发行虚拟币?一键发币3分钟搞定

加密先生

发币教学 一键发币

Idea Mybatis插件:提高CRUD效率

林贻民

MySQL mybatis IntelliJ IDEA

为什么要学3D建模呢?

Finovy Cloud

3d建模

常用的表格检测识别方法——表格内容识别方法

合合技术团队

人工智能 表格识别 表格检测

透明LED橱窗屏的作用

Dylan

解决方案 LED显示屏 室外显示屏 屏幕

ClickHouse技术研究及语法简介 | 京东云技术团队

京东科技开发者

MySQL elasticsearch Clickhouse TiDB 企业号 6 月 PK 榜

详解深度学习中推荐系统的经典模型

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 6 月 PK 榜

软件测试/测试开发丨学习笔记之Python控制流-分支、循环

测试人

Python 程序员 软件测试 分支 循环

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