Viber y Couchbase

Viber es una de las compañías de mensajería que ha abrazado Erlang/OTP a través de uno de sus productos destacados: Couchbase. En 2014 cambió todos sus MongoDB y Redis por Couchbase, ¿sabes los beneficios que obtuvo?

Hay varias presentaciones en la web de CouchBase hablando de el cambio de Viber hacia Couchbase dejando atrás MongoDB y Redis. Viber es una plataforma que maneja millones de mensajes de sus usuarios. MongoDB era una solución ideal dada su velocidad de almacenage a diferencia de Redis que es ideal para el manejo de información en vivo.

El problema que comenzaron a experimentar fue al escalar. MongoDB se comporta bien con un servidor de aplicación pero a medida que los servidores que hacen consultas se incrementan el rendimiento baja muy drásticamente. Tras intentar paliar un poco la bajada de rendimiento con caché y varias tecnologías de sharding en Redis donde perdían datos ocasionalmente, decidieron migrar.

Las ventajas que encontraron en Couchbase fueron las siguientes:

  • Uso de la mitad de servidores. La solución con Couchbase no requiere de tantas máquinas y cada máquina rinde más. Erlang/OTP emplea mejor el uso de los núcleos y el desarrollo de Couchbase está basado en el Modelo Actor, empleando los procesos de forma independiente y minimizando bloqueos. Esto se traduce finalmente en mejor rendimiento para cada acción.

  • Mayor velocidad. El número de operaciones por segundo aumentó gracias a la carencia de bloqueos y la simplicidad de las operaciones y la información almacenada en Couchbase.

  • Una estructura clara para escalar. Couchbase está pensado para crecer. En el momento que las peticiones comienzan a elevarse y se requieren más nodos solo hace falta configurar nuevas instancias de forma transparente a través de la interfaz web.

  • Uso de XDCR. Replicación entre diferentes centros de datos. Esta característica asegura la duplicidad entre diferentes centros de datos y mantener la información cerca del usuario sin problema.

  • Copias de seguridad al vuelo. Una de las ventajas de Couchbase es la generación de copias de seguridad sin necesidad de tirar servicio.

Al mismo tiempo encontraron desventajas. En Redis se pueden emplear tipos de datos que facilitan al programador operaciones cotidianas en base a listas, hash, pilas, etc. Estas estructuras tuvieron que cambiarse para emplear los documentos en su lugar. Realmente nada grave.

Además tener en cuenta que en 2014 muchas de las características de Couchbase actuales como N1QL (níquel) aún no estaban disponibles.

En conclusión, considero este caso de éxito de Couchbase como un buen ejemplo del empleo de una herramienta justo en el caso para la que fue creada facilitando la escalabilidad de un sistema que necesita crecer y no centrarse en luchar contra los límites de otras tecnologías.

¿Conoces Couchbase? ¿Has empleado esta base de datos en algún proyecto? ¿Te interesaría recibir información y entrenamiento para su implementación? ¡Déjanos un comentario!