关于分离 java 网络应用程序部分的建议
Advice on separating parts of java web application
我正在创建一个 Java 预测比特币价格的 Web 应用程序。我有 3 个重要的“部分”:
- Web 堆栈(Spring+Thymeleaf+Hibernate)
- 解析 API 并将 btc 价格保存到数据库中的部分
- 从数据库中获取数据并自动更新自身的机器学习模型。
现在这些部分都在一个 jar 中,存储在不同的包中。我觉得它们完全不同,将它们存储在不同的包中是不够的!
我认为它们应该在某种程度上是独立的:例如,如果出现内部服务器错误,我不想关闭机器学习模型的自优化,只是为了看看 [=30= 发生了什么].
我的业务逻辑应该连续工作,每个部分应该独立于它不需要的任何部分工作。也许它们应该放在三个不同的罐子里?有没有人有过这方面的经验?或者也许有人知道在大型企业项目中不同的逻辑部分是如何分离的?
恕我直言
您提出了两个不同的方面
‘封装问题’——这是关于代码组织/模块化的问题
这有助于保持代码模块化,因此您可以单独构建和测试未直接耦合的代码部分。
'内部服务器错误不应停止 ML'。
这是决定有多少 运行 时间组件/子组件 - 你是 运行ning.
在您的情况下 - 似乎有 2 项服务 - UI & ML.
您可以运行选择运行
1 个应用和 2 个服务(就像你现在做的那样)
或 2 个不同的应用程序,每个应用程序有 1 项服务
根据复杂性,运行时间要求,......等你可以选择
- 您的应用程序代码是否故障安全
对于任一选项 - 要求您将服务部件构建为对常见用例具有故障安全性,即异常处理以确保容器不会因预期错误而崩溃。
(INFRA 故障等……不在此范围内)
注意:如果服务对于常见用例足够安全,您可以使用 1 个应用程序。
如果您选择 2 个不同的应用程序(UI 和 ML 各 1 个),将代码拆分为 2 个子项目是有意义的
- UI
- 毫升
- 公共代码的问题(如第3个)需要根据代码共享量来决定(我猜ML比较轻
数据库)
我正在创建一个 Java 预测比特币价格的 Web 应用程序。我有 3 个重要的“部分”:
- Web 堆栈(Spring+Thymeleaf+Hibernate)
- 解析 API 并将 btc 价格保存到数据库中的部分
- 从数据库中获取数据并自动更新自身的机器学习模型。
现在这些部分都在一个 jar 中,存储在不同的包中。我觉得它们完全不同,将它们存储在不同的包中是不够的!
我认为它们应该在某种程度上是独立的:例如,如果出现内部服务器错误,我不想关闭机器学习模型的自优化,只是为了看看 [=30= 发生了什么].
我的业务逻辑应该连续工作,每个部分应该独立于它不需要的任何部分工作。也许它们应该放在三个不同的罐子里?有没有人有过这方面的经验?或者也许有人知道在大型企业项目中不同的逻辑部分是如何分离的?
恕我直言
您提出了两个不同的方面
‘封装问题’——这是关于代码组织/模块化的问题
这有助于保持代码模块化,因此您可以单独构建和测试未直接耦合的代码部分。'内部服务器错误不应停止 ML'。 这是决定有多少 运行 时间组件/子组件 - 你是 运行ning.
在您的情况下 - 似乎有 2 项服务 - UI & ML.
您可以运行选择运行1 个应用和 2 个服务(就像你现在做的那样)
或 2 个不同的应用程序,每个应用程序有 1 项服务
根据复杂性,运行时间要求,......等你可以选择
- 您的应用程序代码是否故障安全
对于任一选项 - 要求您将服务部件构建为对常见用例具有故障安全性,即异常处理以确保容器不会因预期错误而崩溃。 (INFRA 故障等……不在此范围内)
注意:如果服务对于常见用例足够安全,您可以使用 1 个应用程序。
如果您选择 2 个不同的应用程序(UI 和 ML 各 1 个),将代码拆分为 2 个子项目是有意义的
- UI
- 毫升
- 公共代码的问题(如第3个)需要根据代码共享量来决定(我猜ML比较轻 数据库)