首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >12因素和外部依赖(Web服务器)

12因素和外部依赖(Web服务器)
EN

Software Engineering用户
提问于 2021-04-01 18:40:19
回答 1查看 56关注 0票数 1

关于12因素原则的问题,特别是依赖步骤:

https://12factor.net/dependencies

从我阅读这篇文章的方式来看,一般的想法是,您想要的代码不依赖于系统范围的包(因此,我收集的是遵循干燥原则的集中式库),而这些依赖关系应该被隔离(也就是说,与应用程序一起打包时,不需要依赖外部依赖)。

在Java世界中,POM将处理其中的显式部分,您可以引入依赖管理解决方案(如Nexus )来跨代码库集中存储库。

我的问题是关于外部依赖,例如对web服务器(Jetty、Tomcat等)的依赖。现在在项目中看到嵌入式web服务器并不疯狂--但是没有这种架构的项目呢,而是依赖外部web应用程序呢?这如何与12要素学科相适应?从技术上讲,这并不是“库”依赖,这一步似乎表明了这一点。

EN

回答 1

Software Engineering用户

发布于 2021-04-01 19:12:10

12因素推动你走向的更多的是一种微型服务方式,每一个应用程序都是一个独立的网络服务。您的应用程序不应该依赖特定的服务器来运行,它应该是一个服务器。

当然,您的应用程序还可能需要与其他网络服务(例如数据库)通信。12要素解决方案是将这些外部服务视为配置。一种典型的方法是向应用程序提供一个环境变量,该环境变量包含可以访问网络服务的URL。

事实证明,Docker容器(以及类似的技术,特别是Kubernetes)对于12要素应用程序来说是一个很好的模型。容器封装任何潜在的依赖项(不能访问主机系统上的东西),而典型容器所公开的唯一依赖项是开放的网络端口。然后,主机系统可以转发端口,使服务可供世界使用。

有一种观点认为,在Java世界中,您宁愿使用WAR或JAR之类的东西,而不是容器(尤其是因为Java 9使依赖隔离成为可能),而不是使用主机操作系统,而是使用像Tomcat/Catalina这样的Java容器。虽然这样可以获得12要素的一些优势,但您仍然被限制在JVM中。即使本机解决方案实际上是一个运行应用程序的基于JVM的服务器,使用本地解决方案也要灵活得多。我个人的观点是,在当今的环境中,任何通过WAR的JavaEE、servlet和部署都是完全过时的。如果您想使用Java (这很好),只需嵌入Jetty服务器即可。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/425033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档