2012-05-10 16 views
11

Somos una pequeña empresa emergente con una aplicación SAAS con muchos problemas de escritura y estamos (¡al fin!) Llegando al punto en que nuestro uso presenta problemas de escalabilidad. Tenemos un pequeño equipo, por lo que realmente apreciamos poder descargar sysadmin a Heroku y RDS.NuevoSQL frente a la optimización/fragmentación tradicional

Mientras Heroku es (en su mayoría) bien, tenemos un par de problemas con RDS:

  1. Escala. Esta es la mayor preocupación. Actualmente ejecutamos una instancia XL RDS. Podremos seguir por un tiempo más con optimizaciones sencillas, pero a menos que hagamos algunos cambios estructurales importantes en nuestra aplicación, llegaremos a un cuello de botella en algún momento.

Además, el tiempo de inactividad para cambiar el tamaño de instancia es una mierda.

  1. Disponibilidad. Ejecutamos una instancia multi-AZ, por lo que deberíamos sobrevivir a un único corte de AZ. Pero RDS se basa en EBS, lo que me preocupa bastante dada la historia y el diseño de EBS.

  2. Precio. Nuestro proyecto de ley RDS es 4x lo que le pagamos a Heroku. No me importa pagar a Amazon para que me salve la contratación de un administrador de sistemas, pero me encantaría encontrar algo menos costoso.

En mi opinión, tenemos dos opciones de seguir adelante: el enfoque tradicional (sharding, ejecutar un trabajo nocturno para mover partes de nuestra base de datos de sólo lectura, etc.); o una solución NewSQL (Xeround, VoltDB, NimbusDB, etc.).

Profesionales tradicionales: Se ha hecho muchas veces antes y hay formas bastante comunes de hacerlo.

Contras tradicionales: Tomará mucho trabajo e introducirá una complejidad significativa en la aplicación. Tampoco resolverá los problemas secundarios con RDS (disponibilidad y precio).

Nuevos profesionales de SQL: supuestamente, estas soluciones escalarán horizontalmente nuestra base de datos sin cambiar el código de la aplicación (sujeto a algunas restricciones en la funcionalidad de SQL como no usar el bloqueo pesimista). Esto nos ahorraría una gran cantidad de trabajo. También mejoraría la confiabilidad (no hay un único punto de falla) y reduciría los costos (no tener que ejecutar una instancia XL durante las horas no hábiles solo para proporcionar un uso máximo).

NewSQL contras: Estas soluciones son relativamente recientes, y no he podido encontrar buenas críticas ni comentarios sobre la experiencia de las personas con ellos en las aplicaciones de producción. Solo encontré uno disponible como solución alojada (Xeround), así que, a menos que lo hagamos, tendríamos que invertir recursos en sysadmin.

Me pregunto cuáles son las opiniones sobre cuál sería mi mejor opción.

Xeround es tremendamente tentador (alojado en NewSQL), pero no he podido encontrar ningún uso de buena información en la producción. Los pocos tweets que he visto han sido personas quejándose de que es un poco lento. Estoy bastante nervioso para pasar a algo que parece no probado.

El lado conservador de mí dice que seguir con RDS y utilizar un enfoque tradicional. Pero será realmente costoso en términos de tiempo de desarrollo.

Y a continuación, una parte de mí se pregunta si hay otra manera, tal vez una solución NewSQL alojado probado en batalla que no he oído hablar. O tal vez una solución NewSQL que tendríamos que alojar nosotros mismos, pero que tiene una historia realmente sólida.

Gracias de antemano por su opinión.

Respuesta

0

En Jingit (www.jingit.com) hemos probado Battle VoltDB. Es fantástico para escalar aplicaciones pesadas de escritura y en la nube de AWS. No hay una opción alojada, por lo que nuestros desarrolladores son los propietarios y pasan < 1 hora a la semana administrando nuestro clúster VoltDB. En realidad usamos tanto RDS como VoltDB. RDS para nuestra carga de trabajo relacional tradicional y VoltDB para nuestro procesamiento de transacciones HIGH VOLUME. Si está desarrollando en Java, VoltDB es una excelente opción para escribir todos los procedimientos en Java.

1

No estoy seguro de si ya ha oído hablar de NuoDB. Pero es una solución SQL totalmente nueva que ofrece las capacidades de escalado horizontal de NoSQL y las capacidades de cumplimiento SQL SQL & del OLTP tradicional. Deberías echarle un vistazo a la solución.

0

También he oído que NuoDB es interesante. Una cosa que escuché es que Rackspace también saldrá con DBaaS en la nube pronto. No sé qué sabor usarán, pero se puede ver cómo funciona Nuo como una solución escalable con ellos. Creo que se ejecutará junto con la plataforma Open Stack, que, cuando la abran, podría ser más rentable y computacionalmente eficiente. Solo algo que me he estado observando a mí mismo.

Cuestiones relacionadas