SlimFast Maven插件:HubSpot避免SpringBoot肥胖巨大JAR的方法

栏目: Java · 发布时间: 5年前

内容简介:在现代Java Web开发中,构建和部署胖JAR大型文件可能存在明显的缺点。HubSpot工程团队创建了一篇该博客解释了团队最初如何使用Maven Shade插件来构建和打包应用程序,但这使得一个应用程序包含70个类文件 - 在原始JAR中总计210 KB,不包含任何依赖项 - 转换为150多MB大小的肥胖Jar。使用Shade将100,000多个文件合并到一个存档中也是一个缓慢的过程,然后当构建服务器将生成的JAR复制并部署到AWS S3存储服务时,这会消耗时间和网络资源。HubSpot团队拥有100名工

在现代Java Web开发中,构建和部署胖JAR大型文件可能存在明显的缺点。HubSpot工程团队创建了一篇 精彩的博客文章 ,解释了他们在将大型胖JAR持续部署到AWS云时,内部开发循环和网络带宽使用带来的一些挑战。

该博客解释了团队最初如何使用Maven Shade插件来构建和打包应用程序,但这使得一个应用程序包含70个类文件 - 在原始JAR中总计210 KB,不包含任何依赖项 - 转换为150多MB大小的肥胖Jar。使用Shade将100,000多个文件合并到一个存档中也是一个缓慢的过程,然后当构建服务器将生成的JAR复制并部署到AWS S3存储服务时,这会消耗时间和网络资源。HubSpot团队拥有100名工程师,每天不断提交并触发1,000-2,000次构建,这种情况得到了放大。他们每天产生50-100 GB的构建工件!

HubSpot团队最终创建了一个新的Maven插件: SlimFast 。这个插件与Shade插件的不同之处在于它将应用程序代码与相关的依赖项分开,因此构建并上传两个单独的工件。单独构建和上载应用程序依赖项可能听起来效率低下,但只有在依赖项发生更改时才会执行此步骤。由于依赖项不经常更改,HubSpot团队声明此步骤通常是无操作; 包依赖关系的JAR文件只上传到S3一次。

HubSpot博客文章和相应的GitHub存储库提供了全面的详细信息,但实际上,SlimFast插件使用Maven JAR插件向Skinny JAR添加一个Class-Path清单条目,指向依赖项的JAR文件,并生成一个JSON文件有关S3中所有依赖项工件的信息,以便以后可以下载这些工件。在部署时,HubSpot团队会下载所有应用程序的依赖项,但随后会在每个应用程序服务器上缓存这些工件,因此这一步骤通常也是无操作。最终结果是在构建时只上传了应用程序的瘦小JAR,这只是几百千字节。在部署时,只需要下载相同的瘦JAR,这需要几分之一秒。

SlimFast插件目前与AWS S3绑定用于存储工件,但代码可在GitHub上获得,其原理可适用于任何类型的外部存储。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Masterminds of Programming

Masterminds of Programming

Federico Biancuzzi、Chromatic / O'Reilly Media / 2009-03-27 / USD 39.99

Description Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. Think along with Adin D. Falkoff (APL), Jame......一起来看看 《Masterminds of Programming》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具