Hace unos meses fue a ver a The Human League cuando vinieron a Manchester. Fueron el Mejor Acto Revelación de Gran Bretaña en 1982, no me digas que no tengo el dedo en la llaga. No soy un superfan, sólo me gustan algunas de sus canciones. Desde luego, no soy tan hipster como para hablar de sus "primeros trabajos" y "caras b raras". De hecho, las canciones que me gustan son en su mayoría las los favoritos del público. El concierto estaba a reventar, y para alguien que no suele ver música en directo muy a menudo, era muy ruidoso. A medida que repasaban su repertorio, yo coreaba alegremente las que conocía. Pero la verdad es que con las canciones con las que no estoy tan familiarizado, hay una parte de mí que piensa: "¿y los clásicos?" Cerraron con "Don't You Want Me" y el público se volvió loco, y este fan que pasaba por allí se fue a casa encantado. El aumento de volumen que acompañó al bis me dijo que no era el único que esperaba a los favoritos. Estoy seguro de que todos los grupos se enfrentan a este dilema cuando lanzan un nuevo álbum. ¿Cuánto se centran en el nuevo material frente al refuerzo de lo que les hizo populares en primer lugar?
Los 5 años que hemos tenido han sido tan buenos tiempos...
En Couchbase estamos encerrados en el estudio trabajando duro en nuestro quinto álbum, Couchbase 5.0 - los avances son disponible ahora. Si eres relativamente nuevo en Couchbase, aquí tienes una rápida recapitulación de nuestro catálogo anterior. Nuestra primera edición, ("Sencillo, rápido, elástico") era un almacén clave-valor puro. Era escalable, pero mi palabra era rápido. El producto se construyó con una arquitectura centrada en la memoria, escrito en C y basado en el popular proyecto memcached. Este debut nos dio mucha notoriedad y tuvo un gran éxito. En la versión 2.0 añadimos un almacén de documentos completo que incluía funciones de indexación y replicación entre centros de datos (XDCR). Para nuestro "difícil tercer álbum", reescribimos por completo nuestra fontanería interna para hacerla más tolerante a fallos y sentar las bases para el siguiente conjunto de características. Nuestra versión 4.0 fue en una nueva dirección significativa y que realmente cambió el juego. Introdujo N1QL, un lenguaje similar a SQL, familiar para las masas, para consultar y manipular documentos JSON. Junto con esto vino un potente indexador secundario y una solución móvil integrada completa con sincronización en la nube. Couchbase Server dejaba de ser un coto privado de las emisoras alternativas para convertirse en la corriente dominante.

La discografía de Couchbase
La versión 5.0 se basará aún más en esto: búsqueda de texto completo en producción, control de acceso basado en funciones para los documentos, nuevas funciones de cubo, una interfaz de usuario totalmente nueva y una vista previa del servicio de análisis. Va a ser otra gran progresión para nosotros, y el producto apenas se reconoce de la versión 1. Pero a menudo hablo con clientes y me preguntan (posiblemente preocupados), "¿Y los clásicos?" ¿Qué hay de ese almacén de valores clave de alto rendimiento que hizo que la gente se fijara en Couchbase en primer lugar? Dadas todas estas adiciones, podría haber sido demasiado fácil para nosotros renunciar a algunas de las primeras cualidades que nos llevaron al éxito. De hecho, es todo lo contrario.
Dno olvides que fui yo quien te puso donde estás ahora...
En Couchbase somos obsesionado con rendimiento. Siempre lo hemos estado y siempre lo estaremos. Esta obsesión es una voz en nuestras cabezas que nos recuerda en cada momento lo que nos trajo hasta aquí . El equipo de desarrollo del motor Key-Value (KV) se enorgullece enormemente de garantizar que cada versión suponga una mejora con respecto a la siguiente. Por ejemplo, eche un vistazo a cómo las versiones anteriores se apilan para una métrica de rendimiento Key-Value en particular:

Rendimiento máximo 50:50 Carga de trabajo de lectura/escritura, 20 millones * 256 bytes, 1 réplica, cluster de 2 nodos usando cbc-pillowfight
Merece la pena echar un segundo vistazo a este gráfico: nuestra edición actual, 4.x, es más del doble de rápida que su predecesora 3.x, y la 3.1.6 no se quedó atrás. En un post posterior entraré en los detalles técnicos de cómo se lograron estas mejoras (tl;dr perfilado, análisis, uso de estructuras de datos C++ multihilo eficientes y conocimiento de la línea de caché.).
Será mejor que lo cambies o ambos lo lamentaremos.
Mantener el rendimiento requiere mucho esfuerzo. Se confía en Couchbase Server para el buen funcionamiento de miles de aplicaciones de misión crítica en todo tipo de industrias. Muchos desarrolladores están familiarizados con el dilema, "Puedo hacer esto rápido, pero no estoy seguro de lo seguro que es". No es que la funcionalidad gane siempre el debate sobre el rendimiento - En Couchbase nunca hay que discutir. Siempre diseñamos e implementamos características pensando en cómo hacerlas rápidas, pero la funcionalidad siempre es lo primero. La cultura de mejorar rendimiento se debe inicialmente a que mantenemos el listón muy alto en lo que respecta a evitar regresiones en el rendimiento. Contamos con un equipo independiente que bombardea cada compilación con rigurosas pruebas de rendimiento y examina los resultados. Por ejemplo mirala lista de métricas es interminable. Y de vez en cuando, cuando introducimos regresiones de rendimiento, éstas deje us conozca todo sobre ellos.
Hemos sido implacables en la búsqueda de funciones nuevas y avanzadas, y seguiremos haciéndolo. Estoy muy ilusionado con lo que está por llegar en la versión 5.0 y posteriores. Estas funciones abrirán nuevos e interesantes casos de uso, y estamos seguros de que un nuevo ejército de usuarios que nos descargan por primera vez nos echarán un vistazo gracias a los nuevos contenidos. Nos estamos convirtiendo rápidamente en el estándar de crear sistemas de compromiso. Pero tengan por seguro que, independientemente de las funciones que desarrollemos, para aquellos de ustedes que sólo quieren los clásicos de siempre, seguiremos ofreciendo las cosas que más importan a algunos de nuestros principales clientes: escalabilidad, alta disponibilidad y operaciones de baja latencia y alto rendimiento constantes.