Я работаю в компании, управляющей несколькими интернет-магазинами. Мы собираемся полностью переписать весь код: управление контентом сайта и продуктами, обработка заказов, отношения с партнерами, учет, клиентская база и прочее. На данный момент у нас есть система, в которой все (все сайты внутреннего управления, бизнес-логика и веб-сайты интернет-магазинов) тесно связаны, работают на одном экземпляре LAMP, и абсолютно все данные находятся буквально в одной мусорной базе данных. Из-за этого (а также из-за 10-летней разработки, частично переписанного с perl, качества php-кода) введение нового интернет-магазина, редизайн любого существующего или изменение чего-либо в логике является практически невыполнимой задачей.
Чтобы не только переписать старый код, но и оптимизировать системную архитектуру, я, безусловно, решил отделить веб-сайты (друг от друга), отделить «бизнес-ядра» от веб-сайтов и бизнес-ядра друг от друга.
С одной стороны, все интернет-магазины в основном продают одну общую базу продуктов, они являются своего рода зеркалами, иногда просто по-разному ориентированными на международных клиентов (названия и описания могут различаться). То, что мы продаем, является сервисным продуктом, который зависит от местных партнеров, но с общим предопределенным ассортиментом. Но в некоторых городах у нас действуют специальные цены, в других городах мы предлагаем расширенный ассортимент в дополнение к общему ассортименту. Поэтому мы также запускаем специальные веб-сайты, ориентированные на один город, веб-сайты, которые продают только специальные предложения и так далее.
В отличие от решения, в котором каждый веб-сайт имеет свою собственную базу данных продуктов (которая иногда является копией другой), я рассматриваю возможность собрать всю описательную информацию о продуктах, доступность в разных городах и/или на разных сайтах и цены в единую изолированную систему управления продуктами. и подавайте всю информацию через SOAP. И каждый раз, когда любой пользователь посещает какой-либо сайт, сайт будет использовать эту услугу (предоставляя некоторые параметры), а затем перечислять продукты. По-видимому, можно разработать библиотеку общего доступа, чтобы включить ее в каждый сайт.
1) Является ли это решение адекватным? Будет ли он работать достаточно быстро без кэширования? У нас ограниченные ресурсы (1,5 разработчика), поэтому я стараюсь не вводить (по возможности) дополнительные технические сложности, такие как требование использовать memcached на каждом сайте.
2) Предположим, я реконструирую систему несвязанным образом. Будет ли выгода адекватной, чтобы заниматься всей работой с memcached и т.д.?
3) Разумно кэшировать данные на стороне SOAP-сервера, а не на веб-сайте и продолжать делать тысячи мыльных запросов?
Все системы будут разделены, некоторые из них связаны с веб-сайтом, например, обработка заказов, авторизация клиентов (общая для всех веб-сайтов), интеграция приема платежей и т. Д. В случае обработки заказа, когда заказ необходимо разместить через Интернет. - сайт удаленно приводит в порядок систему обработки через SOAP, а затем, в свою очередь, предоставляет собственный SOAP-сервер для получения обновлений статуса заказа.
4) Верна ли эта философия разъединения, ориентированная на SOAP?
Используемые технологии: nginx, php, MySQL.