【问题标题】:Own CRM to get used by other application [closed]拥有自己的 CRM 以供其他应用程序使用 [关闭]
【发布时间】:2020-02-01 12:02:16
【问题描述】:

我们为我们的 Web 应用程序构建了自己的 CRM,该应用程序具有其他几个功能。 现在我们收到了管理层的请求,要求另一个 Web 应用程序也应该使用我们的 CRM。 我们当前的 Web 应用程序是一个单体应用程序,这意味着一切都在一个使用 Grails 开发的大型 Web 应用程序中。

一个 DEV 的第一个想法是创建一个 REST API,以便他们可以使用我们的 CRM 功能,并且客户是在我们的应用程序/数据库中创建的,并且始终会同步回他们的应用程序。

我认为这不是最好的主意,最好的办法是将我们的 CRM 从单一的 Web 应用程序中剔除并制作一个独立版本(微服务)。然后,这个独立版本应该可以针对数据库、文件存储、实体、工作流等进行配置......

你们对此有何看法,也许对于这个特定的用例还有其他好主意?

【问题讨论】:

  • 目前我们无法回答您的问题。这是您必须为您的项目、您的团队、您的要求做出的架构决策……没有灵丹妙药。

标签: grails design-patterns architecture crm software-design


【解决方案1】:

如果您可以将现有的 CRM 代码重构为 Grails 插件,那么您可以在当前的应用程序和未来需要 CRM 功能的 Grails 应用程序中使用这些插件。我们正在使用这种方法,并且在生产中拥有 10 多个 Grails 应用程序,并且几乎所有这些应用程序都使用相同的 CRM 插件集。 如果您想了解我们如何拆分域/上下文,您可以在此处找到插件:http://gr8crm.github.io

但是,我们目前正在将所有 CRM 插件迁移到单独的微服务(Spring Boot 和 Micronaut),但这是一项巨大的工作。我的建议是在你走这条路之前仔细考虑。如果您可以将当前单体中的孤立功能逐步分解为微服务,那么它可能值得尝试。但是用微服务替换当前 CRM 中的所有功能可能需要比您预期的更长的时间。

【讨论】:

  • 非常感谢,戈兰。我也错过了通知另一个 Web 应用程序是用完全不同的编程语言(PHP 和 C++)构建的。因此,首先为另一个应用程序创建一个 REST API 以使用我们的 CRM 并在两个应用程序之间进行同步,这也许真的是最快和最简单的解决方案。当然,我认为我们应该移除 HibernateSearch、DB 等性能关键的东西。
猜你喜欢
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 2012-06-22
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
相关资源
最近更新 更多