你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

用于启动的体系结构

建立一家初创公司是一项独特的挑战。 核心任务是在市场上为产品或服务的创新找到一席之地。 此过程需要测试创新中内置的多个假设。 成功的初创公司必须反复测试这些假设,并随着其产品取得产品和市场契合点而成长和扩大规模。 在找到这种契合点后,这家初创公司必须扩大规模以迎合市场需求。

在不同的创业历程阶段,开发人员、架构师和首席技术官 (CTO) 需要处理不同的开发阶段。 在这些阶段需要选择根本不同的方法和不同的技术。 部分任务是确定初创公司处于哪个阶段。 选择与该阶段匹配的技术和体系结构。

创新阶段

Kent Beck 描述了软件产品创新的三阶段过程。 这些阶段分别为探索、扩展和提炼。 可将此过程的不同组成部分视为一个图形:

显示产品开发的探索、扩展和提炼阶段的图形。

该图显示了针对 Y 轴“确定性/投资/变更风险”和 X 轴“时间”绘制的 S 形曲线。 该图突出显示了三个区域:在向上拐点出现之前标记为“探索”的初始部分、S 型曲线中标记为“扩展”的高增长部分,以及标记为“提炼”的高台部分。

  • “探索”阶段从一个低坡度开始,你会在其中试图找到有效的方法。 确定性很低,你只会投入小笔资金,所做的任何变更带来的风险也很低。

  • 在某个时间点,曲线拉升得较快。 这种快速增长是“扩展”阶段。 确定性大大增加,你的投资也大幅增加,并且你对风险了解得更多。

  • 最后,随着曲线变得平缓,你进入了“提炼”阶段。 变更带来的确定性、投资和风险都很高,但增长率已达到一个高台期。

探究

当初创公司处于探索阶段时,当务之急是在许多不同的产品创意上投入少量时间和精力。 大多数创意都不合理这一事实推动了探索。 只有通过迭代和学习,才能找到产品和市场的契合点。 你的目标是通过下一些小小的赌注,找到一种有回报的产品创意。

在此阶段需要自律。 你可能会轻易地过度投资于一种用较少时间和精力就能测试的创意。 技术人员特别容易掉入此陷阱。 若要做出便于探索的体系结构选择,请记住你正在探索。 你还不知道当前的产品创意是否可以调整。

从体系结构的角度看,应该选择在速度、成本和选项方面进行了优化的服务。 使用托管服务和平台即服务 (PaaS)(例如 Azure 应用服务)来快速上手,而无需考虑复杂的基础结构。 在探索时通过选择免费层和较小的实例大小来控制成本。 容器支持使用任何你认为合理的工具进行开发,并为将来提供灵活的部署选项。

构建第一个堆栈

与第一个产品版本一样,第一个技术堆栈应该牢牢根植于探索。 这意味着,技术堆栈应该在不浪费精力的情况下简化产品的快速迭代。 不要将时间或精力花费在对当前问题无关的基础结构或体系结构上。

在探索阶段,需要针对速度、成本和可选性进行优化。 速度是指能够多快地建立和推进一种创意,或者转向下一种创意。 成本是指要投入多少资金来运行基础结构。 可选性是指能够多快地根据当前体系结构改变方向。

在成本、速度和可选性之间平衡非常重要。 过分关注成本会限制速度和可选性。 过分关注速度会导致成本增加和选项减少。 设计过多的选项会增大复杂性,从而增加成本并降低速度。

请考虑使用建议的第一个技术堆栈。 此体系结构使用 PaaS 服务以简化实现,可以从最小规模开始并使用容器和开源技术,在你逐渐成熟后,可以轻松地将这些技术部署到不同的技术堆栈上。

展开

一旦你的初创公司通过探索得到了成长,就可以转到扩展阶段。 专注于消除阻碍产品和公司持续增长的任何因素。 从技术角度看,需要解决基础结构规模挑战并提高开发速度。 目标是满足新客户的需求并推进产品路线图。

扩展体系结构

迭代产品时,你将不可避免地发现体系结构需要扩展的方面。 可能需要在后台完成长时间运行的任务,或者处理物联网 (IoT) 设备的频繁更新。 可能需要将全文搜索或人工智能添加到产品中。

可能需要做出体系结构更改以适应路线图上的项。 抵制住过早做出这些改变的诱惑。 扩展的风险是增加体系结构的复杂性和资产负债表的基础结构成本。

在早期创业阶段,应该即时进行任何体系结构扩展。 扩展只需要投入测试下一条假设所需的时间和精力。 准备好取消扩展以降低复杂性。 分析客户未使用的产品功能,并借机简化体系结构和减少基础结构支出。

可以通过多种方式扩展体系结构,例如:

提取

在提炼阶段,当达到市场商机的极限时,增长速度就会放缓。 由于你在前一阶段进行了扩展,现在会出现很多损失,因此需要采取更谨慎的方法。 利润扩大、成本降低和效率提高是提炼阶段的特征。 在提炼阶段,请注意不要损害在扩展阶段赢得的客户购买的产品。

处理增长并使堆栈变得成熟

一旦某个产品实现了产品和市场契合,许多需求就会促成该产品的体系结构。 增加的使用量可能需要扩展基础结构以处理负载。 新的企业合规要求可能需要更大程度的隔离。 这些更改是使成功的应用程序变得成熟的常用步骤。

为处理增长和提高成熟度所做的更改与扩展体系结构不同。 这些更改不是功能性的要求,而是与解锁规模有关。 规模的增大可能起源于发掘了全新的客户、现有客户的使用量增大,以及客户的监管要求更高。

抵制住过早优化的诱惑。 确保采取有助于继续迭代和改进产品的增长和成熟度提升步骤。

后续步骤