龙空技术网

OVO 如何为其基于 Web 的项目确定正确的技术堆栈(译文-来自:grab)

闪念基因 641

前言:

今天朋友们对“php堆栈是什么意思”可能比较讲究,咱们都需要知道一些“php堆栈是什么意思”的相关文章。那么小编同时在网上收集了一些关于“php堆栈是什么意思””的相关知识,希望朋友们能喜欢,兄弟们一起来学习一下吧!

在当前的技术环境中,初创公司发展迅速。这通常会导致团队中工程师数量的增加,目的是提高产品开发速度和交付频率。然而,这种增长通常会导致同一组织内的不同团队使用多种技术堆栈。

团队中拥有不同的技术堆栈可能会在未来导致更大的问题,尤其是在文档维护不善的情况下。最好的做法是只为你的项目选择一个技术栈,但这引出了一个问题,“我如何为我的项目选择最好的技术栈?” .

OVO 就是一个这样的例子,它是 Grab 中的一个印度尼西亚支付、奖励和金融服务平台。我们分享我们的流程和分析,以确定符合精确标准的最佳技术堆栈。到本文结尾,您还可能学会选择最适合您需求的技术栈。

背景

近年来,我们看到了现代网络技术的巨大发展,例如 React、Angular、Vue、Svelte、Django、TypeScript 等等。每种技术都有其优点。但是,当您必须确定哪些技术最适合您的项目时,有这么多选择可能会让人感到困惑。要缩小选择范围,必须考虑几个方面,例如可扩展性、稳定性和市场使用情况。

这是我们曾经面临的问题。我们的大部分遗留服务都没有标准化,并且是用不同的语言编写的,例如 PHP、React 和 Vue。此外,这些遗留服务的文档结构不合理或不定期更新。

当前 OVO 中的技术堆栈使用情况

我们意识到我们有两个 主要问题:

各种技术栈 (PHP、Vue、React、Nuxt、Go)同时维护,文档不完整,可能会耗费大量时间去理解代码,尤其是对于不熟悉框架的工程师,甚至是新员工。审查代码时的上下文切换 使得难以审查其他队友对复杂项目的合并请求并快速提供更好的代码建议。

为了防止这些问题再次发生,团队必须使用一个主要的技术堆栈

经过详细比较,我们将选择范围缩小到两个 选项——React 和 Vue——​因为我们已经使用这两种技术开发了项目,并且在每个技术栈中都已经有了用户界面 (UI) 库。

取自ulam.io

接下来,我们对每项技术进行了更细致的研究和探索。主要目标是为 React 和 Vue 的 UI 库找到独特的功能、可扩展性、易迁移性和兼容性。为了测试每个 UI 库的兼容性,我们还在即将进行的项目之一中使用了示例 UI 并将其切片。

以下是我们探索的简要总结:

指标

视图

反应

UI 库兼容性

不需要太多的组件开发

不需要太多的组件开发

可扩展性

更容易升级,发布主要更新更慢,清晰的迁移指南

主要版本发布更快,支持渐进更新

其他的

Composition API,强大的社区(Vue Community)

React 最新版本(v18) 渐进更新,不支持IE

从这张表中,我们发现这些框架之间的差异很小,这让我们很难决定使用哪个。最终,我们决定退后一步,看看 Big Why

解决方案

这里的重要原因是“为什么我们需要标准化我们的技术堆栈?”。我们希望简化新员工的入职流程,并降低代码审查期间的复杂性,例如上下文切换,从而最终节省时间。

正如 Kleppmann(2017 年)所说,“软件的大部分成本都在其持续维护中”。在这种情况下,最大的成本就是时间。提高维护的便利性会降低成本,因此我们决定使用可维护性作为我们的北极星指标。

Kleppmann (2017) 还强调了 任何软件系统的三个设计原则:

可操作性:使保持系统运行变得容易。简单性:通过最小化复杂性,新工程师可以轻松理解系统。可演化性:使工程师在未来对系统进行更改变得容易。

牢记这些设计原则,我们定义了 我们选择的技术堆栈必须实现的三个指标:

可扩展性使软件和平台保持最新预测未来可能出现的问题库和文档的稳定性建立良好的发展实践和工具市场用途库或框架的流行度以及各种编码最佳实践

指标

视图

反应

可扩展性

框架

可操作性

更容易更新,因为编写 Vue 的方法不多。

可进化性

由于 Vue 是一个框架,它需要更少的升级步骤。

Library

支持逐步更新,但是在我们的服务上升级 React 时会有很多不同的方法。

库和文档的稳定性

有标准化的文档

有很多版本的文档

市场用途

市场份额较小。

简单

我们可以降低新员工的复杂性,因为 OVO 中的 Vue 标准与其他公司的标准保持一致。

市场占有率较大。

目前市场上有许多 React 变体,因此不同的公司可能有不同的文件夹结构/约定。

截取自 于 2022-10-13

在对 Vue 和 React 进行了详细比较之后,我们决定使用 Vue 作为我们的主要技术堆栈,因为它最符合 Kleppmann 的三个设计原则和我们的北极星可维护性指标。尽管我们注意到使用 Vue 的一些缺点,例如较小的市场份额,但我们发现 Vue 仍然是更好的选择,因为它符合我们所有的指标。

展望未来,我们将只在我们的项目中使用一个技术堆栈,但我们决定不为现有项目迁移技术。这使我们能够继续探索了解 其他技术的发展。我们需要做的一件事是确保我们当前的项目保持最新。

执行

在确定主要技术栈后,我们必须执行以下操作:

为未来的 Vue 项目定义样板,其中将包括通用库或依赖项​​单元测试的实现文件夹结构等项目,以与我们的北极星指标保持一致。使用新组件和最新的 Vue 版本更新我们现有的UI 库。对现有的 React 服务进行定期升级,并创建具有适当文档的标准化代码结构。

有了这些实践,我们可以确保未来的项目标准化,使工程师更容易维护。

影响

标准化我们的技术堆栈有几个主要好处。

可扩展性和可维护性:使用相同的技术堆栈扩展和维护项目要容易得多。例如,当由于系统或库中的某些漏洞而对所有项目实施安全补丁时,我们将需要为每种技术打一个补丁。只有一个堆栈,我们只需要在所有项目中实施一个补丁,节省了大量时间。更快的入职流程:新员工的入职流程得到了简化,因为我们在所有服务之间进行了标准化,这将最大限度地减少上下文切换的数量并降低学习曲线。更快的交付:当更容易实施更改时,会产生复合影响,缩短交付过程并更快地发布到生产环境。最终,更快地交付新产品或新功能将有助于增加收入。学习/结论

对于每一个重大决定,重要的是退后一步并了解其背后的主要动机或主要动机,以保持客观。这就是为什么在我们将可维护性确定为我们的北极星指标后,更容易缩小选择范围并进行详细比较。

北极星指标或决定因素可能会有很大差异,但这取决于您要解决的问题。

注意:OVO 网络团队在 2022 年进行了这项研究,并且在发布时是准确的。此处的信息可能仅适用于 OVO 网络团队。

参考Kleppmann, M. (2017)。设计数据密集型应用程序。北京:奥莱利。国际标准书号:978-1-4493-7332-02022 年最常用的 Web 框架 - Statista

作者:George Matthew Limongan · Sandy Cahya

出处:

标签: #php堆栈是什么意思