软件应用的稳定性和可靠性在很大程度上取决于它们所运行的开源运行环境的稳定性和可靠性。不幸的是,破坏运行时环境的稳定性太容易了。事实上,有时似乎世界都在反对你完成你的冲刺交付品,当。
- 一个开源开发者可以 删除 或 破坏 公共资源库中的一个关键依赖,破坏你的构建。
- 强制的依赖性升级突然导致了环境的破坏。
- 你升级了你的语言版本,却突然发现你刚刚使用的库出现 "找不到包 "的错误。
- 你的老板要求你帮助调试产品的旧版本,但你甚至不能重现环境,因为跨期依赖已经转移了。
- <在此添加你自己喜欢的原因>。
如果没有一个强大的策略(和相应的流程)来密切管理环境,不可靠的运行时可能会导致一些常见问题,包括。
当然,作为开发者,我们往往不会让自己轻松,因为我们总是在导入/升级第三方软件包和工具来测试或帮助解决开发问题。而试图回到一个稳定的状态可能是有问题的。虽然大多数组织都会编写自己的自动化脚本来帮助建立、拆除、重新创建和/或更新环境(尤其是内置容器的环境),但它们往往会导致工具、脚本和Readmes的激增,在快速变化的开发环境中可能会或可能不会得到很好的维护。
这篇博文旨在帮助你识别导致不稳定环境的模式,并建议你使用一些工具和流程来增加环境的可靠性,或者在环境确实变得不稳定时自动恢复它们。
全球环境与虚拟环境
几十年来,全局安装开源语言一直是开发者创建其开发环境的标准方式。全局安装允许在本地系统上安装单一版本的语言,以及一个单一的目录来容纳你的项目所需的所有依赖。不幸的是,全局安装已经被认为会导致一些常见的问题,包括。
- 依赖性冲突 - 因为全局安装为你在每个项目中使用的所有依赖项创建了一个单一的目录,当两个不同的项目需要相同的依赖项,但版本不同时,就会导致依赖性冲突。
- 损坏的环境 - 将你的开源语言更新到一个较新的版本,经常会导致 "未找到 "错误、符号链接问题和其他问题,迫使你手动更新目录和PATH变量。
- 多个软件包管理器 --当专有生态系统的软件包管理器(如Conda)不支持你的项目所需的软件包时,你就需要用生态系统的标准软件包管理器(如pip)来安装它。这可能会导致找不到包,二进制不兼容,等等。
解决这类问题的方法之一是使用虚拟环境来代替。虚拟环境包含一个版本的编程语言和你的项目需要的所有依赖。通过这种方式,你可以。
- 隔离你的项目的每一个依赖项,从而减少依赖项的冲突。
- 安装多个版本的编程语言,并在它们之间进行切换,简化一个软件应用程序的多个版本的工作。
- 更好地管理、优化和审计你每个项目的依赖关系。
虽然一些开源生态系统已经使虚拟环境成为一流的公民,但其他的还没有,这意味着你需要采用第三方工具来帮助你创建和管理你的虚拟环境。但其好处远远超过了启动所需的爬升时间,尤其是当你在多个项目上工作时。
本地虚拟环境提高稳定性
ActiveState平台包含自己的开源组件和语言版本目录,它可以按需自动为您基于Windows、Mac或Linux的项目建立运行环境。
一旦构建完成,平台就会默认将你的项目的开源语言和依赖项安装到一个虚拟环境中。通过这种方式,你可以确保你的每个项目(以及它们的依赖关系)都是隔离的,不会相互踩踏。此外,你对你的任何一个虚拟环境所做的所有改变都被保存为类似于Git的提交,可以随时恢复。这意味着。
- 从v.1到v.late,对你的应用程序的运行环境的所有变化都有一个审计跟踪。
- 你总是可以在任何时间点恢复环境,甚至几年后。再也不会出现 "无法重新建立 "的情况。
- 试图恢复被破坏的环境所浪费的时间,只不过是恢复到最新提交的几分钟而已。
看看它是如何工作的。
ActiveState平台还可以创建和恢复你的提交分支,并帮助你 在开发、测试和生产中实现 可重复的环境 。
接下来的步骤。
这里显示的功能也可以作为管理服务提供,使您的开发人员能够专注于编码,使您的产品更快地进入市场。了解更多关于我们的托管构建服务。
继续阅读。
- 阅读我们的编码员数据表。高级软件包管理
- 阅读一下。如何管理Python环境。全局与虚拟