Estoy con un proyecto para desaroollar algo como Club Penguin (ó tantos otros mundos virtuales que andan dando vueltas por la red). Estoy con el tema del server multiusuario, pensando en desarrollar uno yo mismo, en Java.
Antes de seguir:
- Conozco SmartFoxServer (SFS), lo he usado en otros 3 proyectos, pero me resulta costoso, ya que es un proyecto auto financiado.
- Por otro lado, estuve leyendo sobre Red5, pero no he encontrado mucha documentación al respecto y no termino de discernir si me va a servir o no.
- El server es quien se tiene q encargar de hacer las validaciones de las peticiones. El cliente solo debe ejecutar los mensajes recibidos. Este es un punto por el cual no me sirve SFS.
Volviendo a mi idea de desarrollar yo mismo el server (primero debo aclarar que si bien conozco de Java, nunca he desarrollado nada robusto, ni cuento con mucha experiencia), he estado leyendo bastante y probando varias cosas, pero mientras mas leo, menos me decido sobre algunas cuestiones. Por ejemplo:
Modelo de negocio (referido al server):
- ¿Vale la pena desarrollar uno propio habiendo opciones factibles?
No me decido aún a hacer uno propio, principalmente por el tiempo que me pueda llevar, pero quizas me sea mas simple a la hora de tener que ampliarlo, ó del mismo mantenimiento. Quizas otra razón para desarrollar uno propio es la posibilidad de comerciarlo luego como un servicio. NO sé, tengo ganas de hacer uno, pero no sé si vale, ó no, el esfuerzo.
Tecnología:
- ¿Es Java la tecnología ideal? ¿Por que no C++ ó C#?
En este punto estoy casi seguro de que Java es lo ideal, por ser multiplataforma principalmente, porque es simple de mantener, etcétera. Pero me gustaría saber qué opinan.
- ¿Debería de concentrar todos los procesos (creacíon de cuentas de usuarios, login, banneos, peticiones, mensajes, y un largo etcétera) en el mismo server, ó debería de separar funcionalidades utilizando, por ejemplo, PHP para ciertos procesos?
Aquí creo que lo mejor seria separar la parte de creación de cuenta y autenticación, e implementarlo en PHP. No le encuentro muchas contras al hacerlo de esta manera, pero de todos modos cuéntenme qué opinan.
Persistencia de datos:
- ¿Debo usar Hibernate para persistir los datos de los usuarios concurrentes? ¿O bien debo persistir los datos en memoria? ¿Que es mejor en cuanto a performance? ¿Que es mas simple de mantener? ¿Es una opción válida persisitir los datos grabando ficheros físicos?
En este punto me encuentro con la disyuntiva de si debo priorizar la performance ó el mantenimiento. No encuentro la sintesis de ambas cosas.
Bueno, creo que para arrancar a debatir sobre el tema es suficiente, aguardo sus comentarios.
Desde ya, muchas gracias por las respuestas.
Saludos,
Dario.
