留在 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 依赖项更新。
如果上游依赖安全补丁很重要(它们应该很重要),建议维护一个包的分支。
流程看起来像这样:
- 将它分叉到另一个 GitHub 仓库
- 使用 auto-update 工具,例如 Dependabot
- 将 LoopBack 3 依赖项更改为您重新发布的变体
Node.js 安全修复可能也很重要。因此,应尽可能针对 Node.js 的最新 LTS 版本测试软件包。
维护包括更新依赖项和修复这些更新引起的任何不兼容问题。
包会停止工作吗?
很可能不会。除非有任何未解决的错误,否则这些包没有理由会“崩溃”。
作为保证,NPM 不允许取消发布包,除非在极端情况下,package-lock.json
和 npm 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 的开源项目。维护者会尽量满足社区的要求,建设性的反馈可以让核心和社区维护者相应地确定优先级。
我们有一个相当大的 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 依赖项更新。
如果上游依赖安全补丁很重要(它们应该很重要),建议维护一个包的分支。
流程看起来像这样:
- 将它分叉到另一个 GitHub 仓库
- 使用 auto-update 工具,例如 Dependabot
- 将 LoopBack 3 依赖项更改为您重新发布的变体
Node.js 安全修复可能也很重要。因此,应尽可能针对 Node.js 的最新 LTS 版本测试软件包。
维护包括更新依赖项和修复这些更新引起的任何不兼容问题。
包会停止工作吗?
很可能不会。除非有任何未解决的错误,否则这些包没有理由会“崩溃”。
作为保证,NPM 不允许取消发布包,除非在极端情况下,package-lock.json
和 npm 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 的开源项目。维护者会尽量满足社区的要求,建设性的反馈可以让核心和社区维护者相应地确定优先级。