为Storefront和后端或单个项目创建单独的项目是否更好?

时间:2017-09-08 07:09:34

标签: java api web-applications architecture

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

  1. 两个项目 - 店面管理员
  2. 店面项目包含道具,模型,服务,控制器和视图,用于显示网站的店面视图,并且还包含应用的API
  3. 管理项目包含dao,model,service,controller和views,用于显示管理此电子商务商店的后端/管理界面。
  4. 店面和管理员都可以独立地与常见的MySQL数据库交谈,只要这两个项目之间需要进行任何通信,他们就可以使用REST API来实现这一点。
  5. 我遵循这种架构来独立开发这两个项目,保持它们的轻松,并独立部署它们。
  6. 但我不确定这是正确的做事方式。我经常遇到的主要问题是:

    1. 它通常导致代码重复,主要是在模型中,因为它是两个项目都有的东西,但它们中的大多数属性都很常见。
    2. 如果需要对数据库进行任何更改,那么我必须确保在两个项目中正确进行这些更改,因为两者都进行了独立的数据库调用。
    3. 请建议处理和设计此类项目的最佳方法。网站统计信息是:

      1. 约100万件产品
      2. 每月流量约100万
      3. 每天订单约1000
      4. 我们正在寻求未来9个月的流量和订单增长。所以请建议记住未来的可扩展性。

1 个答案:

答案 0 :(得分:1)

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

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

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

希望这些想法有所帮助。