Я только что закончил читать книгу Пола Дикса Сервисно-ориентированный дизайн с RoR и хотел бы создать веб-приложение на Rails 3 на основе того, что я только что узнал.
Думаю, я правильно понял базовую архитектуру, но меня блокирует простой вопрос: как мне разместить несколько служб REST на одном сервере?
Вот как я вижу ситуацию на данный момент:
http://www.myapp.com
. https://api.myapp.com/*
или https://www.myapp.com/api/*
для публикации внешнего API, который будет использовать те же службы с возможной аутентификацией, регулированием и т. Д. Поверх него. Похоже, для вас это хорошее начало?
Что касается реализации, из того, что я прочитал в книге, я планирую создать драгоценные камни для управления взаимодействием между приложением rails и службами (я могу закинуть немного RabbitMQ, но это уже другая история).
Однако, поскольку у меня только один физический сервер, мне интересно, как я собираюсь объединить все эти приложения / службы? Мое первое предположение - запускать каждое приложение-службу на localhost: xxxx, где xxxx - это отдельный непривилегированный порт для каждой службы. Я мог настроить каждый клиентский гем в моем приложении rails для использования этих портов.
Наряду с этим, я бы, вероятно, запустил Apache 2 + Passenger для обслуживания моего интерфейса rails и службы API, используя что-то вроде Rack :: URLMap (или виртуальные хосты при использовании поддомена) для направления запросов вправо. приложение. Должен ли я затем использовать Passenger для запуска моих сервисов в производственной среде?
Это правильный путь ?! Кажется, это согласуется с тем, что я прочитал и изучил, и при необходимости легко разделить на несколько физических серверов, но я хотел бы быть уверен, что я что-то не упускаю.Вы бы построили что-то по-другому?
Большое спасибо за ваш вклад!
Обновление
Основные вопросы, на которые я хотел бы получить ответы:
Спасибо!