I am working on a company running several internet shops. We are about completely rewrite the whole code: site content and products management, order processing, partner relations, accounting, customer base and other. Currently we have a system, where all the stuff (all internal management sites, business-logic and internet store web sites) is tightly coupled running on a single LAMP instance, and absolutely all data is located in a literally single garbage database. Because of this (and also because of 10 years development, partially rewritten from perl, php code quality) introducing new web-store, redesigning any existing or changing anything in logic is kind of impossible task.
In order to not only rewrite old code but also optimize system architecture, I am surely decide to separate web sites (each other from), decouple "business cores" from web sites and business cores each other from.
From one point all web shops mostly sells the one common product base, they are kind of the mirrors, sometimes just designed differently to target international customers (titles and descriptions may vary). Stuff we sell is a service product that depends on local partners but with common predefined product range. But in several cities we have special prices, in others cities we offer enhanced product range in addition to common range. So we also run dedicated web-sites focused on a single city, web-sites that sells special offers only and so on.
In contrast to solution where each web site have their own product database (that sometimes is copy of another) I am considering to compose all the products descriptive information, availability in different cities and/or different sites and prices into a single isolated product management system and serve all the info thru SOAP. And every time any user will visit any site, site will consume that service (providing some parameters) and then list the products. Apparently common access library can be developed to include it to every site.
1) Is that solution adequate? Will it perform fast enough without caching? We have limited resources (1.5 developer) so I am trying to not introduce (when possible) additional technical complexities like requirement to use memcached on every site.
2) Suppose, I reconstruct the system in a decoupled manner. Will the benefit be adequate to engage myself in all the work with memcached etc.?
3) It is reasonable to cache data on SOAP server side, but not in web-site and continue make thousands of soap request?
All systems will be decoupled, some the web-site related of them is for example order processing, customer authorization (common accross all web-sites), payment receiving integration and etc. In case of order processing when order is need to be placed web-site remotely put it in order processing system thru SOAP, and then in turn expose their own SOAP server to receive order status updates.
4) Is that decoupling SOAP -centric philosophy right?
Technologies to use are nginx, php, MySQL