留在 Loopback 3 上的缺点是什么

What are downsides to remaining on Loopback 3

我们有一个相当大的 Loopback 3 服务器,现在已经到了 2020 年的“生命周期结束”。

我知道尽快迁移到 Loopback 4 的建议,但我对进行迁移犹豫不决 - LB4 上(尚)不存在 LB3 的大部分功能,LB4 模型关系是 LB3 的一个子集,并且只涉及纯粹的工作量。我也知道(并测试过)LB3 应用程序在 LB4 应用程序中的嵌入。

所以实际上 - 在可预见的未来留在 LB3 的实际缺点是什么?我知道我会失去未来的补丁和修复,例如安全更新,我想 LB3 将限制 nodejs 版本(v10?)。但是,例如 npm 模块是否会变得不可用,或者服务器是否会有一天“停止启动”?还有什么要考虑的吗?

(如果这有管理压力的味道——你是对的)

缺点

有两个主要缺点:

缺乏社区支持

由于 LoopBack 3 由核心维护者 End-of-Life-d (EoL),社区的利益也会发生变化。部分社区可能会选择使用其他替代方案,而其他人可能会迁移 LoopBack 4。

文档和存储库都没有用处,但如果您在某个特定问题上遇到困难,您可能无法获得社区帮助。

LoopBack 4 会随着时间的推移不断改进,迁移指南也会随之迭代。因此,您将有同样的机会在准备好后迁移到 LoopBack 4。

安全

不会应用任何安全补丁,包括上游依赖项的补丁。这使得难以确保软件安全,因为 LoopBack 3 将不再受益于 semi-automated 依赖项更新。

如果上游依赖安全补丁很重要(它们应该很重要),建议维护一个包的分支。

流程看起来像这样:

  1. 将它分叉到另一个 GitHub 仓库
  2. 使用 auto-update 工具,例如 Dependabot
  3. 将 LoopBack 3 依赖项更改为您重新发布的变体

Node.js 安全修复可能也很重要。因此,应尽可能针对 Node.js 的最新 LTS 版本测试软件包。

维护包括更新依赖项和修复这些更新引起的任何不兼容问题。


包会停止工作吗?

很可能不会。除非有任何未解决的错误,否则这些包没有理由会“崩溃”。

作为保证,NPM 不允许取消发布包,除非在极端情况下,package-lock.jsonnpm ci 将确保 mostly-replicable 安装。

但是, 包锁定仅适用于直接依赖项。因此,如果任何上游依赖项应用 backwards-incompatible 更改 而没有 semver major ,则包可能会无意中损坏。

这可以通过使用 NPM Shrinkwraps 来缓解,它会拍摄整个依赖关系树的快照。

Node.js 版本会被限制在 10.x 吗?

是的。这不是一个硬性要求,但不建议冒险进行隐藏的重大更改。

LoopBack 3 是一个 well-covered 应用程序(就测试而言)。因此,该测试套件可用于衡量和检测 Node.js 更新之间的任何潜在不兼容性。

管理呢?

如果您能够维护 LoopBack 3 包的分支,运行 测试套件,并通过 CI/CD 管道更新依赖项和 Node.js LTS 版本,那么它应该是相当安全的。

LoopBack 3 是一个相当成熟的项目。因此,可以假设已经发现了最严重的缺陷。维护 LTS 期旨在允许检测此类错误,而无需添加任何可能导致回归或新的严重缺陷的新功能。 尽管如此,仍然有可能在 EOL 后检测到新的严重缺陷。

您必须自己权衡利弊。考虑到所有这些,它的安全性非常依赖于 运行 LoopBack 上的服务类型3、业务的需要,以及你愿意承担多大的风险。

安全的软件开发生命周期非常重要,在构建产品和服务时应牢记这一点,以防止或缓解这些问题。

何时迁移到 LoopBack 4

我现在开始计划迁移。由于 LoopBack 4 完全重写为 meta-framwork 以迎合 TypeScript 和 OOP 在 Node.js 中的流行,因此迁移需要一些努力。

如果 LoopBack 4 中有您需要的某些功能,那么相关的 GitHub 问题。 LoopBack 4 是一个 community-driven 的开源项目。维护者会尽量满足社区的要求,建设性的反馈可以让核心和社区维护者相应地确定优先级。