Servidor Couchbase

Cómo clonar clusters de Couchbase para entornos efímeros de CI/CD bajo demanda

La integración y el despliegue continuos son prácticas habituales en el desarrollo de software. En el mundo de las bases de datos, esto se traduce en la necesidad de entornos bajo demanda, con estado y efímeros.  

El aprovisionamiento de un entorno sin estado no está vinculado a ninguna fuente de datos en particular. Todo lo que se necesita es ejecutar el código que desea probar en su entorno de CI. Esta es la base de la mayoría de las herramientas de CI/CD y no se tratará en este artículo. 

La parte un poco más difícil viene de las dependencias que la aplicación necesita para ser probada correctamente, lo que a menudo se conoce como servicios externos. Couchbase es uno de ellos. Hay diferentes maneras de conseguirlos, a través de contenedores Docker por ejemplo, o alojados en tu infraestructura de pruebas, o alguna solución externa como servicio. En realidad no importa, siempre y cuando estén disponibles durante la ejecución de la prueba. Las buenas prácticas serían utilizar variables de entorno para referirse a esas instancias. 

Asumiendo que estos servicios se están ejecutando, como una instancia Couchbase Free Tier o un contenedor Docker, el siguiente paso es asegurarse de que están configurados correctamente, y sembrados con los datos necesarios para la prueba.

Hace un tiempo, publiqué un post sobre el uso de Acciones de Couchbase Shell en GitHub. Esto te dirá lo básico sobre el uso de Couchbase Shell con GitHub Actions, pero esto se puede aplicar a la mayoría de las soluciones CI/CD también. Hoy, quiero ir más allá y mostrarte algunos scripts útiles para clonar un clúster o elementos de un clúster para tus entornos bajo demanda.

Uso de Couchbase Shell para clonar entornos

Cuando se usa Couchbase Shell, lo primero que viene a la mente cuando se quiere hacer algo es, ¿hay una función para eso? Por ahora no tenemos una función para clonar algo. La mayoría de las funciones disponibles reflejan las capacidades de nuestras APIs y hoy en día no tenemos APIs de clonación. Pero tenemos la capacidad de escribir scripts, ¡lo que significa que podemos crear los nuestros!

Lo primero que viene a la mente cuando se gestionan bases de datos suele ser recrear la estructura y los esquemas. Como Couchbase es Schemaless, esto sólo consistirá en los buckets, ámbitos, colecciones e índices existentes en el cluster de origen. El primer paso es exportar esa estructura para que pueda ser reimportada más tarde. Esta función listará cada cubo, luego los ámbitos internos y las colecciones, y los añadirá a un array. Después listará todos los índices y los añadirá al JSON de salida. 

Esto funciona porque bajo el capó, Couchbase Shell está usando Nushell, un nuevo tipo de shell que es portable (lo que significa que funciona de la misma manera en Linux, Windows o OS X, lo cual es genial para los scripts CI/CD que tienen que soportar diferentes OS), y que considera cualquier dato de estructura como un DataFrame, haciendo la manipulación de JSON extremadamente fácil.

Para probarlo, ejecute cbshy, a continuación, el archivo que contiene la función. Para mí es ci_scripts.nu. Tengo un cluster ya configurado en mi cbsh config, llamado local

Ahora bien, si abre local-cluster-export.jsonobtendrá la estructura de su clúster:

He eliminado ese depósito para realizar esta prueba, con el fin de volver a importarlo más tarde: cubetas caída muestra de viaje.

El siguiente paso lógico es disponer de una función que tome este archivo como entrada y recree la estructura completa en otro clúster:

Ahora, para ejecutar esa función:

Y ahí lo tienes, funciones que te permiten exportar e importar la estructura de datos de un clúster a otro. Aunque este es un buen punto de partida, aún quedan preguntas sobre cómo reimportar datos o sobre la granularidad. Además, es posible que no desees exportar e importar un clúster completo.

Filtrar los buckets que se van a importar es bastante fácil, ya que Nushell permite filtrar marcos de datos:

Esto recreará un objeto JSON que solo contiene un bucket llamado viaje-muestra e índices para este bucket.

A partir de ahí, ya debería estar todo listo para gestionar la estructura básica del clúster. ¿Qué pasa con los datos? Hay diferentes formas de importar datos con cbsh, ya que cubre la mayoría de las operaciones clave/valor, así como cualquier consulta INSERT/UPSERT. Y luego tenemos el importación de documentos comando. Su uso es bastante sencillo, solo se necesita una lista de filas con un campo de identificación identificado. Puede ser cualquier cosa que se pueda convertir en un marco de datos para Nushell (XML, CSV, TSV, Parquet y más). Y, por supuesto, puede ser un archivo JSON de una consulta Couchbase SQL++. Este es un ejemplo que guardará el resultado de una consulta en un archivo y lo importará de nuevo a una colección: 


Este es un ejemplo concreto, pero el objetivo de utilizar lenguajes de scripting es hacerlos propios. Encontrarás un ejemplo más completo en este GitHub Gist. Es compatible con variables de entorno para el origen y el destino, y puedes decidir si clonar todos los buckets de un clúster, un bucket específico, un ámbito o una colección.

No dude en dejarnos un comentario aquí o en Discordia, siempre estamos buscando sugerencias para mejorar la experiencia global de Couchbase.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Laurent Doguin

Laurent es un metalero empollón que vive en París. Principalmente escribe código en Java y texto estructurado en AsciiDoc, y a menudo habla sobre datos, programación reactiva y otras cosas de moda. También fue Developer Advocate de Clever Cloud y Nuxeo, donde dedicó su tiempo y experiencia a ayudar a esas comunidades a crecer y fortalecerse. Ahora dirige las relaciones con los desarrolladores en Couchbase.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.