Estoy empezando a desarollar una aplicación con Play! Framework 2.2.3 y Neo4j 2. La idea es alojarla en algún hosting, al menos para hacer "pruebas en producción". He estado mirando Heroku, y parece que soporta el stack que he elegido.
Pero quería saber si conoceis alguna alternativa mejor / más barata, o simplemente que la conozcais.
Mi nombre es Alberto y soy uno de los fundadores de GrapheneDB, un servicio de hosting para Neo4j. Por supuesto me encantaría que alojases tu base de datos con nosotros, pero aquí van un par de consideraciones:
Eduardo comenta el usar Jelastic, pero hata donde yo sé, solo soportan modo embedded. Si quieres escalar a varios servidores de front en modo embedded tienes un problema a no ser que estés usando Enterprise Edition que soporta HA (creo que también en modo embedded).
Asumo que quieres usar Neo4j en modo server y no embedded, ya que hablas de tenerlo en máquinas distintas.
Nuesto servicio:
* ofrece hosting solo para versión Community ahora mismo (no hay alta disponibilidad)
* está alojado en AWS us-east-1, con lo cual tendrás latencias mínimas desde cualquier plataforma ubicada en está región (Heroku, CloudBees, AppHarbor, ...) o ejecutando tu app directamente desde AWS us-east-1. También tenemos clientes usando el servicio desde otros proveedores y con una latencia más que aceptable
* está disponible como add-on gratuito en Heroku, y pronto con planes de pago. Si quieres contratar un plan de pago ahora mismo tendrías que hacerlo con nosotros directamente y usarlo desde tu app de Heroku añadiendo la URL de conexión como variable de entorno.
Si te decides a desplegar Neo4j en producción por tu cuenta los puntos clave serían:
* proteger servidor con autenticación (via proxy o plugin de Neo4j)
* proteger servidor con certificado SSL (via proxy o Neo4j directamente)
* copias de seguridad, en la versión Community te verás obligado a parar el servicio para hacer la copia. Nosotros ofrecemos un sistema de copias en caliente
* monitorización y alertas
Como alguien que ha usado hosting en entornos VPS para desplegar aplicaciones durante bastantes años, sinceramente te recomendaría **no hacerlo** con Neo4j. Nuestra experiencia es que no es nada trivial operar Neo4j en producción y de ahí que decidiéramos montar nuestro servicio.
Espero que esta información te haya sido de ayuda. Estaré encantado de resolver más dudas si las tienes.
La verdad es que estoy pensando aún que enfoque utilizar: embedded o REST. Mi primera opción era usar los servicios REST y mantener separado neo4j de mi aplicación... pero la verdad es que estoy aún indeciso al respecto.
Lo que comentas tiene muy buena pinta. Durante esta semana probaré...
En cuanto a la decisión embedded vs REST, creo que el problema de usar embedded es en cuanto al mantenimiento y escalado.
Si estás pensando usar embedded por tener acceso a la API de Java te recomiendo mirar las extensiones de Neo4j (enlace a la documentación: http://docs.neo4j.org/chunked/stable/server-unmanaged-extensions.html).
Nosotros lo hemos usado en varios proyectos y hemos encotnrado que es el compromiso ideal entre mantenibilidad y rendimiento. Todos los planes de pago de GrapheneDB soportan extensiones custom y si decides montarte la instancia por tu cuenta tampoco tendrás problemas.
Aquí tienes 2 blog posts de gente de la comunidad explicando paso a paso cómo hacer tu propia extensión:
* http://inserpio.wordpress.com/2014/04/30/extending-the-neo4j-server-with-spring-data-neo4j/
* http://lyonwj.com/twizzard-a-tweet-recommender-system-using-neo4j/
Si tienes cualquier otra duda te puedo responder aquí, me puedes encontrar en twitter como @albertoperdomo y si tienes dudas respecto al hosting de GrapheneDB nos puedes escribir a support@graphenedb.
Estoy empezando a desarollar una aplicación con Play! Framework 2.2.3 y Neo4j 2. La idea es alojarla en algún hosting, al menos para hacer "pruebas en producción". He estado mirando Heroku, y parece que soporta el stack que he elegido.
Pero quería saber si conoceis alguna alternativa mejor / más barata, o simplemente que la conozcais.
¡Un saludo!.
20/05/2014 09:55
20/05/2014 11:03
Es un IaaS, ¿no?.
No me lo había planteado...
Si me conecto por rest a Neo4j... lo suyo sería tenerlo en máquinas distintas... Voy a comparar precios.
¡Muchas gracias!
20/05/2014 22:38
Mi nombre es Alberto y soy uno de los fundadores de GrapheneDB, un servicio de hosting para Neo4j. Por supuesto me encantaría que alojases tu base de datos con nosotros, pero aquí van un par de consideraciones:
Eduardo comenta el usar Jelastic, pero hata donde yo sé, solo soportan modo embedded. Si quieres escalar a varios servidores de front en modo embedded tienes un problema a no ser que estés usando Enterprise Edition que soporta HA (creo que también en modo embedded).
Asumo que quieres usar Neo4j en modo server y no embedded, ya que hablas de tenerlo en máquinas distintas.
Nuesto servicio:
* ofrece hosting solo para versión Community ahora mismo (no hay alta disponibilidad)
* está alojado en AWS us-east-1, con lo cual tendrás latencias mínimas desde cualquier plataforma ubicada en está región (Heroku, CloudBees, AppHarbor, ...) o ejecutando tu app directamente desde AWS us-east-1. También tenemos clientes usando el servicio desde otros proveedores y con una latencia más que aceptable
* está disponible como add-on gratuito en Heroku, y pronto con planes de pago. Si quieres contratar un plan de pago ahora mismo tendrías que hacerlo con nosotros directamente y usarlo desde tu app de Heroku añadiendo la URL de conexión como variable de entorno.
Si te decides a desplegar Neo4j en producción por tu cuenta los puntos clave serían:
* proteger servidor con autenticación (via proxy o plugin de Neo4j)
* proteger servidor con certificado SSL (via proxy o Neo4j directamente)
* copias de seguridad, en la versión Community te verás obligado a parar el servicio para hacer la copia. Nosotros ofrecemos un sistema de copias en caliente
* monitorización y alertas
Como alguien que ha usado hosting en entornos VPS para desplegar aplicaciones durante bastantes años, sinceramente te recomendaría **no hacerlo** con Neo4j. Nuestra experiencia es que no es nada trivial operar Neo4j en producción y de ahí que decidiéramos montar nuestro servicio.
Espero que esta información te haya sido de ayuda. Estaré encantado de resolver más dudas si las tienes.
Saludos,
Alberto.
21/05/2014 11:04
Muchísimas gracias por la información.
La verdad es que estoy pensando aún que enfoque utilizar: embedded o REST. Mi primera opción era usar los servicios REST y mantener separado neo4j de mi aplicación... pero la verdad es que estoy aún indeciso al respecto.
Lo que comentas tiene muy buena pinta. Durante esta semana probaré...
Un saludo y gracias por tu respuesta.
21/05/2014 12:21
Si estás pensando usar embedded por tener acceso a la API de Java te recomiendo mirar las extensiones de Neo4j (enlace a la documentación: http://docs.neo4j.org/chunked/stable/server-unmanaged-extensions.html).
Nosotros lo hemos usado en varios proyectos y hemos encotnrado que es el compromiso ideal entre mantenibilidad y rendimiento. Todos los planes de pago de GrapheneDB soportan extensiones custom y si decides montarte la instancia por tu cuenta tampoco tendrás problemas.
Aquí tienes 2 blog posts de gente de la comunidad explicando paso a paso cómo hacer tu propia extensión:
* http://inserpio.wordpress.com/2014/04/30/extending-the-neo4j-server-with-spring-data-neo4j/
* http://lyonwj.com/twizzard-a-tweet-recommender-system-using-neo4j/
Si tienes cualquier otra duda te puedo responder aquí, me puedes encontrar en twitter como @albertoperdomo y si tienes dudas respecto al hosting de GrapheneDB nos puedes escribir a support@graphenedb.
Saludos!
20/05/2014 13:47
20/05/2014 17:03
http://blog.jelastic.com/2013/03/21/neo4j-in-the-cloud/
21/05/2014 16:10