Мне было интересно, есть ли у кого-нибудь понимание этого вопроса.
Небольшая предыстория:
Мы использовали Rails для перехода от старой системы на основе dBase и Visual Basic к созданию внутренней компании IntrAnet, которая выполняет такие функции, как печать этикеток, управление запасами, доставка и т. д. — в основном ERP.
Дилемма
Прямо сейчас нам нужно заменить старый клиентский веб-сайт, созданный на Java, который будет подключаться к нашей внутренней системе для использования нашими клиентами. Мы хотим иметь возможность извлекать информацию, такую как запасы, размещение заказов, выписки по счетам, из нашей внутренней системы и отображать ее на сайте в режиме реального времени. Причина в том, что мы принимаем заказы на веб-сайте, по факсу и телефону, а иногда у нас есть посетители. Так что иногда (очень редко) даже короткая задержка обновления инвентаря на нашем старом Java-сайте заставляет нас размещать заказ в режиме ожидания, потому что мы продаем один и тот же товар 2 клиентам в течение получаса. Обычно это исправляется в течение одного дня, но мы хотим избежать этого в будущем.
Актуальный вопрос
Есть ли у кого-нибудь предложения о том, как сделать это лучше?
Вот три варианта, которые я вижу:
a) Создайте отдельное приложение Rails на веб-сервере, которое будет подключаться к той же БД, к которой подключается наше внутреннее приложение.
+++ Плюсы: Оперативные данные - то же самое, что видят наши внутренние приложения, т.е. заказы создаются в режиме реального времени, запасы истощаются сразу
--- Минусы: Потенциальная угроза безопасности, дублирование кода - т.е. мне нужно дублировать все контроллеры, модели, представления и т.д., которые имеют дело с ордерами.
б) Создайте отдельное приложение Rails на веб-сервере, которое будет подключаться к другой БД из нашего внутреннего приложения.
- +++ Плюсы: Меньше угроз безопасности.
- --- Минусы: Дополнительные усилия для синхронизации веб-БД и внутренней БД (или с использованием веб-сервиса, такого как REST-API), дополнительный код для обработки истощения запасов и создания # заказа, дублирование кода - т.е. мне нужно дублировать все контроллеры, модели, представления и т. д., которые имеют дело с заказами.
c) Предоставление внутреннего приложения в Интернете
- +++ Плюсы: все проблемы выше устранены. Это намного "СУХОЙ" метод.
- --- Минусы: Гораздо больше проблем с безопасностью. Более сложные системы входа в систему — одна для Интернета и одна для внутренних пользователей с использованием LDAP.
Итак, есть мысли? Кто-нибудь имел подобную проблему для решения? Пожалуйста, имейте в виду, что наша компания имеет ограниченные ресурсы, а именно один разработчик, который занимается этим. Так что это должно быть одно из тех «правильных» и «умных» решений, а не решений типа «бросать на это деньги/людей/ресурсы».
Спасибо.