Кстати, название вашего вопроса немного сбивает с толку. Rails, используя соглашение по конфигурации, определяет «как организовать приложение Rails». Я думаю, что ваш вопрос скорее о том, как архитектор ваше приложение, а не что-нибудь специфичное для Rails. Может подправить заголовок?
Кроме того, не зная больше деталей о вашем проекте, на этот вопрос сложно ответить, но я попробую.
Все приложения должны начинаться с простого, если вы считаете (как и я), что вы должны начать с создания самой простой вещи, которая могла бы работать . Учитывая это, поскольку вы используете Rails, то, по всей вероятности, проще всего будет структурировать ваше приложение как ванильное приложение Rails 3. Это, вероятно, (я говорю «вероятно», потому что я не знаю каких-либо подробностей о приложении) позволит вам быстро запустить и запустить бета-версию вашего приложения, не беспокоясь о сложностях, которые на данном этапе разработки вашего проекта не проблема.
Если вам нужно создать API на основе XML или JSON, тогда Rails сделает это очень простым , используя стандартную среду, которая позволит вам больше думать о дизайне API чем то, как его кодировать, и это дизайн API, который является наиболее важным, чтобы правильно понять в первую очередь.
Точно так же ваш админ-сайт может быть частью одного и того же приложения только в другом пространстве имен. Если позже вы обнаружите, что хотите, чтобы оно было отдельным приложением, вы можете сделать это (возможно, вы могли бы использовать великолепный API, который вы разработали, чтобы облегчить это), но зачем создавать его с такой дополнительной сложностью (и, следовательно, с большим временем разработки) ) во-первых, если у вас нет веских причин для этого?
Как только ваше приложение будет запущено и запущено, и люди начнут его использовать, вы начнете понимать, где находятся узкие места и где можно улучшить дизайн. На этом этапе, если есть необходимость, вы можете начать перемещать части приложения в масштабируемые решения, такие как запуск API в качестве автономной службы, внедрение кэширования, изменение хранилищ данных и другие улучшения и оптимизации.
Даже если ваше приложение столь же безумно успешно (и я надеюсь, что это так!), То, как доказал Твиттер, все еще возможна ре-архитектура вашего приложения, в то время как продолжение работы существующего сервиса все еще возможно. Просто придерживайтесь заявления Кнута и все будет в порядке.
Что касается материалов для чтения, то это сложно. Для меня многие классические идеи по XP и гибкой разработке научили меня тому, как подходить к разработке программ и приложений. Я бы также проверил эту тему StackOverflow на предмет вдохновения для книг.
Удачи!