NuevoSQL versus optimización / fragmentación tradicional [cerrado]

Somos una pequeña empresa de inicio con una aplicación SAAS de gran capacidad de escritura y estamos (¡por fin!) Llegando al punto en que nuestro uso presenta problemas de escalado. Tenemos un equipo pequeño, por lo que realmente apreciamos poder descargar sysadmin a Heroku y RDS.

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

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

Además, el tiempo de inactividad para cambiar el tamaño de la instancia apesta.

Disponibilidad. Ejecutamos una instancia multi-AZ, por lo que deberíamos sobrevivir a una sola interrupción de AZ. Pero RDS se basa en EBS, lo que me preocupa bastante dada la historia y el diseño de EBS.

Precio. Nuestra factura de RDS es 4x lo que le pagamos a Heroku. No me importa pagarle a Amazon para evitar que contrate a un administrador de sistemas, pero me encantaría encontrar algo menos costoso.

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

Pros tradicionales: se ha hecho muchas veces antes y hay formas bastante estándar 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).

Ventajas de NewSQL: 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 (sin un solo punto de falla) y reduciría los costos (no tener que ejecutar una instancia XL durante las horas libres solo para proporcionar un uso óptimo).

Contras de NewSQL: estas soluciones son relativamente jóvenes, y no he podido encontrar buenas críticas o reseñas de la experiencia de las personas con ellas en aplicaciones de producción. Solo he encontrado una disponible como solución alojada (Xeround), por lo que, a menos que la utilicemos, tendríamos que invertir recursos en sysadmin.

Me pregunto qué opiniones tienen sobre cuál sería mi mejor opción.

Xeround es muy tentador (NewSQL alojado), pero no he podido encontrar ningún buen uso de la información en la producción. Los pocos tweets que he visto han sido personas que se quejan de que es un poco lento. Estoy bastante nervioso por moverme a algo que parece tan no probado.

El lado conservador de mí dice seguir con RDS y usar un enfoque tradicional. Pero será realmente caro en términos de tiempo de desarrollador.

Y luego, una parte de mí se pregunta si hay otra forma, tal vez una solución NewSQL alojada más probada en la batalla que no conozco. O tal vez una solución NewSQL que tendríamos que alojarnos nosotros mismos, pero eso tiene un historial realmente sólido.

Gracias de antemano por tus pensamientos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta