在DevOps中管理软件工件

JFrog支持
2021-10-12 15:09

如果您创建软件,那么您肯定会在此过程中创建许多软件工件。工件是软件交付过程的自然副产品,并且管理高效和安全的方式对于确保交付链的健康和可靠性至关重要。

这篇文章解释了什么是软件工件,为什么它们对DevOps团队很重要,以及如何最好地接近它们构件管理作为DevOps战略的一部分。

什么是软件工件?

软件工件是作为软件交付过程的一部分而产生的任何类型的对象(例如持续集成/持续(CI/CD)交付管道).

工件可以是源代码、文档、容器映像、软件许可或团队在构建软件时生成的任何其他类型的文件或资源。实际上,您可以将软件工件看作软件交付过程的“废气”。它们是在DevOps团队工作时自然产生的。

团队通常将工件存储在构件库,它为管理团队创建的所有工件提供了一个安全的、集中的位置。

为什么软件工件对DevOps很重要

软件构件可以存在于任何类型的应用程序开发环境中——它们并不是采用DevOps的组织所独有的。

然而,工件在DevOps中扮演着特别重要的角色,原因如下:

资源再利用2022世界杯阿根廷预选赛赛程

DevOps团队以重复的版本交付软件。有时,他们可能需要重用早期发布周期中的工件,以帮助生成后期的发布周期。

例如,来自前一个版本的文档工件对于识别该版本的已知问题可能是必要的,以便在下一个版本中解决这些问题。或者,开发人员可能会从应用程序中删除一些源代码,后来才发现他们需要重新合并这些代码。

在这种情况下,团队可以重用早期发布周期中的构件,以保持当前构件快速有效地运行。

团队协作

DevOps发布周期由各种不同的阶段组成,例如开发、测试、部署和生产管理。流程中的每个步骤通常由不同的团队“拥有”,该团队在工作时生成不同类型的工件。例如,开发人员创建源代码,而测试团队创建二进制文件,IT团队生成文档以跟踪生产中出现的问题。

通过在DevOps组织中共享工件,这些不同的团队之间的协作变得更加容易。例如,开发人员可能希望查看IT团队创建的文档,以便发现生产中发生的问题,然后开发人员可以在下一个发布周期中修复这些问题。

快回滚

在团队需要执行回滚时,工件是非常重要的资源,回滚意味着将应用程序恢复到早期版本。DevOps团队通常使用回滚来解决生产环境中出现的问题。通过回滚到已知稳定的早期版本,团队可以在修复问题的根本原因时最大限度地减少对用户的破坏。

为了执行回滚,团队需要容器映像或应用程序早期版本的二进制文件等构件。如果他们手头没有这些工件,他们将不得不从头开始重新构建应用程序。这可能需要一些时间,当团队需要立即回滚部署以纠正影响最终用户的问题时,这就成了一个问题。

在DevOps中使用软件构件的最佳实践

至少,简单地以集中的方式存储工件是确保DevOps团队在需要时能够访问所需工件的基本步骤。但是团队还应该坚持其他的最佳实践,以帮助他们最大限度地利用现有的工件。

保持工件与元数据同步

软件工件通常有与之相关的元数据。元数据是上下文信息,比如工件是什么时候创建的,或者它是哪个发布周期的一部分。

在某些情况下,访问元数据与拥有工件本身同样重要。在管理工件时,努力确保元数据与工件一起可靠地存储,并且即使在工件更新或移动时,它们的元数据也保持不变。

在团队中共享工件

如上所述,能够跨DevOps组织共享工件有助于不同的团队协作和协调他们的活动。因此,最好的工件管理策略是允许所有团队成员访问他们需要的工件。您应该避免这样的实践:每个团队单独存储其工件,使得其他团队难以访问它们。

执行软件工件访问控制

访问控制(控制谁可以访问工件)对于安全地管理工件是必不可少的。尽管在团队之间共享工件通常是有益的,但是有些工件本质上可能是敏感的,并且不是所有的团队都应该总是能够访问所有的工件。

例如,如果工件包含私有用户数据,那么它应该以这样一种方式存储,即只有有理由需要该数据的工程师才能访问它。同样,文档构件有时可能包含敏感信息,可以帮助攻击者找到系统或应用程序中的弱点,这使得为文档设置访问控制非常重要。

适当地保留工件

DevOps团队可能需要在构件创建很久之后访问构件。即使您认为您永远不需要再次使用工件,也可能会出现需要使用工件的情况。例如,您永远不知道什么时候需要检查旧源代码或应用程序二进制代码来研究安全事件。

出于这个原因,建立保留策略是一种最佳实践,它允许您存储工件,只要您可能合理地需要访问它们。尽管由于存储限制,无限期地保留每个工件并不总是可行的,但是您应该根据将来需要它们的可能性和存储它们的成本,为不同类型的工件设置保留策略。相对不重要的工件,或者消耗大量空间的工件,可能不需要像较小的或任务关键的工件那样被保留。

充分利用软件构件

软件构件是DevOps团队的重要资源。它们有助于将风险降至最低,并增强协作和效率。这就是为什么实现一个安全、集中的工件管理平台是明智的,比如JFrog Artifactory,它允许团队存储任何类型的工件,只要他们需要,同时维护粒度访问控制和元数据。