知识卡片

共享应用服务器的耦合代价

专业/工作 · 519.a

内容

传统模式下应用服务器搭建维护成本高,所以往往把多个应用打包成 WAR/EAR 部署到同一台服务器上摊薄成本,副作用是这些应用之间产生了隐性耦合——任何一个应用想升级服务器版本或调整服务器级配置,都得和部署在同一台服务器上的其他团队协调,谁都不能独立演化。云原生应用把服务器内嵌进自己的可执行 JAR(fat-JAR/uber-JAR,包含应用代码、依赖、服务器本身),代价是牺牲了”多应用共享一份服务器资源”的效率,换来的是应用与应用之间的部署完全独立,一对一绑定服务器实例。发散:这是[[端口绑定与自包含应用]]背后更具体的历史动机——不是内嵌服务器技术上有多先进,而是”共享基础设施”和”独立演化”这两个目标天然冲突,云原生选择了牺牲前者换取后者,这笔账在資源便宜、迭代速度值钱的时代明显划算。

参考来源

《Cloud Native Spring in Action》第3章《Getting started with cloud native development》