这是我的问题:我们有 N 个应用程序在 M 个不同的环境(qa/prod/etc.)中运行,每个环境有 P 个服务器。相乘,独特配置的数量达到数百个。这些应用程序中的每一个都有一组特定于环境的属性(公共主机名、侦听端口、最大内存等)。
相乘,有数千个属性需要设置。但是,定义属性应该是什么的实际规则要简单得多。例如,在每个物理服务器有两个应用实例的生产环境中,一个应用绑定到端口 8080,另一个绑定到 8081。
这就是我想要的:一种语言 (DSL),我可以使用它指定规定属性设置应该是什么的规则。我想避免重复自己。语言应该是声明性的。我们非常以 Java 为中心,但我需要做的就是生成名称/值对,所以我不想限制自己。
这样的事情存在吗?我什么也没找到。
我想我可以使用 Drools 或其他规则引擎,但这对于这个目的来说非常繁重。属性文件是最小的公分母。我们可以将它们放入 war/ear 文件中,在构建过程中使用它们进行基于模板的替换,等等。当然有更优雅的方法来解决这种性质的问题,但我们有点坚持我们的架构,至少在短期。