O Firebase, lançado em 2012 e adquirido pelo Google dois anos mais tarde, surgiu inicialmente como um banco de dados em tempo real para aplicativos. Contudo, o Google, vislumbrando seu potencial, expandiu a plataforma, agregando diversos serviços.
Hoje, o Firebase é um sistema BaaS (backend como serviço) que engloba 18 serviços, facilitando o desenvolvimento de aplicações web e móveis. Empresas renomadas como Accenture, Alibaba Travels, Stack, Twitch e Instacart, juntamente com mais de 2.300 outras, utilizam os serviços BaaS do Firebase.
Vantagens do uso do Firebase
O serviço pioneiro do Firebase, o banco de dados em tempo real, continua sendo um dos seus maiores atrativos. Os bancos de dados Realtime do Firebase são hospedados na nuvem, armazenando dados em formato JSON e sincronizando-os em tempo real com todos os clientes conectados. Seja através dos SDKs para iOS, Android ou JavaScript, todos os aplicativos vinculados a um banco de dados Realtime do Firebase compartilham uma instância, mantendo-se sempre atualizados com os dados mais recentes.
O Cloud Firestore é outro serviço notável do Firebase. Trata-se de um banco de dados de documentos NoSQL, projetado para simplificar o armazenamento, sincronização e consulta de dados para aplicativos móveis e web em escala global. A capacidade de criar hierarquias para organizar dados relacionados e a disponibilidade de consultas expressivas para recuperação de dados permitem explorar todo o potencial do Cloud Firestore. As consultas são dimensionadas com base no tamanho dos resultados, e não no tamanho do conjunto de dados. Isso viabiliza o dimensionamento de aplicativos desde o início, sem a necessidade de aguardar que as demandas ultrapassem a capacidade.
Além dos serviços de banco de dados, o Firebase oferece hospedagem, armazenamento de arquivos, funções (semelhantes ao AWS Lambda) e muitas outras funcionalidades.
Criação de uma API
APIs são meios de disponibilizar serviços para uso próprio ou de terceiros. O Firebase permite a criação de serviços personalizados que utilizam os serviços do Firebase, eliminando a complexidade de configurar um backend específico. Por exemplo, é possível oferecer acesso a um banco de dados em tempo real do Firebase para que aplicativos de terceiros consultem informações coletadas por sensores industriais.
Para criar uma API no Firebase, o primeiro passo é acessar o Console do Firebase e adicionar um projeto, clicando em “Adicionar projeto” e nomeando-o. O Google oferecerá a opção de ativar o Google Analytics para o novo projeto, uma recomendação valiosa para obter benefícios como testes A/B e uma variedade de relatórios estatísticos da API.
Após criar o projeto, é possível escolher os serviços do Firebase que serão utilizados pela API. Para ilustrar, demonstraremos como usar o serviço de banco de dados Firebase Realtime.
Configuração de um banco de dados Realtime no Firebase
Na barra de navegação à esquerda, na seção “Desenvolver”, clique em “Realtime Database”. Um botão “Criar banco de dados” aparecerá à direita. Clique nele para criar seu primeiro banco de dados no Firebase.
Em seguida, selecione uma das opções de localização geográfica para o banco de dados, preferencialmente a mais próxima dos seus usuários. Esse aspecto é crucial para minimizar a latência da API, principalmente em aplicações em tempo real.
O próximo passo é definir as regras de segurança iniciais do banco de dados. Você pode escolher o modo bloqueado, atribuindo permissões de acesso conforme a necessidade, ou o modo de teste, que permite todas as leituras e gravações.
Para simplificar a configuração inicial, o modo de teste é uma boa opção. Regras mais granulares de segurança podem ser estabelecidas posteriormente.
Após a configuração do banco de dados, a API correspondente será ativada na seção APIs e serviços do seu console pessoal no Google Cloud Platform.
Programando a API do Firebase
Neste momento, os elementos básicos do seu projeto já estão configurados no console do Firebase. A próxima etapa é codificar a API. Para isso, é necessário inicializar o hosting e as funções do Firebase em seu computador. Utilize o npm para instalar o firebase-tools:
npm install -g firebase-tools
Em seguida, faça login no Firebase e inicialize o projeto com os comandos:
firebase login firebase init
Uma tela de boas-vindas informará a pasta de inicialização do projeto e exibirá um menu de opções.
Selecione “Funções” e “Hospedagem” (a opção de hospedagem permitirá ter uma URL personalizada para a API que você desenvolverá). Em seguida, escolha o aplicativo Firebase criado anteriormente na lista e selecione a linguagem a ser utilizada. Para o desenvolvimento de uma API web, JavaScript é uma boa escolha.
Caso precise de dependências, instale-as com npm dentro da pasta de funções. Comece a escrever o código para suas funções, incluindo os pacotes firebase-functions e firebase-admin, e quaisquer outros pacotes necessários:
import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin';
Para usar o banco de dados em tempo real, é necessário especificar a sua URL ao inicializar o SDK do JavaScript. Esta URL está localizada na seção Realtime Database do Firebase console e pode ser reconhecida pelo seu formato:
https://<database-name>.<region>.firebasedatabase.app
O snippet a seguir pode ser usado para inicializar o SDK, substituindo os dados pelo objeto de configuração do seu projeto:
var config = { apiKey: "apiKey", authDomain: "projectId.firebaseapp.com", databaseURL: "https://databaseName.firebaseio.com", storageBucket: "bucket.appspot.com" }; firebase.initializeApp(config); var database = firebase.database();
Após escrever o código da função da API, é hora de implantar. Antes disso, faça ajustes no arquivo firebase.json, adicionando as seguintes linhas, de acordo com a configuração do seu projeto:
"rewrites": [ { "source": "/api/v1/**", "function": "webApi" } ]
O próximo passo é a implantação. A primeira implantação deve ser completa, usando o comando:
firebase deploy
Nas implantações subsequentes, use o parâmetro –only functions para implantar apenas as funções.
Após o comando deploy, a Firebase CLI exibirá no terminal o URL dos endpoints HTTP das funções. Este URL pode ser usado para invocar as APIs de um aplicativo web. O URL contém o ID do projeto e uma região para a função HTTP. Por exemplo, o seguinte URL pode ser usado para chamar uma função de consulta de item, passando o parâmetro itemid=1:
https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1
Para executar a função, abra a URL com os parâmetros correspondentes em um navegador.
Note que a implantação em ambiente de produção requer uma assinatura do plano Firebase Blaze, que é paga conforme o uso, como detalhado na página de preços do Firebase. Este é um serviço pós-pagamento, ou seja, você paga pelo uso no final de cada mês.
Sem a assinatura do plano Blaze, o comando deploy não exibirá o URL da API. Em vez disso, será exibida uma mensagem informando a necessidade de assinar o plano Blaze para implantar no ambiente de tempo de execução. Neste caso, use o Firebase Local Emulation Suite para criar e testar aplicativos localmente, sem implantá-los no ambiente de produção do Firebase. O teste local ajuda a evitar custos desnecessários durante o desenvolvimento, já que cada teste pode gerar cobranças.
Testes e protótipos locais
O Local Emulator Suite oferece uma interface de usuário integrada que facilita a prototipagem e o teste de aplicativos localmente.
A interface do Emulator Suite permite testar designs de banco de dados, fluxos de trabalho do Cloud Functions, analisar o desempenho dos serviços de backend e avaliar mudanças nas regras de segurança, entre outras tarefas. É um ambiente seguro para testar a funcionalidade da API antes de enviá-la para produção.
Para emular as funções ou testar o aplicativo localmente, execute firebase emulators:start. É necessário ter o Java instalado para usar o Firestore Emulator. Caso não tenha, faça a instalação através deste link.
Ao invocar o Firestore Emulator, o comando retornará um URL para abrir a interface do usuário do Emulator Suite no seu navegador. Por padrão, este URL será localhost:4000, mas pode variar em cada máquina.
Também será fornecido um URL completo para sua função HTTP. Este URL será semelhante a:
http://localhost:5001/apiproject-8753c/us-central1/itemQuery
Note que este URL terá o nome do seu projeto, o nome da sua função e também pode ter um número de porta diferente na sua máquina local.
Para testar a função, copie o URL retornado pelo emulador, adicionando os parâmetros necessários (ex: ?itemid=1), e cole-o em uma nova aba do seu navegador. Os resultados da execução da API aparecerão na interface do Emulator Suite.
Na aba Logs, você verá novos registros indicando que a função itemQuery() foi executada. Caso a função gere novos dados no banco de dados do Firestore, eles serão exibidos na aba Firestore.
Aumentando a visibilidade da sua API
Se o objetivo é tornar as APIs desenvolvidas populares, o Firebase também pode ajudar. Não apenas porque agiliza o desenvolvimento, eliminando grande parte do trabalho de colocar os serviços de back-end em funcionamento, mas também no posicionamento do produto. Como? Aplicativos associados ao Firebase têm melhor classificação em pesquisas do que outros.
Além disso, considere a API de indexação de aplicativos do Firebase, uma ferramenta que melhora o ranking de links de aplicativos e auxilia os usuários a encontrar o conteúdo desejado. Ela também adiciona o botão “Instalar” próximo ao botão da página inicial do aplicativo, facilitando a aquisição de novos usuários.
Em resumo, o Firebase oferece serviços de back-end que aceleram drasticamente o desenvolvimento de APIs e, após a implantação, ajuda a promovê-la e gerar receita.