Java:使用Java开发时使用二进制存储库管理器的12个理由
现代Java开发人员面临着一个加速发展和技术多样化的世界。开源和商业组件补充内部代码,以加快应用程序开发。自动化构建过程的工具,如Maven、Gradle和Ivy,进一步鼓励使用这些组件。2018年的一项分析发现,92%的应用程序使用开源组件,这通常是交付应用程序的大部分。
曾经每年或每年两次发布一个重要的新版本的组织现在通常每月或每周向客户发布一个新版本。许多企业现在每天将更新部署到生产中多次。
开发商正在采用DevOps-能够更频繁、高质量地在生产环境中创建和部署更多版本的工具和最佳实践。DevOps实践旨在减少软件开发生命周期(SDLC)中所有点上的摩擦,并自动化工作流(通过CI和CD服务器等),以大大加快发布速度。
为了取得成功,今天的Java开发人员需要面对许多挑战:
- 各种包类型和构建工具
- 使用元数据共享内部和外部工件
- 通过不可靠或速度受限的网络检索的外部组件
- 生产和管理容器化应用程序的需要
- 通过访问控制确保安全
- 二进制版本跟踪以重现构建
- 基于不同的标准搜索工件
- 与开发生态系统集成
我们将展示Artifactory的前12种方法二进制repository managerJFrog的核心DevOps的平台,为Java开发团队提供了解决这些问题的工具,并通过帮助确保从端到端的平稳和安全的应用程序开发工作流来提高组织的生产力。
DevOps 101:包管理简介
按需观看
1.保持唯一的真相来源
作为JFrog平台背后的力量,Artifactory是你所有工件的通用存储库管理器:依赖项、二进制文件和配置文件。
Artifactory原生支持Java和Kotlin开发人员依赖的包类型,例如Maven、Gradle和Ivy,将所有本地包存储库、JAR和WAR构建保存在一个工具下。通用存储库可以存储支持的工件,例如图形或ZIP文件。你可以通过Artifactory中的私有或公共Docker注册表将你的应用打包到云端。
很少有组织单独使用Java进行开发。Artifactory支持超过30种包类型,包括npm和PyPi,是您存储、保护和跟踪开发组织的整个工件生态系统的单一来源。开发人员可以通过他们每天使用的包管理服务在Artifactory存储库中存储和检索他们的包或映像。
当您的所有二进制文件都通过这个通用工具进行管理时,您的整个企业就可以对齐到相同的SDLC工作流和最佳实践上,这将确保质量并加快发布速度。这就是为什么Artifactory是全自动软件分发为JFrog DevOps平台提供动力的管道。
局部存储库
本地存储库是物理的、本地管理的存储库,您可以在其中部署构件。通常,它们用于存储专有包、内部和外部发布以及开发构建。使用本地存储库,您的所有内部资源都可以通过一个公共URL从整个组织的单个访问点获得。2022世界杯阿根廷预选赛赛程
2.对远程工件的可靠且一致的访问
对于Java开发人员来说,外部存储库是您每天都需要的宝贵资源。2022世界杯阿根廷预选赛赛程来自Maven Central、npm公共注册中心或Docker Hub等远程资源的开源软件依赖关系很容易成为当2022世界杯阿根廷预选赛赛程今应用程序中更重要的代码部分。
确保站点可靠性和快速访问是保持发布速度的关键,但也会面临以下几个挑战:
网络延迟-物理距离的固有延迟-远程站点可能位于地球的另一端。
沉重的负荷-由于对某项服务的大量需求而造成的延误。
可怜的连通性—网络中断、抖动、带宽差、连接不稳定。
网站宕机—存储依赖项的远程站点可能会因故障、攻击或服务丢失而遭受服务中断。
Artifactory是开发人员和外部资源之间的中介。2022世界杯阿根廷预选赛赛程作为一名开发人员,您的所有请求都被定向到Artifactory,以便快速且一致地访问本地缓存在远程存储库中的远程工件。您的开发工作不会因网络问题或存储库宕机而受到阻碍。
远程存储库
远程存储库用作在Maven Central等远程站点管理的存储库的缓存代理。工件根据控制缓存和代理行为的各种配置参数在远程存储库中存储和更新。
3.减少网络流量并优化构建
由于您的大部分代码可能是组装而不是构建的,您希望确保您对从外部资源下载的工件的访问是优化的。2022世界杯阿根廷预选赛赛程对于两个(或200个)使用Maven Central的相同包或DockerHub的基本映像的开发人员来说,分开下载它是没有意义的。
远程存储库减少了外部网络。一旦工件被下载到Artifactory远程存储库中,组织中的所有其他开发人员就可以在本地使用它(从而减少网络流量)。当通过Artifactory访问工件时,这对每个开发人员都是透明的。
此外,从本地缓存中提取工件有助于确保标识的版本对于每个构建都是相同的,防止对远程资源的任何后续不当或恶意覆盖。
一个典型的项目可能依赖于来自外部资源的几十个,甚至上百个工件。2022世界杯阿根廷预选赛赛程要构建这些项目,所有远程构件必须对服务器环境可用。下载所有这些必需的工件可能会在网络上产生千兆字节的数据流量,这会花费大量的时间来延迟构建过程。通过在本地缓存远程工件,构建过程会更快,减少网络拥塞,并确保一致性。
4.结合本地和远程资源2022世界杯阿根廷预选赛赛程
大多数应用程序将利用来自不同来源的专有和开源依赖关系。与其引用每个可以找到的位置,不如通过将多个存储库视为一个单元的单个URL来处理依赖关系,这要方便得多。
使用Artifactory虚拟存储库,您可以定义一组本地和远程存储库,并将其定位为单个逻辑存储库。每个虚拟存储库的行为与Artifactory中的任何其他单个存储库一样,包括使用细粒度的权限控制来授予不同的团队或用户只访问他们需要的虚拟资源。2022世界杯阿根廷预选赛赛程
您还可以通过定义底层存储库顺序来优化工件解析,这样Artifactory将首先查看本地存储库,然后查看远程存储库缓存,只有这样Artifactory才会通过网络并直接从远程资源请求工件。对于开发人员来说,这很简单。只需请求包,Artifactory将根据您组织的策略安全且优化地访问它。
虚拟存储库
虚拟存储库封装了任意数量的本地和远程存储库,并将它们表示为从单个URL访问的统一存储库。它为您提供了一种管理开发人员访问哪些存储库的方法,因为您可以自由地混合、匹配和修改虚拟存储库中包含的实际存储库。
5.跟踪软件物料清单(SBOM)
Artifactory存储新的元数据——我们称之为“构建信息”——与您所做的每个构建一起,链接到您的开源和专有依赖的包元数据,以及构建工件和环境设置。有了详细的构建信息,您可以追溯每个构建的来源,以及它用于服务的每个地方。
您的构建信息是软件材料清单(SBOM)的基础,这是一份机器可读的清单,详细列出了应用程序中包含的所有项目及其来源,适用于每个投入生产或交付给客户的版本。随着越来越多的政府和受监管的行业需要一个SBOM来帮助打击网络攻击,JFrog平台是您的合规性交钥匙解决方案。
Artifactory的构建信息有助于确保您永远不会对构建从何而来、如何创建或在何处部署一无所知。
Artifactory查询语言
Artifactory查询语言(AQL)使您能够发现与Artifactory存储库中存储的工件和构建相关的任何数据。它的语法提供了一种简单的方法来制定复杂的查询,这些查询指定任意数量的搜索条件、过滤器、排序选项和输出参数。AQL作为RESTful API公开,它使用数据流提供输出数据,从而实现极快的响应时间和低内存消耗。
6.构建一次,然后推广
在持续集成的敏捷方法下,每个新软件版本都必须通过SDLC中的几个质量检验关。例如,一个Maven“快照”构建,一旦提升到“发布”,将会先后提升到不同的团队进行集成、测试和登台,然后才发布为通用。
Artifactory的二进制存储库管理提供了一种一致且可靠的提升方法单一的,不可变的二进制通过整个SDLC.使用每个SDLC阶段的存储库,只需将其按顺序转移到下一个回购,就可以在JFrog平台中提升具有元数据的构建。
在这种“一次构建并升级”的方法中,相同的构建在每个阶段都要进行评估,确保DevOps管道的绝对一致性。
在每个阶段,团队可以向候选构建信息中添加关于稳定性、安全性等的额外元数据。通过传递从一个阶段学习到的下一个阶段可以使用的关键元数据,JFrog平台积累了关于投入生产的每个构建的谱系的全面记录。
使用maven构建
使用JFrog命令行界面(CLI)构建和推广Maven应用程序非常容易:
jfrog rt mvn-config #配置Maven jfrog rt mvn清洁安装测试# Maven构建jfrog rt build-collect-env #收集build-info jfrog rt build-publish #发布build-info jfrog rt build-promote target_repo #促进下一个
CHECKSUM-BASED存储
Artifactory通过确保任何二进制及其元数据在文件系统上仅存储一次,以其唯一计算校验和的名称进行存储,从而优化存储。存储库只保存对文件的引用,因此物理文件永远不会被复制,并且它的校验和可以用来验证二进制文件的完整性。
7.加速云原生开发
软件开发越来越多地成为云原生开发:编写应用程序以有效利用云技术基础设施,并启用在云中运行的固有最佳特性。
这意味着生产基于容器的微服务,依赖于已建立的云原生标准(如OCI)和云原生工具(如Docker和Kubernetes)。
JFrog平台中的Docker存储库完全支持所有Docker Registry api,因此它们可以在Docker CLI中原生运行。使用本地存储库,您可以根据需要在Artifactory中维护尽可能多的私有Docker注册表,以便在您的组织中分发和共享Docker和OCI容器映像。
Artifactory揭示了组成它的每个Docker或OCI映像中的层,并将元数据链接到其所有部分的起源的完全可追溯路径。
当与JFrog平台的细粒度访问控制相结合时,您可以维护安全、私有的Docker存储库,其安全性超过Docker可信注册表提供的安全性。使用Artifactory的本地存储库而不是Docker Hub上的私有存储库,可以避免所有互联网连接问题,提供可靠和一致的图像访问。
Artifactory还支持Helm图表存储库,因此您还可以在容器映像的同时管理Kubernetes编排清单。这样,JFrog平台可以作为您全面的Kubernetes注册表,一个中央的、可跟踪的家,用于部署到集群中的所有内容。
docker hub没有限制
JFrog与Docker的合作使Artifactory的JFrog云用户免受Docker Hub的镜像拉速率限制。通常,匿名免费用户每6小时只能拉100次,而经过身份验证的免费用户每6小时只能拉200次。但是当图像提取请求来自JFrog Cloud帐户时,Docker Hub将放弃这些限制。
通过设置Artifactory远程存储库来代理Docker Hub,云用户可以获得对Docker Hub和Docker官方映像的无限高性能访问,简化了云原生应用程序的开发。
8.与您的构建生态系统完全集成
集成复杂的DevOps工具栈对于开发至关重要。首先是自动化构建的工具:您的CI/CD服务器必须与存储它们的系统顺利集成。JFrog平台可以通过以下方式连接到您选择的CI/CD自动化:
CLI—命令行接口(CLI)工具使开发人员能够通过命令窗口、shell脚本或CI管道在存储库中存储和检索二进制文件和元数据。
REST api开发人员可以通过curl或自定义DevOps工具使用REST命令管理二进制存储库。
人则-在另一个服务中触发一个动作以响应Artifactory中的事件,要么通知用户该事件,要么启动一个自动化流程。
用户插件-插件Maven而且Gradle使您能够发布工件和构建信息到具有完全可跟踪构建上下文的Artifactory存储库中,并通过扩展的Artifactory REST API在二进制管理工作流中实现自定义行为。这些插件会自动安装在所有JFrog云帐户上。
构建集成-主要CI工具(如Jenkins、Circle CI、TeamCity、Bitbucket、JFrog pipeline和Azure DevOps)的现成插件和扩展加速了与CI管道的集成。
合作伙伴集成
CI/CD只是您集成需求的开始。的工具自动化测试、协作、ITSM、可观察性和分析都是DevOps基础结构的一部分。您将希望将这些工具生成的信息推入存储库,并将这些信息连接到其他工具。
通过与顶级行业供应商集成的JFrog合作伙伴大家庭,JFrog平台可以通过这个单一的真相来源帮助您快速构建强大、紧密的DevOps工具堆栈。
9.保护软件供应链
保护您的软件供应链(软件包、工件和应用程序的构建)免受错误和攻击,对于保持依赖您交付的那些人的信任和信心至关重要。
供应链攻击的增长使世界经济论坛将其列为最大的网络安全挑战之一。这就是为什么安全是JFrog平台的首要任务:
身份验证—JFrog平台的所有服务都需要通过密码或访问令牌等安全凭证进行认证。
校验和验证-每个工件的计算校验和对于它在Artifactory存储库中的存储方式是不可或缺的,并用于验证其完整性。
权限管理通过JFrog平台的细粒度访问控制,管理员可以确保开发人员和团队只能通过他们被授权的CRUD操作访问存储库或单个工件。
SSO-支持LDAP, SAML, OAuth和SCIM协议,使管理员能够集成单点登录服务,如Active Directory, Crowd和其他安全的,组织范围的凭据管理。
漏洞及license扫描
伴生安全解决方案JFrog Xray对JFrog平台存储库中的二进制文件执行深度递归扫描,以识别已知的所有开源组件软件漏洞.作为JFrog平台的一部分,Xray与Artifactory紧密集成,维护额外的安全元数据并提供影响分析,因此您可以快速修复所有使用易受攻击依赖的二进制文件。
Xray还可以监视开源组件的许可类型,提醒您所有不符合组织策略的组件。
10.使用On-Prem、Cloud和Hybrid进行扩展
作为你的二进制存储库管理器成为您的关键任务工具,您需要确保它可以无缝扩展,即使您的部门在增长。
这些以二进制文件为中心的DevOps最佳实践——真相、元数据、构建升级、安全性等单一来源——已被证明可以顺利扩展。每天,他们都能让JFrog平台的用户快速发布高质量的软件,无论它是由5个人在一个房间里开发的,还是由全球500人开发的。
持续和响应式访问是至关重要的,Artifactory可以在自我管理的系统中配置,以实现高可用性,使用冗余的、负载平衡的实例来降低延迟。
您还可以订阅在您选择的主要云提供商(AWS、GCP或Azure)中托管的JFrog云托管服务,并利用云的“随时随地”可用性和弹性。或者你也可以依靠JFrog平台的“这里一样,那里一样”的承诺,即在每个环境中都具有相同的功能,以一种混合方法将你的工作负载划分为云和就地部署。
高可用性系统
在自管理集群中复制节点的高可用性(HA)配置有助于分散负载,以适应大负载突发,并确保没有单点故障。这使您的正常运行时间最大化,甚至在期间大多数维护任务,最高可达“五个九”级别。
多云和混合
维护托管在不同云提供商上的多个SaaS帐户的多云策略有助于避免供应商锁定,并能够将工作负载分配给最具成本效益的提供商。
混合策略将您自己的防火墙后的自管理服务器与云中受管理的服务结合起来。为动态工作负载使用云的可伸缩性,同时将敏感工作负载保存在安全的本地数据中心中。
11.在企业中分发和共享工件
应用程序是由一个小团队的开发人员在一个房间里创建的时代已经过去了。企业软件开发现在是由遍布全球的多个站点的交叉团队共享的包的高度协作的努力。
Artifactory通过各种推/拉复制拓扑选项支持多站点地理复制,使地理上分布的团队能够处理相同的工件(二进制文件及其元数据),并通过本地存储库实现最小的延迟。
您可以将存储库复制到位于其他地方的另一个Artifactory实例,无论是在另一个站点的本地数据中心,还是在云中。复制的存储库会定期自动与它们的源同步,这样您的工件就可以提供给不同的团队,无论他们位于世界各地。
JFrog独特的多站点功能集确保了任何全局网络拓扑结构中的局部性。位于世界各地的开发人员团队可以以最小的延迟处理相同的工件(二进制文件及其元数据),以便在每个站点上的每个构建都可以快速完成,没有失败。
联合存储库
JFrog Artifactory Federated Repositories是一种创新的双向镜像技术,为多站点团队和项目提供了一种易于设置和维护的选项。通过联合,一个Artifactory部署中的本地存储库在逻辑上被连接起来,从而与其他地方的Artifactory部署中的本地存储库同步。通过联合连接的Artifactory存储库为每个站点提供了一个统一的、可在本地访问的共享全局数据存储库。
12.适用于所有二进制文件的通用端到端解决方案
Artifactory是支持JFrog DevOps平台的核心组件,是一站式DevOps的全面端到端平台解决方案。
对于Java开发人员,以及他们使用的其他技术,成功DevOps的关键——最小化或消除管道中的摩擦——在于通过整个SDLC对二进制文件进行有效管理。二进制存储库管理器是数字化转换的关键代理。
我们在这里给出的原因是这种以二进制为中心的DevOps方法的基本实践。这也是JFrog平台所围绕的核心价值观,以更好地确保您的成功。
Artifactory的设计和特性为所有开发人员提供了DevOps的最佳实践,减少了关键生命周期阶段的摩擦,并加速了软件交付。
