Dando continuidade ao blog em que instalou a AMI do Couchbase (Amazon Machine Image) na AWS, agora vamos explorar como conectar o Gateway de sincronização do Couchbase ao Couchbase Server que está sendo executado no Amazon EC2 em um aplicativo móvel funcional.
[1] Console da Web do Couchbase
Para ver nossa instância do Couchbase Server e os Data Buckets, faremos login no Console da Web do Couchbase, o que fizemos em Etapa 4 do blog anterior. Ao fazer login e clicar na guia "Server Nodes", você verá a instância do Couchbase Server em execução. Ela é gerada a partir da AMI do Couchbase quando a lançamos no AWS marketplace.
Além disso, você verá a guia Data Buckets que tem buckets pré-configurados das instalações AMI. Para este blog, vamos conectar o Couchbase Sync Gateway ao Couchbase Server e a primeira coisa que precisamos fazer é modificar um dos nomes dos buckets de dados.
Para modificar o nome do nosso bucket, primeiro clicamos na seta ao lado do nome do bucket para exibir as informações do bucket, conforme mostrado abaixo. Em seguida, clicaremos no botão "Edit" (Editar) para acessar o menu de configuração.
Em seguida, no menu "Configure Bucket", alteraremos o nome do valor do campo Nome do Bucket para "todolite", pois esse será o destino para o qual o aplicativo móvel apontará. Faça a modificação do nome do bucket, deixando todo o resto e, em seguida, clique em "Save" (Salvar) no canto inferior direito, conforme mostrado abaixo.
Agora você deve estar vendo dois compartimentos de dados na guia Compartimentos de dados, sendo que um deles é o compartimento "todolite" que usaremos em seguida no nosso aplicativo.
[2] Conectando-se à instância do AWS do Couchbase
Em seguida, precisaremos obter o "IP público" no console do AWS. Você pode consultar Etapa 4 do blog anterior novamente para acessar o console da Web do AWS, onde o IP público pode ser obtido. Depois de localizar a instância do Couchbase que está em execução, copie o endereço IP público.
Abra seu aplicativo de terminal e localize a pasta onde armazenou o arquivo de par de chaves privadas que baixou anteriormente. Esse seria um arquivo de extensão .pem e você precisaria estar nessa pasta para se conectar à instância do Couchbase no AWS.
Sua chave não deve estar visível publicamente para que o SSH funcione, e um comando a ser executado, se necessário, seria:
1 2 |
chmod 400 'nome_da_chave.pem' |
No exemplo anterior, o arquivo .pem foi nomeado "couchbase_aws" e, portanto, o comando a ser executado é "chmod 400 couchbase_aws.pem
Em seguida, faremos o SSH em nossa AMI do Amazon Linux e faremos isso a partir do local da pasta da nossa chave privada. O comando a ser executado seria:
1 2 |
ssh -i "nome_da_chave.pem" ec2-usuário@"public_ip" |
em que "name_of_key.pem" e "public_ip" serão, respectivamente, seus próprios nomes e do console da Web da Amazon. Isso é ilustrado abaixo na tela do console do terminal.
[3] Modificar o arquivo de configuração do Sync Gateway
A última etapa antes de conectarmos o Couchbase Sync Gateway e o Couchbase Server é modificar o arquivo de configuração do Couchbase Sync Gateway. O conteúdo config.json de que precisamos está localizado no diretório Repositório do GitHub ToDoLite e precisaremos copiar o conteúdo desse repositório e trazê-lo para o nosso arquivo config.json em nossa instância do AWS.
Abriremos nosso arquivo de configuração chamado 'config.json' e colaremos o conteúdo do arquivo Arquivo 'sync-gateway-config.json localizado no repositório do ToDoLite. Abaixo, mostramos o conteúdo do config.json depois de executarmos o comando no aplicativo Terminal: nano config.json
Você perceberá que há uma ligeira modificação e diferença no arquivo config.json mostrado acima em relação ao que temos no repositório do GitHub. O valor do "servidor" agora é "http://localhost:8091", em vez de "walrus", que é um valor simples e limitado, banco de dados na memória que foi usado no lugar do Couchbase Server. Você pode ler mais sobre o uso do Walrus durante o desenvolvimento no site Portal móvel. O Walrus pode ser usado para testes de unidade, mas para nós aqui, teremos o Sync Gateway como alvo do Couchbase Server em nossa instância local do AWS na nuvem, que está localizada na porta: '8091'. Modificamos o valor do servidor para ser:
1 2 |
"servidor" : "http://localhost:8091" , |
Você também notará que o valor de "databases" tem "todolite", que é especificamente o Data Bucket que criamos ou modificamos em nosso Console da Web do Couchbase na etapa 1 deste blog. Esse Sync Gateway agora está pronto para direcionar o bucket de dados específico chamado "todolite", que está localizado em nossa instância do Couchbase Server no AWS na porta "8091". Execute as teclas "control+x" para sair do programa "nano" e salvar as alterações feitas no arquivo config.json.
[4] Executando o aplicativo móvel do Couchbase
Agora que temos o arquivo de configuração do Sync Gateway, config.json, pronto para nosso aplicativo, a próxima etapa será apontar nosso aplicativo móvel para o ponto final que desejamos atingir. Faça o download do aplicativo de amostra do ToDoLite Couchbase Mobile encontrado no GitHub e, para este blog, faremos referência à versão para Android. Há também uma versão do ToDoLite para iOS e as etapas para conectar o aplicativo ao Couchbase Sync Gateway e ao Couchbase Server são semelhantes. Você pode consultar o Mobile Portal Guia sobre como criar o ToDoLite no Android. Vamos supor que você tenha o aplicativo móvel em execução no seu dispositivo ou emulador, e a próxima etapa é modificar o URL de sincronização.
Para modificar o URL de sincronização, localizaremos o arquivo "BuildConfig.java" e você pode fazer isso clicando no ícone da lupa no tópico à direita do Android Studio e digitando "BuildConfig.java", pressionando Enter e abrindo o arquivo. Você deve ver a imagem acima, em que a variável SYNC_URL_HTTP está apontando para o ponto final "http://demo.couchbasemobile.com:4984/todolite/". Essa é uma caixa de demonstração que configuramos originalmente, mas agora, como você tem sua própria instância do Couchbase Sync Gateway e do Couchbase Server no AWS, modificaremos isso de acordo e apontaremos para a instância que você configurou. Para fazer isso, primeiro localize o "DNS público" no console da Web da Amazon, pois essa será a instância de destino. Você pode consulte a Etapa 4 do blog da AMI sobre como e onde obter o DNS público. O Gateway de sincronização escuta na porta 4984 os comandos da API de sincronização e o bucket de dados que estamos direcionando é chamado de "todolite"; portanto, para o URL de sincronização modificado, a estrutura será:
1 2 |
<extensão estilo="color: #cc7832">público estático final </extensão>Cordas <extensão estilo="color: #9876aa;font-style: italic">SYNC_URL_HTTP </extensão>= <extensão estilo="color: #6a8759">"http://'Public DNS':4984/todolite/"</extensão><extensão estilo="color: #cc7832">;</extensão> |
em que o "DNS público" é o seu próprio DNS, obtido no console do AWS. Agora, antes de criar e executar o aplicativo móvel, você precisa iniciar o Sync Gateway na instância do EC2.
[5] Iniciar o Sync Gateway
No aplicativo Terminal, faça login na sua instância do EC2, como fizemos no final da Etapa 2 deste blog, e adicione um caminho ao seu arquivo '.bash_profile'. Você deve estar no seu diretório de usuário "/home/ec2-user" e, em seguida, executar "nano .bash_profile" como abaixo
Em seguida, você adicionará uma linha adicional ao arquivo '.bash_profile' para que possa acessar o programa Couchbase Sync Gateway de qualquer lugar da sua instância sem precisar digitar todo o caminho do local do Sync Gateway. O local dos Sync Gateways está localizado em '/opt/couchbase-sync-gateway/bin' quando a AMI do Couchbase foi criada e a linha adicional que você deve adicionar é
1 2 |
PATH=$PATH:/optar/couchbase-sincronização-portal/caixa |
No programa nano, você pode consultar a imagem abaixo sobre onde o valor PATH é adicionado.
Execute 'control+x' no teclado para sair do nano e salvar as alterações feitas no arquivo '.bash_profile'. Saia da instância digitando "exit" e pressione "enter" no teclado e, em seguida, entre novamente no SSH para que agora você tenha o PATH em seu perfil. Se desejar acessar o diretório onde o Sync Gateway está localizado, siga as instruções abaixo, começando no diretório do usuário '/home/ec2-user'. A seta verde aponta para o programa Sync Gateway que estaremos executando.
Por fim, estamos prontos para executar o Sync Gateway em nossa instância do EC2 e voltaremos ao diretório em que o arquivo "config.json" está localizado, pois precisaremos especificar a configuração na qual queremos executar o Couchbase Sync Gateway. Siga os comandos abaixo para retornar ao diretório "/home/ec2-user" e executar:
1 2 |
portais de sincronização configuração.json |
Isso é mostrado abaixo como o último comando.
Depois de executarmos nosso Sync Gateway no arquivo "config.json", veremos as informações abaixo sobre nossas configurações, em que o Couchbase Server e o Couchbase Sync Gateway agora estão prontos para que nosso aplicativo móvel replique os dados nas portas apropriadas.
[6] Replicar dados para o servidor e o gateway de sincronização do Couchbase
Por fim, podemos executar nosso aplicativo ToDoLite para Android e sincronizar os dados com o Couchbase Sync Gateway e o Couchbase Server na nuvem. Lembre-se de que a pilha do Couchbase Mobile consiste no Couchbase Lite, o banco de dados JSON incorporado que é consumido no projeto ToDoLite, e agora configuramos o Sync Gateway e o Server para serem direcionados pelo aplicativo. Isso foi feito no Android Studio, modificando a variável "SYNC_URL_HTTP" no arquivo "BuildConfig.java".
No Android Studio, iniciaremos duas instâncias separadas do aplicativo e faremos login com dois usuários diferentes. Isso nos permitirá mostrar a replicação entre as duas instâncias diferentes. Iniciaremos uma com o emulador de Android padrão e outra usando o Genymotion conforme mostrado abaixo. Ao fazer login e compartilhar a lista com os usuários, é possível ver que não apenas a lista é compartilhada, mas a tarefa inserida é replicada em ambos os dispositivos clientes.
Abaixo, temos uma lista chamada "Couchbase AMI" que criamos inserindo e compartilhando com os usuários no mesmo banco de dados. A partir da lista, criamos uma tarefa chamada "Replicate Data" (Replicar dados) e o título foi sincronizado de acordo com o Couchbase Sync Gateway.
Outro lugar para ver essa replicação funcionando é abrir o console da Web do Couchbase novamente, onde você verá os Data Buckets serem preenchidos com o título do item de tarefa que você criou. Faça login no console do Couchbase e clique na guia Data Buckets, como fizemos na Etapa 1. Clique na seta que aponta para "todolite" e, em seguida, clique em "Documents" (Documentos), como abaixo.
Ao abrir os "Documentos", você verá todos os documentos criados quando inserimos uma tarefa na lista a partir do aplicativo móvel "ToDoLite". Se você clicar e abrir um documento, verá o tipo de "tarefa" que foi criada e, neste exemplo, nomeamos o título como "Replicar dados", conforme mostrado abaixo.
Parabéns! Agora você tem o Couchbase como um serviço em execução no Amazon AWS e também tem um aplicativo móvel, o ToDoLite, em execução no Couchbase Sync Gateway e no Couchbase Server em produção. Você pode sincronizar dados em ambos os dispositivos clientes Android usando o Sync Gateway por meio das configurações do arquivo config.json e, ao mesmo tempo, ter os dados armazenados no servidor na nuvem. Você pode ler mais sobre as APIs do Couchbase Lite em nosso Portal do desenvolvedor móvel e também em como instalar a AMI do Couchbase da parte 1.