En estos tiempos modernos de múltiples herramientas y soluciones para los equipos de desarrollo e infraestructura, aparecen a cada instante nuevas herramientas con funcionalidades que nos permiten potenciar nuestros proyectos.
Entre las herramientas para bases de datos OnPremises, Híbridas o en nube nos encontramos una solución muy interesante que podría ser de gran utilidad y ayudarnos en nuestros proyectos, potenciada por las bondades de la nube, llega por parte del equipo de Cockrach Labs, una solución relevante a las necesidades del mundo de hoy, CockroachDB, es un servicio evolucionado de bases de datos distribuidas y diseñada especialmente para la nube, con diversas características como:
- Open source ampliar un poco cada una de las características
- Alta disponibilidad
- Replicación
- Facilidad de uso
No digo que sea el santo grial, pero para diversificar y generar impacto en la innovación, es una salida a la escalabilidad y elasticidad que requiere el mundo actual, y que MySQL en este momento no nos brinda, si bien es cierto que la administración, mantenimiento y tolerancia a fallos de un servicio de base de datos puede convertirse en un dolor de cabeza y de paso provocar una gran frustración a las organizaciones de hoy, debemos entender el lugar en el que nos pone la tecnología actualmente, y ver como una gran opción esta solución.
Entrando en materia, debemos tener claro qué significa un servicio distribuido, y que debe tener para serlo, para esto nuestro servicio debe contar con lo siguiente:
- Escalabilidad: Capacidad de incrementar o disminuir la cantidad de recursos disponibles en cuanto a cómputo. Ejemplo: subir o bajar nodos (Un nodo suele ser un sistema físico o virtual con una dirección IP de host distinta que ejecuta uno o más servicios o aplicaciones).
La escalabilidad es la capacidad de aumentar el tamaño de la infraestructura existente (con software o aplicaciones) debido a la carga de trabajo. La escalabilidad se usa comúnmente cuando hay una necesidad de implementar recursos para manejar la carga de trabajo de forma dinámica. - Elasticidad: Capacidad del sistema de ser dinámico, adaptable y flexible.
La elasticidad en Cloud Computing se refiere a la capacidad que se tiene en la nube de crecer la infraestructura y los recursos de los que se dispone según las necesidades de una o varias aplicaciones y así también reducirlas cuando ya no se requieran.
- Consistencia: Capacidad de no tener afectación en nuestros datos, sin importar el movimiento que le demos a nuestros nodos.
- Resiliencia: Capacidad para seguir con disponibilidad pese a alguna caída en el ámbito de región o zona de disponibilidad.
- Replicación geográfica: Capacidad para distribuir réplicas de nuestro servicio en diversas partes del mundo, con acceso sin importar el lugar.
- GDPR: Datos ubicados en regiones específicas para cumplimiento normativo y legal (Reglamento General de Protección de Datos).
- Multicloud: Diversificar el servicio en diferentes proveedores de nube.
- Que sea SQL: Que nos permita adaptarnos a este servicio sin necesidad de cambiar nuestra aplicación para poder conectarnos.
CockroachDB cumple con cada una de estas características, su última versión 22.1.4 es compatible con MAC, Linux, Docker y Kubernetes (K8S), para Windows está en fase experimental y aún no está 100% disponible para cargas en producción, pero esto, no es un impedimento para poder realizar una prueba en local del funcionamiento de esta base de datos, como ayuda principal, podemos tomar la documentación del fabricante la cual está muy bien construida, siendo de fácil entendimiento y ejecución.
Referencia Oficial CockroanchDB
Para una breve demostración de la operación realizaremos un paso a paso muy sencillo, el cual consiste en ejecutar cinco pasos:
Para esto necesitamos: Windows 11 + PowerShell 7
1- Descargar el binario de CockroachDB: https://binaries.cockroachdb.com/cockroach-v22.1.4.windows-6.2-amd64.zip
2- Descomprimir en la ruta: C:\Program Files
3- Agregar una nueva variable de entorno al PATH de powershell apuntando el ejecutable <cockroach.exe> donde quedó ubicado
4- Abrir en powershell y ejecutar <cockroach.exe>, como resultado tendremos los comandos y opciones disponibles para el CLI de cockroach.
5- Ejecutar el comando <cockroach demo –nodes=X> Donde X es el número de nodos que deseamos utilizar. Para efecto de la demostración hemos elegido 4 nodos.
Como resultado se obtendrán cuatro instancias de Postgres SQL, adicional de forma automática nos crea la interfaz gráfica y las credenciales de conexión.
Ingresar a la IP local: http://127.0.0.1:8080/demologin podemos visualizar los cuatro nodos y las respectivas características del cluster.
CockrachDB, nos presenta una interfaz muy sencilla, pero a la vez muy potente, que nos permite obtener diversas visualizaciones del comportamiento de nuestra base de datos, como la actividad de las transacciones, las consultas, así como un completo tablero con todas las métricas asociadas al comportamiento del cluster y la base de datos.
Una de las características más relevantes con relación al comportamiento del clúster, es obtener un comportamiento de latencia de los nodos, claro, para efectos de la demostración estamos simulando un ambiente en nube.
Desde la consola podemos ejecutar comandos SQL y así mismo administrar los nodos de una forma rápida y sencilla, logramos realizar una reasignación en la cantidad de nodos tanto en subida como en bajada sin generar downtime para nuestro servicio SQL.
¡Esto es ideal!, pero, ¿cómo funciona?, CockroachBD separa el almacenamiento del cómputo, y para el almacenamiento utiliza principios similares a los de ETDC (La herramienta ETDC es el almacén de datos de la plataforma de automatización de despliegue y sistema para la organización) en Kubernetes (k8s), de esta forma obtenemos un flujo muy rápido en el movimiento de los datos entre un nodo y otro.
Considero que es una herramienta que todos deberíamos probar, ya que tiene características sobresalientes como la resiliencia, la baja latencia y al ser Open Source tiene una comunidad activa, la cual colabora de forma constante, adicional a su modo sencillo de operar e implementar.
Te invitamos a descubrir más sobre los servicios de Ceiba hoy mismo.
Referencias:
https://www.cockroachlabs.com/docs/cockroachcloud/quickstart.html
https://www.cockroachlabs.com/pricing/
https://www.cockroachlabs.com/docs/v22.1/install-cockroachdb-windows.html