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

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

内容简介:在现代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上获得,其原理可适用于任何类型的外部存储。


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

查看所有标签

猜你喜欢:

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

Hacking

Hacking

Jon Erickson / No Starch Press / 2008-2-4 / USD 49.95

While other books merely show how to run existing exploits, Hacking: The Art of Exploitation broke ground as the first book to explain how hacking and software exploits work and how readers could deve......一起来看看 《Hacking》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码