我在一家经营多家互联网商店的公司工作。我们即将彻底重写整个代码:网站内容和产品管理、订单处理、合作伙伴关系、会计、客户群等。目前我们有一个系统,所有的东西(所有内部管理站点、业务逻辑和互联网商店网站)都紧密耦合在单个 LAMP 实例上运行,并且绝对所有数据都位于一个字面上的单个垃圾数据库中。正因为如此(也因为 10 年的发展,部分从 perl 重写,php 代码质量)引入了新的网络商店,重新设计任何现有的或改变任何逻辑都是不可能的任务。
为了不仅重写旧代码而且优化系统架构,我肯定决定将网站(相互)分离,将“业务核心”与网站和业务核心相互分离。
从某一点来看,所有网店都主要销售一种常见的产品基础,它们就像镜子一样,有时只是针对国际客户进行了不同的设计(标题和描述可能会有所不同)。我们销售的东西是一种服务产品,它依赖于当地的合作伙伴,但具有共同的预定义产品范围。但是在几个城市我们有特价,在其他城市我们提供除了普通范围之外的增强产品范围。因此,我们还运行专注于单个城市的专门网站、仅销售特价商品的网站等等。
与每个网站都有自己的产品数据库(有时是另一个网站的副本)的解决方案相比,我正在考虑将所有产品描述信息、不同城市和/或不同站点的可用性和价格组合到一个独立的产品管理系统中并通过 SOAP 提供所有信息。每次任何用户访问任何站点时,站点都会使用该服务(提供一些参数)然后列出产品。显然,可以开发通用访问库以将其包含到每个站点。
1)该解决方案是否足够?如果没有缓存,它会执行得足够快吗?我们的资源有限(1.5 开发人员),所以我尽量不(如果可能)引入额外的技术复杂性,例如在每个站点上使用 memcached 的要求。
2)假设,我以解耦的方式重建系统。收益是否足以让我自己参与 memcached 等的所有工作?
3)在SOAP服务器端缓存数据是合理的,而不是在网站上继续发出数千个soap请求?
所有系统将被解耦,其中一些相关的网站例如订单处理,客户授权(所有网站通用),收款集成等。如果订单处理时需要下订单-site通过SOAP远程把它放到订单处理系统中,然后反过来暴露自己的SOAP服务器来接收订单状态更新。
4) 以 SOAP 为中心的解耦哲学对吗?
使用的技术是 nginx、php、MySQL