Emulador de Cloud Spanner

Clientes de distintas industrias y verticales han adoptado satisfactoriamente Cloud Spanner desde su lanzamiento en 2017. Con este crecimiento, hemos construido una gran comunidad de desarrolladores de aplicaciones que utilizan Cloud Spanner. A fin de hacer que el servicio sea más accesible y abierto a la comunidad de desarrolladores en general, presentamos un emulador para Cloud Spanner que no requiere conexión a Internet. El objetivo del emulador de Cloud Spanner es reducir los costos del desarrollo de aplicaciones y mejorar la productividad de los desarrolladores para los clientes.

El emulador de Cloud Spanner proporciona a los desarrolladores de aplicaciones un conjunto completo de API, incluida una amplia variedad de funciones de SQL y DDL que podrían ejecutarse localmente para los procesos de prototipado, desarrollo y pruebas. Este emulador de código abierto proporcionará a los desarrolladores de aplicaciones la transparencia y la agilidad necesarias a fin de personalizar la herramienta para el uso de sus aplicaciones.

En esta entrada de blog, se presentará el emulador de Cloud Spanner y se describirá el proceso de instalación y uso con la CLI y las bibliotecas cliente actuales de Cloud Spanner.

¿Qué es el emulador de Cloud Spanner?

Es una herramienta que proporciona un emulador local, dentro de la memoria y de alta fidelidad del servicio Cloud Spanner. Puedes utilizar el emulador para prototipar, desarrollar y probar herméticamente tu aplicación de forma local y en entornos de prueba de integración.

Debido a que el emulador almacena datos en la memoria, estos no persistirán tras las ejecuciones. El emulador está pensado para ayudarte a utilizar Cloud Spanner durante los procesos de desarrollo y pruebas locales (no para implementaciones de producción). Sin embargo, una vez que tu aplicación funcione con el emulador, podrás proceder a la prueba de extremo a extremo simplemente cambiando la configuración del extremo de Cloud Spanner.

Funciones admitidas

El emulador de Cloud Spanner expone el conjunto completo de API de Cloud Spanner, lo que incluye instancias, bases de datos, SQL, DML, DDL, sesiones y semántica de transacciones. La compatibilidad con consultas de metadatos del esquema de una base de datos está disponible en Information Schema. Se admiten las API de gRPC y REST, y pueden usarse con las bibliotecas cliente y el controlador OSS JDBC actuales, así como con el SDK de Cloud. El emulador tiene compatibilidad nativa en Linux y requiere Docker en plataformas macOS y Windows. A fin de facilitar los procesos de desarrollo y prueba de una aplicación, se pueden configurar IDE como IntelliJ y Eclipse para establecer una comunicación directa con el extremo del emulador de Cloud Spanner.

Como el emulador no está compilado para la escala de producción y rendimiento, no debe utilizarse para pruebas de carga o tráfico de producción. Los desarrolladores de aplicaciones pueden utilizar el emulador para el desarrollo iterativo y para implementar y ejecutar pruebas de unidad e integración.

En el archivo README del emulador, se ofrece una lista detallada de las funciones y limitaciones. Actualmente (en abril de 2020), el emulador se encuentra en versión Beta y el plan es mejorarlo continuamente para lograr una paridad entre funciones y API con el servicio Cloud Spanner.

Cómo usar el emulador de Cloud Spanner

Esta sección describe el uso de la CLI y las bibliotecas cliente actuales de Cloud Spanner para interactuar con el emulador.

Antes de comenzar

Cómo iniciar el emulador localmente

Se puede iniciar el emulador usando Docker o la CLI del SDK de Cloud en Linux, macOS y Windows. En cualquier caso, macOS y Windows requieren que se instale Docker.

Docker

$ docker pull gcr.io/cloud-spanner-emulator/emulator
$ docker run -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator

Nota: El primer puerto es el de gRPC y el segundo es el de REST.

CLI del SDK de Cloud

$ gcloud components update beta
$ gcloud beta emulators spanner start

Aquí encontrarás otras alternativas para iniciar el emulador, incluidos los objetos binarios precompilados de linux.

Configura el proyecto y la instancia de Cloud Spanner

Configura el extremo y el proyecto de Cloud Spanner, e inhabilita la autenticación:

$ gcloud config configurations create emulator
$ gcloud config set auth/disable_credentials true
$ gcloud config set project test-project
$ gcloud config set api_endpoint_overrides/spanner http://localhost:9020/

Nota:
Para revertir la configuración predeterminada:
`$ gcloud config configurations activate default`
Para revertir la configuración del emulador:
`$ gcloud config configurations activate emulator`

Verifica que gCloud funcione con el emulador de Cloud Spanner.

$ gcloud spanner instance-configs list

NAME               DISPLAY_NAME
emulator-config    Emulator Instance Config

Crea una instancia de Cloud Spanner

$ gcloud spanner instances create test-instance –config=emulator-config –description=«Test Instance» –nodes=1

Cómo usar las bibliotecas cliente de Cloud Spanner

Con el lanzamiento Beta, las últimas versiones de las bibliotecas cliente de Java, Go y C++ para Cloud Spanner son compatibles con el emulador. Usa la Guía de introducción para probar el emulador.

Requisito previo: Configura el proyecto y la instancia de Cloud Spanner desde el paso anterior.

Este es un ejemplo de cómo se ejecuta la biblioteca cliente de Java con el emulador:

# Configure emulator endpoint
$ export SPANNER_EMULATOR_HOST=«localhost:9010»

# Cloning java sample of client library.
$ git clone https://github.com/GoogleCloudPlatform/java-docs-samples && cd java-docs-samples/spanner/cloud-client

$ mvn package

# Create database
$ java -jar target/spanner-google-cloud-samples-jar-with-dependencies.jar
    createdatabase test-instance example-db

# Write
$ java -jar target/spanner-google-cloud-samples-jar-with-dependencies.jar
    write test-instance example-db

# Query
$ java -jar target/spanner-google-cloud-samples-jar-with-dependencies.jar
    query test-instance example-db

Sigue el resto del ejemplo de la biblioteca cliente de Java usando la Guía de introducción.

Cómo usar la CLI del SDK de Cloud

Requisito previo: Configura el proyecto y la instancia de Cloud Spanner desde el paso anterior.

Configura el extremo del emulador

$ gcloud config configurations activate emulator

Crea una base de datos

$ gcloud spanner databases create test-database –instance test-instance –ddl «CREATE TABLE TestTable (Key INT64, Value STRING(MAX)) PRIMARY KEY (Key)»

Escribe en la base de datos

$ gcloud spanner rows insert –table=TestTable –database=test-database –instance=test-instance –data=Key=1,Value=TestValue1

Lee desde la base de datos

$ gcloud spanner databases execute-sql test-database –instance test-instance –sql «select * from TestTable»

Cómo usar la herramienta de línea de comandos de código abierto spanner-cli

Requisito previo: Configura la base de datos, la instancia y el proyecto de Cloud Spanner desde el paso anterior.

Sigue los ejemplos para ver una ventana de terminal interactiva en la base de datos de Cloud Spanner con spanner-cli.

# Configure emulator endpoint
$ export SPANNER_EMULATOR_HOST=»localhost:9010«

$ go get github.com/cloudspannerecosystem/spanner-cli
$ go run github.com/cloudspannerecosystem/spanner-cli -p test-project -i test-instance -d test-database

spanner> INSERT INTO TestTable (Key, Value) VALUES (2, «TestValue2«), (3, «TestValue3»);
Query OK, 2 rows affected

spanner> SELECT * FROM TestTable ORDER BY Key ASC;

+—–+—————-+
| Key | Value |
+—–+—————-+
| 2 | TestValue2 |
| 3 | TestValue3 |
+—–+—————-+
2 rows in set

spanner> exit;

Conclusión

El emulador de Cloud Spanner reduce el costo del desarrollo de aplicaciones y mejora la productividad de los desarrolladores para los clientes de Cloud Spanner. Tenemos pensado continuar creando y agregando funciones que soliciten los clientes, y puedes seguir el emulador de Cloud Spanner en GitHub para ver más novedades.

Por Sneha Shah, Google Open Source


Source: Google Dev

Deja un comentario