我有一个大型的单体 web 应用程序,每当我对 web 应用程序的特定部分进行更改时,我都被迫部署整个应用程序。
我想根据功能将其分解为更小的块(例如在银行网站中 - 我想将信息内容与网上银行功能分开,所以如果我对网上银行功能进行更改,我只需部署该部分)
这里的挑战是 webapp 中是否存在某些公共元素,例如跨应用程序共享的公共类。
关于可以完成 webapp 分区的不同方式的任何想法?谢谢。
我有一个大型的单体 web 应用程序,每当我对 web 应用程序的特定部分进行更改时,我都被迫部署整个应用程序。
我想根据功能将其分解为更小的块(例如在银行网站中 - 我想将信息内容与网上银行功能分开,所以如果我对网上银行功能进行更改,我只需部署该部分)
这里的挑战是 webapp 中是否存在某些公共元素,例如跨应用程序共享的公共类。
关于可以完成 webapp 分区的不同方式的任何想法?谢谢。
这不是特定于 tomcat 的,但一般来说,如果您要拆分 Web 应用程序,您将需要某种方式在分布式部分之间共享不同的状态。您可以使用数据库或 memcached 存储会话信息来执行此操作,但要确保每个应用程序都可以读取公共会话数据(某些框架将使用密钥来加密会话数据,并且需要所有的密钥都具有相同的密钥才能读取它)。我认为大多数会话信息的 cookie 存储不会以 cookie 无法在应用程序之间正确持久的方式散列。
按功能分解是最有意义的。看看你可以在哪里分离你的后端代码。如果你有很好的 restful 类型的 url,你可能可以查看你的 URL 来帮助确定好的分区。
此外,如果您有一个要单独更新的大型静态部分,那么也许应该由 tomcat 以外的其他东西提供服务。
对于通用类,您可以将类实现放在您的 tomcat/lib 文件夹中的 jar 中。它们将可供整个服务器使用。它们不能很好地适应您的 Web 上下文(除非您将上下文传递给它们),并且您必须重新启动整个服务器以更新 jar 文件以让 tomcat 重新加载它。
也许您可以使用接口解决一些问题,让您在每个分区中获得更多独立性,从而允许它们以某种方式独立编译。也许一些远程方法调用也可以帮助您将常用函数移动到单个 .jar 或 .war 中。