Tanto Couchbase como Go tienen objetivos similares de escalabilidad y facilidad de uso. La alineación natural resulta en un gran emparejamiento entre Couchbase y Go. Los desarrolladores de aplicaciones necesitan sistemas de gestión de datos escalables como Couchbase para los sistemas que diseñan, así que hoy estoy emocionado de anunciar que Couchbase está introduciendo un SDK Go para facilitar la escalabilidad y la integración sencilla con tus propios proyectos de desarrollo Go.
Hay varias razones por las que en Couchbase nos encanta Go:
- Go facilita la creación de aplicaciones eficientes preparadas para una alta concurrencia.
- Go facilita el trabajo con JSON a la hora de crear aplicaciones sencillas, fiables y eficientes.
- Go es una plataforma potente y bien documentada cuyo objetivo es simplificar la sintaxis y la biblioteca estándar para que la comunidad pueda desarrollar el resto.
Veamos cada una de ellas.
Alta concurrencia
Go se centra en proporcionar a los desarrolladores construcciones sencillas que faciliten la creación de programas altamente concurrentes. De este modo, las aplicaciones escritas en Go son capaces de escalar con el mínimo esfuerzo. A medida que el hardware y las arquitecturas de sistemas distribuidos evolucionan, los programas construidos en Go tienen el ADN para utilizar eficientemente esos recursos para escalar a aún más usuarios. Couchbase tiene objetivos similares. Queremos que la base de datos elegida por el desarrollador de la aplicación sea escalable con el mínimo esfuerzo. En Go, construir para escalar se hace principalmente a través de primitivas conocidas como goroutines, que expresan lógica para ejecutar en paralelo, y canales, que mueven datos de forma segura a través de la lógica paralela.
El SDK de Couchbase para Go funciona bien con estas construcciones. Desde el principio, buscamos dar al desarrollador de aplicaciones Go una superficie de API que encaje dentro de una aplicación usando goroutines y canales. El SDK está diseñado para trabajar fácilmente con la concurrencia expresada por el desarrollador de la aplicación sin añadir sobrecarga en su propia gestión del trabajo que se le pide. ¿Resultado neto? Con un esfuerzo mínimo, la aplicación se beneficia de todo el rendimiento y la escala del clúster de Couchbase Server. El Go SDK, abstrae los detalles de lo que tiene que suceder cuando se escala el clúster de Couchbase Server.
Facilidad de desarrollo
Otra forma en la que nuestro SDK para Go combina a la perfección con la filosofía en torno a Go es siendo sencillo de configurar y utilizar en una aplicación. Reconociendo que una aplicación Go definirá las estructuras de datos con las que trabajará a través de goroutines y canales, el SDK de Couchbase para Go ofrece a los desarrolladores una forma sencilla de expresar cómo consultar y almacenar datos en un cluster de Couchbase Server. Go tiene un excelente soporte para mapear JSON a tipos de datos en Go. El SDK para Go aprovecha esto en las acciones que los desarrolladores le solicitan. Al consultar o añadir datos, el SDK marshal y unmarshal las respuestas JSON en las estructuras Go definidos por la aplicación.
El SDK de Couchbase para Go soporta nuevas características en Couchbase Server que facilitan el desarrollo de aplicaciones. Couchbase nuevo lenguaje de consulta N1QL extiende SQL para trabajar con documentos JSON permitiendo a los desarrolladores consultar fácilmente de una manera familiar. Con la capacidad de N1QL para consultar fácilmente datos estructurados JSON en la punta de los dedos de un desarrollador Go, los actos de encontrar, manipular y almacenar datos se vuelven fáciles.
Simple en apariencia, pero ampliable
La comunidad Go lucha por la simplicidad manteniendo la biblioteca estándar y la sintaxis simples en la superficie, sin ocultar las primitivas a quienes las necesitan. Aprovechando el deseo de la comunidad Go de simplicidad con capacidades profundas, creamos dos capas en el SDK de Go.
En primer lugar, para satisfacer al desarrollador que busca una capacidad directa para trabajar con JSON mapeado a estructuras del lenguaje Go, hemos creado una interfaz sencilla, conocida como gocb, que ofrece al desarrollador operaciones fáciles de entender y seguras desde el punto de vista tipográfico. Esta interfaz también se integra rápidamente en el marco de goroutine síncrono de Go.
Hay algunas situaciones en las que un desarrollador necesita integrar Couchbase en un marco más amplio que se espera que sea utilizado por otros desarrolladores. Un ejemplo podría ser un nuevo marco de aplicación que necesite una interfaz pura y asíncrona o un componente reactivo en medio de la arquitectura que mueva datos entre sistemas. Esos desarrolladores pueden necesitar interactuar estrechamente en los niveles más bajos de cómo el SDK de Couchbase interactúa con el cluster de Couchbase Server. También puede haber ocasiones en las que los desarrolladores quieran saltarse el marshaling de datos para ahorrarse ese pequeño extra de procesamiento o un deseo de pasar a una interfaz 100 por cien asíncrona para IO. Las necesidades de cada uno de estos casos son satisfechas por la capa gocbcore en el SDK de Couchbase para Go.
El futuro
El software evoluciona continuamente y seguiremos trabajando con las mejoras que surjan de la comunidad Go. Google ha hecho grandes avances con la gestión de memoria de Go 1.5 y la facilidad de desarrollo. Esperamos que las nuevas herramientas para desarrolladores y el rediseño de la gestión de memoria sean cosas que nos ayuden con futuras versiones de Couchbase Server, mientras que aquellos que desarrollen sus propios programas Go pueden aprovechar los cambios inmediatamente con el SDK de Couchbase para Go, que soporta Go 1.5 hoy.
¿Y para los componentes de Couchbase que usan Go? Ese futuro se está construyendo ahora. Tenemos varios proyectos nuevos publicado como código abierto que esperamos que lleguen en las próximas versiones de Couchbase Server y Couchbase Mobile. La mayoría de esos proyectos también están escritos en Go.
Estamos ansiosos por ver lo que los desarrolladores construyen con nuestro nuevo SDK de Couchbase para Go.
Encontrará ejemplos de código y ubicaciones para los bits y la documentación en Blog de Brett Lawson sobre la AG. Brett es el ingeniero jefe del SDK de Go.