Como continuación del blog en el que instalado la AMI de Couchbase (Amazon Machine Image) en AWS, ahora exploraremos cómo conectar Pasarela de sincronización Couchbase a Couchbase Server que se ejecuta en Amazon EC2 en una aplicación móvil que funciona.
[1] Consola web de Couchbase
Para ver nuestra instancia de Couchbase Server y los Cubos de Datos entraremos en la Consola Web de Couchbase, lo que hicimos en Paso 4 del blog anterior. Cuando inicies sesión y hagas clic en la pestaña 'Server Nodes', verás la instancia de Couchbase Server ejecutándose. Esto es spung de la AMI de Couchbase cuando lo lanzamos desde el marketplace de AWS.
También verás la pestaña Data Buckets que tiene buckets preconfigurados de las instalaciones AMI. En este blog vamos a conectar Couchbase Sync Gateway con Couchbase Server y lo primero que tenemos que hacer es modificar uno de los nombres de los buckets de datos.
Para modificar el nombre de nuestro cubo, primero haremos clic en la flecha junto al nombre del cubo para desplegar la información del cubo como se muestra a continuación. A continuación, haremos clic en el botón "Editar" para acceder al menú de configuración.
A continuación, en nuestro menú 'Configurar Bucket', cambiaremos el nombre de nuestro valor de campo Bucket Name para que sea 'todolite', ya que este será nuestro objetivo para que la aplicación móvil apunte a él. Realice la modificación del nombre del cubo dejando todo lo demás y luego haga clic en "Guardar" en la parte inferior derecha como se muestra a continuación.
Ahora deberías ver dos cubos de datos en la pestaña Data Buckets donde uno de ellos es el cubo 'todolite' que usaremos a continuación en nuestra aplicación.
[2] Conexión a la instancia AWS de Couchbase
A continuación necesitaremos obtener la 'IP Pública' desde la consola de AWS. Puedes consultar Paso 4 del blog anterior de nuevo en llegar a la consola web de AWS donde se puede obtener la IP Pública. Una vez localizada la instancia de Couchbase que se está ejecutando, copia la dirección IP pública.
Abre tu aplicación de terminal y localiza la carpeta donde guardaste el archivo del par de claves privadas que descargaste anteriormente. Este sería un archivo de extensión .pem y necesitarías estar en esa carpeta para conectarte a la instancia de Couchbase en AWS.
Tu clave no debe ser visible públicamente para que SSH funcione y un comando a ejecutar en caso necesario sería:
1 2 |
chmod 400 nombre_de_la_clave.pem |
En el ejemplo anterior, el archivo .pem se llamaba "couchbase_aws", por lo que el comando a ejecutar es "chmod 400 couchbase_aws.pem".
A continuación vamos a SSH en nuestra AMI de Amazon Linux y lo haremos desde la ubicación de nuestra carpeta de claves privadas. El comando a ejecutar sería:
1 2 |
ssh -i "nombre_de_la_clave.pem" ec2-usuario@"public_ip" |
donde "nombre_de_la_clave.pem" y "public_ip" serán respectivamente las tuyas que hayas nombrado y tengas desde la consola web de Amazon. Esto se ilustra a continuación en la pantalla de la consola terminal.
[3] Modificar el archivo Sync Gateway Config.
El último paso antes de conectar Couchbase Sync Gateway y Couchbase Server es modificar el archivo de configuración de Couchbase Sync Gateway. El contenido config.json que necesitamos se encuentra en el directorio Repo GitHub ToDoLite y tendremos que copiar el contenido de ese repositorio y llevarlo a nuestro archivo config.json en nuestra instancia de AWS.
Abriremos nuestro archivo de configuración llamado 'config.json' y pegaremos el contenido del archivo Archivo "sync-gateway-config.json ubicado en el repo de ToDoLite. A continuación mostramos el contenido de lo que tendrá el config.json después de que ejecutemos el comando en la app Terminal: nano config.json
Usted notará que hay una ligera modificación y diferencia con este archivo config.json que se muestra arriba de lo que tenemos en el repositorio de GitHub. El valor de "servidor" es ahora 'http://localhost:8091' en oposición a 'morsa' que es un simple, limitado, base de datos en memoria que se utilizó en lugar de Couchbase Server. Usted puede leer más sobre el uso de morsa durante el desarrollo en el Portal móvil. Walrus se puede utilizar para pruebas unitarias, pero para nosotros aquí, vamos a tener Sync Gateway objetivo Couchbase Server en nuestra instancia local de AWS en la nube que se encuentra en el puerto: '8091'. Modificamos el valor del servidor a ser:
1 2 |
"servidor" : "http://localhost:8091" , |
También notarás que el valor "databases" tiene "todolite" que es específicamente el Data Bucket que hemos creado o modificado en nuestra Couchbase Web Console en el paso 1 de este blog. Esta puerta de enlace de sincronización está ahora lista para apuntar al cubo de datos específico llamado "todolite" que se encuentra en nuestra instancia de servidor Couchbase en AWS en el puerto "8091". ejecutar juntos "control + x" en el teclado para salir del programa "nano" y guardar los cambios que ha realizado en el archivo config.json.
[4] Ejecución de la aplicación móvil Couchbase
Ahora que tenemos el archivo de configuración de Sync Gateway, config.json, listo para nuestra aplicación; el siguiente paso será apuntar nuestra aplicación móvil al punto final al que deseamos apuntar. Descargar la aplicación de ejemplo ToDoLite Couchbase Mobile que se encuentra en GitHub y para este blog haremos referencia a la versión para Android. También existe una versión ToDoLite para iOS y los pasos para conectar la aplicación a Couchbase Sync Gateway y Couchbase Server son similares. Puedes hacer referencia al Portal Móvil guía sobre cómo crear ToDoLite en Android. Supondremos que tienes la aplicación móvil ejecutándose en tu dispositivo o emulador y nuestro siguiente paso es modificar la URL de sincronización.
Para modificar nuestra URL de sincronización, vamos a localizar nuestro archivo 'BuildConfig.java' y puedes hacerlo haciendo clic en el icono de la lupa en el tema de la derecha dentro de Android Studio y escribe 'BuildConfig.java', pulsa enter y abre el archivo. Usted debe ver lo anterior donde la variable SYNC_URL_HTTP está apuntando a "http://demo.couchbasemobile.com:4984/todolite/" punto final. Este es un cuadro de demostración que hemos configurado originalmente, pero ahora que tienes tu propia instancia de Couchbase Sync Gateway y Couchbase Server en AWS, vamos a modificar en consecuencia y apuntar a la instancia que has configurado. Para ello, primero localiza el 'DNS Público' en tu consola web de Amazon, ya que esta será tu instancia de destino. Es posible que referencia Paso 4 del blog AMI sobre cómo y dónde obtener el DNS público. El Sync Gateway escucha en el puerto 4984 para los comandos de la API de sincronización y el cubo de datos que estamos apuntando se llama 'todolite'; por lo tanto, para la URL de sincronización modificada tendremos la estructura a ser:
1 2 |
<span estilo="color: #cc7832">público estático final </span>Cadena <span estilo="color: #9876aa;font-style: italic">SYNC_URL_HTTP </span>= <span estilo="color: #6a8759">"http://'DNS público':4984/todolite/"</span><span estilo="color: #cc7832">;</span> |
donde el "DNS público" es el suyo que se obtiene de la consola de AWS. Ahora, antes de crear y ejecutar su aplicación móvil, deberá iniciar Sync Gateway desde su instancia EC2.
[5] Iniciar Sync Gateway
Desde la aplicación Terminal, inicia sesión en tu instancia EC2 como hicimos al final del Paso 2 de este blog y añade una ruta a tu archivo '.bash_profile'. Deberías estar en tu directorio de usuario '/home/ec2-user' y luego ejecutar 'nano .bash_profile' como se muestra a continuación
A continuación añadiremos una línea adicional al fichero '.bash_profile' para poder acceder al programa Couchbase Sync Gateway desde cualquier lugar dentro de nuestra instancia sin tener que teclear la ruta completa de la ubicación del Sync Gateway. La ubicación de Sync Gateways se encuentra en '/opt/couchbase-sync-gateway/bin' cuando se creó la AMI de Couchbase y la línea adicional que añadirías es:
1 2 |
SENDERO=$SENDERO:/op/couchbase-sincronizar-pasarela/papelera |
Desde dentro del programa nano, puede hacer referencia a la imagen de abajo donde se añade el valor PATH.
Ejecuta 'control+x' en el teclado para salir de nano y guardar los cambios que has hecho en el archivo '.bash_profile'. Salga de la instancia escribiendo 'exit' y presione 'enter' en el teclado y luego SSH de nuevo para que ahora tenga el PATH en su perfil. Y si desea acceder al directorio donde se encuentra la puerta de enlace de sincronización, puede seguir a continuación a partir de dentro de su directorio de usuario '/home/ec2-user'. La flecha verde apunta al programa Sync Gateway que vamos a ejecutar.
Finalmente estamos listos para ejecutar Sync Gateway desde nuestra instancia EC2 y volveremos al directorio donde se encuentra nuestro archivo 'config.json' ya que necesitaremos especificar la configuración con la que queremos ejecutar nuestro Couchbase Sync Gateway. Sigue los siguientes comandos para volver al directorio '/home/ec2-user' y ejecutar:
1 2 |
sync_gateway config.json |
A continuación se muestra el último comando.
Después de ejecutar nuestro Sync Gateway contra el archivo 'config.json', veremos la siguiente información sobre nuestras configuraciones donde el Couchbase Server y el Couchbase Sync Gateway están ahora ambos listos para que nuestra aplicación móvil replique datos contra en los puertos apropiados.
[6] Replicar datos a Couchbase Sync Gateway y Server
Finalmente podemos ejecutar nuestra aplicación Android ToDoLite y sincronizar los datos con nuestro Couchbase Sync Gateway y Couchbase Server en la nube. Recordemos que el stack de Couchbase Mobile consiste en Couchbase Lite, la base de datos JSON embebida que es consumida dentro del proyecto ToDoLite y ahora hemos configurado nuestro Sync Gateway y Server para que sean apuntados por la aplicación. Esto se hizo desde Android Studio modificando la variable 'SYNC_URL_HTTP' desde el archivo 'BuildConfig.java'.
Desde Android Studio lanzaremos dos instancias distintas de la aplicación e iniciaremos sesión con dos usuarios distintos. Esto nos permitirá mostrar la replicación a través de las dos instancias diferentes. Lanzaremos una con el emulador de Android y otra usando Genymotion como se muestra a continuación. Al iniciar sesión y compartir la lista con los usuarios, podrá ver que no sólo se comparte la lista, sino que la tarea introducida se replica en ambos dispositivos cliente.
Abajo tenemos una Lista llamada 'Couchbase AMI' que creamos entrando y compartiendo con usuarios en la misma base de datos. Desde dentro de la lista, creamos una tarea llamada 'Replicate Data' y el título se sincronizó en consecuencia a través de Couchbase Sync Gateway.
Otra forma de ver cómo funciona esta replicación es abrir de nuevo la consola web de Couchbase, donde verás que los cubos de datos se rellenan con el título del elemento de tarea que has creado. Accede a la consola de Couchbase y haz click en la pestaña Data Buckets como hicimos en el Paso 1. Haz clic en la flecha que apunta a "todolite" y luego haz clic en "Documentos" como se muestra a continuación.
Al abrir los "Documentos", verá todos los documentos que se crean cuando introducimos una tarea en la lista desde nuestra aplicación móvil "ToDoLite". Si hace clic en un documento y lo abre, verá el tipo de tarea que se ha creado y el título que le hemos dado en este ejemplo es "Replicar datos", como se muestra a continuación.
¡Enhorabuena! Ahora tienes Couchbase como servicio ejecutándose en Amazon AWS y también tienes una aplicación móvil, ToDoLite, ejecutándose contra Couchbase Sync Gateway y Couchbase Server en producción. Eres capaz de sincronizar datos a través de ambos dispositivos cliente Android usando el Sync Gateway a través de las configuraciones del archivo config.json y mientras tienes los datos almacenados en el servidor en la nube. Puedes leer más sobre las APIs de Couchbase Lite en nuestra página web Portal para desarrolladores móviles y también en cómo instalar la AMI de Couchbase de la primera parte.