Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 拥有CRM以供其他应用程序使用_Grails_Design Patterns_Architecture_Crm_Software Design - Fatal编程技术网

Grails 拥有CRM以供其他应用程序使用

Grails 拥有CRM以供其他应用程序使用,grails,design-patterns,architecture,crm,software-design,Grails,Design Patterns,Architecture,Crm,Software Design,我们为我们的web应用程序构建了自己的CRM,该应用程序还具有其他几个功能。 现在我们收到了管理层的请求,要求另一个web应用程序也使用我们的CRM。 我们当前的web应用程序是单片的,这意味着所有内容都在一个使用Grails开发的大型web应用程序中 一个开发人员的第一个想法是创建一个RESTAPI,这样他们就可以使用我们的CRM功能,客户是在我们的应用程序/DB中创建的,并且将始终同步回他们的应用程序 我认为这不是最好的主意,最好是将我们的CRM从单一的web应用程序中去掉,并制作一个独立版

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

一个开发人员的第一个想法是创建一个RESTAPI,这样他们就可以使用我们的CRM功能,客户是在我们的应用程序/DB中创建的,并且将始终同步回他们的应用程序

我认为这不是最好的主意,最好是将我们的CRM从单一的web应用程序中去掉,并制作一个独立版本的it微服务。然后,这个独立版本应该可以为数据库、文件存储、实体、工作流等配置


你们对此有何看法?也许有人对这个特定的用例有另一个好主意吗?

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


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

我们无法回答您的问题。这是您必须为您的项目、您的团队、您的需求做出的架构决策。。。没有银弹了,谢谢你,戈兰。我错过了通知另一个Web应用程序是用完全不同的编程语言PHP和C++构建的。因此,首先为另一个应用程序创建RESTAPI,以便在两个应用程序之间使用我们的CRM和同步,这可能是最快、最简单的解决方案。当然,我认为我们应该把性能关键的东西,比如HibernateSearch,DB。。