Como un aparte, creo que el título de su pregunta es un poco confuso. Rails, al usar la convención sobre la configuración, define "cómo organizar una aplicación de Rails". Creo que su pregunta es más bien acerca de cómo arquitecto su aplicación en lugar de cualquier cosa específica de los carriles. Tal vez modificar el título?
Aparte de eso, sin saber más detalles sobre su proyecto, es una pregunta difícil de responder, pero lo probaré.
Todas las aplicaciones deberían comenzar de forma simple, si usted cree (como yo) que debe comenzar construyendo the simplest thing that could possibly work. Dado esto, ya que estás usando Rails, entonces con toda probabilidad lo más simple sería estructurar tu aplicación como una aplicación vanilla Rails 3. Probablemente esto (digo 'probablemente' porque no conozco detalles específicos de la aplicación) le permite tener una versión beta de su aplicación funcionando bastante rápido sin preocuparse por las complejidades que en esta etapa del desarrollo de su proyecto no son un problema
Si necesita crear un XML o API basada en JSON a continuación rieles hace que este really easy utilizando el marco estándar, lo que le permitirá pasar más tiempo pensando en el diseño API de la forma de código, y que es la Diseño de API que es lo más importante para obtener en primer lugar.
De forma similar, su sitio de administración puede formar parte de la misma aplicación solo en un espacio de nombres diferente. Si luego encuentra la línea que desea como una aplicación separada, puede hacer esto (tal vez podría usar la impresionante API que diseñó para facilitar esto), pero ¿por qué molestarse en diseñarlo con esta complejidad añadida (y por lo tanto tiempo de desarrollo extendido?) en primer lugar si no tienes una buena razón para hacerlo?
Una vez que tenga su aplicación en funcionamiento y la gente empiece a usarla, comenzará a hacerse una idea de dónde están los cuellos de botella y dónde podría mejorarse el diseño. En esta etapa, si hay una necesidad, puede comenzar a mover partes de la aplicación a soluciones escalables, como ejecutar su API como un servicio independiente, introducir el almacenamiento en caché, cambiar las tiendas de datos y otras mejoras y optimizaciones.
Incluso si su aplicación es tan exitosa (¡y espero que lo sea!) luego, volver a diseñar su aplicación, mientras que continuar ejecutando el servicio existente sigue siendo completamente posible, como lo ha demostrado Twitter. Solo mantente al Knuth's statement y estarás bien.
En cuanto al material de lectura, es complicado. Para mí, muchos de los XP y los clásicos de desarrollo ágiles me enseñaron muchísimo sobre cómo abordar el diseño de programas y aplicaciones. También verifico this StackOverflow topic para obtener inspiración en el libro.
¡Buena suerte!
esta es la mejor respuesta en mi opinión. – nemesisdesign