【问题标题】:Is it better to have separate projects for Storefront and backend or single?为 Storefront 和 backend 单独的项目还是单独的项目更好?
【发布时间】:2018-02-17 00:48:59
【问题描述】:

我正在运行一个使用 Spring 和 Hibernate 以 Java 构建的电子商务网站。如果我必须简要描述当前的架构,那么它是这样的:

  1. 两个项目 - store frontadmin
  2. Storefront 项目包含 dao、模型、服务、控制器和视图,用于显示网站的店面视图,还包含应用程序的 API
  3. Admin 项目包含 dao、模型、服务、控制器和视图,用于显示用于管理此电子商务商店的后端/管理界面。
  4. Storefront 和 admin 都独立地与通用 MySQL 数据库通信,并且每当需要在这两个项目之间进行任何通信时,他们都会使用 REST API 来实现。
  5. 我遵循此架构独立开发两个项目,保持轻量级并独立部署。

但我不确定这是不是正确的做事方式。我经常遇到的主要问题是:

  1. 它通常会导致代码重复,主要是在模型中,因为这两个项目都有,但它们中的大多数属性是共同的。
  2. 如果需要对数据库进行任何更改,那么我必须确保在两个项目中正确进行这些更改,因为它们都在进行独立的数据库调用。

请提出处理和构建此类项目的最佳方法。网站统计数据为:

  1. 大约 100 万种产品
  2. 月流量约100万
  3. 每天订单约 1000 个

我们希望在未来 9 个月内实现更多流量和订单增长。因此,建议您牢记未来的可扩展性。

【问题讨论】:

    标签: java api web-applications architecture


    【解决方案1】:

    共享通用模型:关于跨应用程序共享的通用模型,这些应用程序可能会增长并易于频繁更改,您可以使模型成为一个单独的项目,在每个项目中都有其 pom 依赖项。更好的是使用 json 模式定义保留该项目并使用 maven 插件(假设您使用 maven)在构建期间将它们转换为 POJO 并添加到您的项目类路径中。请参考jsonschema2pojo

    网站统计/流量增长:为此,请考虑负载平衡集群(如果您尚未完成)您的网络/应用程序服务器添加多个节点。这将有助于提高应用程序的可用性并处理繁重的流量。

    可能还有其他更好的解决方案,但这些点值得考虑。我对您的其他观点有一些想法,但我觉得与对建筑有更深入了解的其他人可能会有更好的解决方案。

    希望这些想法有所帮助。

    【讨论】:

    • 我期待更多的回应,但没有。我喜欢你关于共享通用模型的想法。您能否分享更多与更好的项目结构相关的想法。我对处理流量增长有很好的了解。但是创建一个结构化和可维护的项目是我在互联网上找不到任何资源的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2015-05-17
    • 2020-10-23
    • 2012-04-01
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多