He usado pares similares para uno de mis proyectos, pero en lugar de RoR utilicé Python. No creo que haya una gran diferencia.
En general, no hay nada específico en este tipo de programación. Dos cosas más importantes que debe tener en cuenta:
- buena modularidad;
- protocolo bien pensado entre RoR y Java.
Primero se trata de la descomposición de la funcionalidad exacta entre las partes del sistema. Tenemos algunos problemas por no entender qué parte de un trabajo debe realizar Java y qué parte de Python. En general, debe unir todas las funciones que están cerca unas de otras, y las cosas que están lejos deben estar conectadas en muy pocos lugares. Supongo que conoces las reglas de una buena modularidad, pero en el caso de componer idiomas diferentes, esto debe pensarse con mucho más cuidado. También puede estar interesado en crear varios servicios distintos de Java (por ejemplo, uno para el almacenamiento en caché de la base de datos y otro para el resto) para poder combinarlos libremente o incluso utilizarlos en otros proyectos más adelante.
En segundo lugar, se trata de la comunicación entre sus piezas. Puedo ver dos formas de comunicación: a través de una base de datos y a través de un protocolo de red puro. Los primeros necesitan alguna comunicación de red de todos modos, por lo que utilizamos un protocolo de red puro, sin ninguna otra forma de conectar partes.
Experimentamos mucho con SOAP, pero generó cientos de errores: este protocolo está bastante bien para conectar servicios escritos en un idioma (id Java a Java), pero es terrible para conectar servicios en diferentes idiomas: herramientas automáticas para generar WSDL dio resultados diferentes para Java y Python, y la creación manual de esquema fue difícil y laboriosa.
Así que solíamos REST. Utiliza todas las funciones del protocolo HTTP, como los cuatro métodos HTTP principales (POST, GET, PUT, DELETE), códigos de error y muchas otras cosas, por lo que cubre casi todo lo que desee. La única restricción con REST es que no puede contener el estado, por lo que puede necesitar implementar su propio mecanismo de sesiones.
Si no está muy cómodo con REST y busca algún ejemplo real, vea Facebook Graph API y para implementar servicios REST en Java puede usar Restlets.
¿Qué esperas que esté en el back-end, y cómo debe comunicarse el frontend con el back-end? –
@Thorbjorn: En cuanto a la comunicación, me estoy inclinando hacia JSON. Aunque no estoy convencido de qué biblioteca usar o las compensaciones que la acompañan, como el mantenimiento. ¿Pensamientos? – Ian
TWitter está haciendo esto. Su frontend es Rails y su backend está usando Scala. Creo que estás haciendo lo correcto: usar la herramienta adecuada para el trabajo correcto. –