Parse server + Heroku + MongoDB
Introdução
editar
Esse seminário tem como objetivo apresentar a API da Parse, dando deploy pelo Heroku e para armazenamento de dados utilizando o MongoDB. O Parse é uma API poderosa para backend de plataformas distintas, como por exemplo, Android, iOS, PHP, Arduino, MacOS, Unity, entre outras. Ela é bastante utilizada por startups e acabou chamando atenção do Facebook, que por volta de 2011, acabou adquirindo a Parse por US$ 85 Milhões. Esse interesse foi gerado por conta das mais de 100 mil aplicações mobile que utilizavam a API do Parse no backend de seus projetos. Além disso, através da sua ferramenta de análise de dados, era possível prever qual poderia ser o próximo aplicativo móvel a estourar no mercado, assim como o Instagram e o Snapchat. O Parse consiste em uma API para facilitar a comunicação de um banco de dados com sua aplicação demandando menos esforço de trabalho para sua implementação.
Instalação e Configuração do Parse Server
editarPasso 1
editarPara facilitar o que será feito ao longo da instalação, devemos primeiramente criar uma conta no Heroku. Após feito o Login devemos criar um novo app, clicando em create new app, depois damos o nome a nossa aplicação e clicamos em create app.
- Imagem
Após criado o novo aplicativo, vamos na aba resources. Na caixa de texto de Add-ons, escrevemos Mlab, com isso mostrará o Addon mLab MongoDB. E o selecionamos. Abrirá uma janela, clicamos em provision após feito isso, o heroku perdirá para que você confirme um cartão de crédito para poder adicionar o Addon, não haverá nenhuma cobrança no seu cartão. Feito isso iremos em settings, Reveal Config Vars. Na variável MONGOLAB_URI, iremos copiar o link e deixar salvo para o próximo passo. E iremos criar outras variáveis. Primeira variável será, DATABASE_URI e como valor iremos colar o link da variável MONGOLAB_URI. Como segunda variável, APP_ID que conterá o ID da sua aplicação como exemplo, ExemploGCS. Epor ultimo, MASTER_KEY, uma senha qualquer.
- Imagem
Passo 2
editarApós feito o Passo 1 iremos dar fork do Parse Server para que possamos fazer as modificações necessárias para apontar pro nosso banco de dados.
Depois de ter feito o fork, iremos clonar o repositório. Após o clone iremos na pasta parse-server-example, e abriremos o arquivo index.js é lá que iremos configurar nosso banco, variáveis de segurança etc.
- Imagem
No campo databaseUri, iremos colar o link da variável MONGOLAB_URI do heroku.
No campo APP_ID, iremos colocar a ID da nossa aplicação 'ExemploGCS'
No campo MASTER_KEY, uma chave como uma senha.
Iguais as variáveis criadas no heroku.
Feito isso iremos salvar as alterações e dar push pro nosso repositório.
Passo 3
editarFeito o Passo 2, agora é hora de dar deploy do nosso server no heroku. Na dashboard do heroku iremos na aba Deploy. O jeito mais fácil de dar deploy é pela sua conta do Github, ou seja em Deployment Method Selecione Github. Logue-se na sua conta e selecione o repositório pase-server-example que foi "forkado". Após ter selecionado, o heroku irá instalar a aplicação do parse. Feito isso já temos nosso server remoto assim como nosso banco de dados. Agora só integrar com alguma aplicação. Como exemplo iremos utilizar uma aplicação Android.
- Imagem
Integração com a Aplicação
editarExemplo Android
editarPrimeiramente, criamos uma classe ParseInitializer.java com herança da classe Application dentro da Controller do projeto sobrescrevendo o método OnCreate conforme abaixo:
public class ParseInitializer extends android.app.Application { @Override public void onCreate(){ super.onCreate(); // Establish connection with parse server Parse.initialize(new Parse.Configuration.Builder(this) .applicationId("NomeDaAplicacao") .server("EndereçoDoServidorDaAplicacaoNoHeroku") .clientKey("ChaveDoCliente") .build() ); } }
Feito isso, devemos nomear a aplicação com o caminho para a classe ParseInitializer, de modo que ela seja inicializada no momento da inicialização da aplicação.
<application android:name="NomeDoPacoteDaAplicacao.controller.ParseInitializer" </application>
Para integração com outras plataformas, API reference, SDK Download visite a pagina do Parse
MongoDB, Instalação para Exportar e Importar Dados
editar
Algo muito útil no MongoDB é justamente poder importar e exportar os dados da aplicação. Para tal iremos instalar via terminal do Ubuntu.
Primeiro:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Criar um arquivo de lista para o MongoDB:
$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse"
Recarregar os pacotes locais:
$ sudo apt-get update
E para instalar o pacote completo do MongoDB:
$ sudo apt-get install -y mongodb-org
Para um tutorial mais completo visite o manual do MongoDB.
Podemos importar e exportar arquivos em três saídas: Binário, JSON ou CSV.
Para importar toda a DataBase em Binary:
$ mongorestore -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -u <user> -p <password> <input db directory>
Para exportar toda a DataBase em Binary:
$ mongodump -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -u <user> -p <password> -o <output directory>
Para importar um conjunto de dados em Binary:
$ mongorestore -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -u <user> -p <password> <input .bson file>
Para exportar um conjunto de dados em Binary:
$ mongodump -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -c <collection> -u <user> -p <password> -o <output directory>
Para importar um conjunto de dados em JSON:
$ mongoimport -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -c <collection> -u <user> -p <password> --file <input file>
Para exportar um conjunto de dados em JSON:
$ mongoexport -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -c <collection> -u <user> -p <password> -o <output file>
Para importar um conjunto de dados em CSV:
$ mongoimport -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -c <collection> -u <user> -p <password> --file <input .csv file> --type csv --headerline
Para exportar um conjunto de dados em CSV:
$ mongoexport -h ds021650.mlab.com:21650 -d heroku_87hhmvt4 -c <collection> -u <user> -p <password> -o <output .csv file> --csv -f <comma-separated list of field names>
Onde <user> é o usuário criado na aba users na dashboard do mongodb, assim como <password> para a senha criada. E <collection> o nome do conjunto de dados, por exemplo "Users".