Firebase

DP6
DP6
Jul 24, 2017 · 7 min read

Seja bem vindo ao terceiro post da série “Firebase” da DP6. Se você chegou só agora, sem problemas, este post explora questões independentes aos outros, mas recomendo muito a leitura de nossas duas outras entradas de nosso blog sobre o assunto.

Nesta edição vamos falar das funcionalidades do Firebase direcionadas para facilitar a vida do desenvolvedor e aumentando as capacidades dos Aplicativos.

Desenvolvimento

O Firebase é uma poderosa ferramenta para o desenvolvimento de Apps. Ela traz à mesa toda estrutura Google para garantir alta performance de Bancos de Dados e funcionalidades de backend, tudo na Nuvem.

Vamos abordar as principais ferramentas direcionadas para Aplicativos Móveis e cada uma destas com certeza merece um post dedicado, mas aqui farei uma introdução a cada uma, então vamos direto ao ponto!

Realtime Database

A solução de banco de dados em tempo real do Firebase é estruturada em NOSQL e o grande objetivo é ter o armazenamento e sincronização entre usuários ativos a todo o momento para que a experiência de atualização de dados seja instantânea, mesmo entre diferentes plataformas (entre seu website e aplicativo, por exemplo) ou entre usuários (para colaboração ativa).

O grande destaque aqui é a possibilidade de criar apps que não precisam de um servidor para funcionarem, pois as informações são armazenadas conforme a estrutura desejada e, utilizando cloud functions é até mesmo possível rodar scripts backend para o tratamento de informações e adicionar inteligência ao app.

Outro ponto sempre a ser considerado quando construímos apps, é o aspecto offline. Usuários estão sempre em movimento com seus smartphonese nem sempre conseguem acesso à internet. Neste caso, o Database é capaz de usar o armazenamento local (local cache) do aparelho para oferecer a última versão possível dos dados.

Isso é especialmente útil para casos em que o app precisa fornecer informações mesmo antes de pedir ao usuário se logar.

Funcionamento

O Realtime database segue um conceito de sincronização de dados, ao invés de uma relação client-server. Toda a informação é processada localmente e diretamente transmitida para todos os usuários conectados. Para isso ocorrer, agilidade é o foco central. Usando uma linguagem dedicada chamada “Firebase Realtime Database Security Rules”, o database se limita à operações que possam ser realizadas rapidamente e é crucial ter isso em mente quando planejamos como e quando usuários poderão acessar/modificar informações.

O database pode ser aberto para leitura/modificação ou limitado por autenticação. Esta pode ser feita diretamente pela integração com o módulo de autenticação do Firebase (Firebase Auth).

Cloud Functions

Este módulo é focado para que, sem necessidade de rodar um servidor dedicado, seja possível adicionar inteligência backend para os Apps. Isso oferece grande flexibilidade contando com os servidores expansíveis do Google, retirando também a preocupação com escalabilidade.

Muito da lógica de funcionamentos mais complexos e seguros que precisam ser concentrados em servidores, podem ser facilmente implementados via Cloud Functions. Atuando com a inteligência backend de Apps, essas funções podem atuar como o conector entre os outros módulos do Firebase. Quer enviar um e-mail de boas vindas para usuários que logaram pela primeira vez? Use uma função!

As Cloud Functions são implementadas via Javascript diretamente para um ambiente em Node.js e publicadas instantaneamente. Esta é uma ótima alternativa ou mesmo solução para evitar a necessidade imediata para o uso de servidores backend internos e complexos. Elas podem até mesmo ser utilizadas como uma interface entre o seu app e seu servidor para separar camadas lógicas mais simples (direto no Cloud Functions) e complexas (em seu servidor).

O funcionamento das funções é baseado em Triggers gerados pelo app tanto de forma manual como específicos dos outros módulos. Vale o destaque para a integração das cloud functions com o Google Analytics, que pode ser utilizado para realizar lógicas baseadas em seus objetivos de negócio, quando o Google Analytics enviar um evento de conversão, por exemplo.

Firebase Authentication

O Firebase também pode ser utilizado para autenticar usuários de forma facilitada com redes sociais ou até mesmo com seu próprio registro de usuários.

A ferramenta facilita muito o processo de integração entre apps e sistema de autenticação e muito pode ser feito direto da interface.

Integração nativa:

Depois de habilitadas, o SDK possui funcionalidades para cuidar da verificação de dados e métodos para redefinir senhas perdidas e modificar dados do login com templates personalizados, além disso, a criação, modificação e autenticação, além do gerenciamento e uso dos dados de login podem ser todos utilizados utilizando o SDK.

Além de uma ótima alternativa para rapidamente implementar e gerenciar usuários, vale lembrar que o módulo também interage com os outros módulos, enviando triggers para as Cloud Functions e integrando diretamente com o Realtime Database para gerenciar dados pessoais ou particulares a cada usuário.

Firebase Cloud Storage

Além de dados, o Firebase também oferece o módulo para armazenamento e gerenciamento de arquivos na nuvem, o Cloud Storage.

Habilitando este módulo no SDK do firebase oferece a capacidade de realizar uploads e downloads de arquivos como fotos ou vídeos diretamente aos servidores do Google. Assim como outros módulos, o Cloud Storage possui o poder de escalabilidade do Google para remover a necessidade de gerenciamento de múltiplos servidores e problemas com o backend.

O destaque é para a compatibilidade com a realidade de smartphones. O Módulo de storage automaticamente pausa uploads em caso de perda de conexão e reativa o processo quando o usuário volta a ter cobertura de rede. O módulo também é integrado ao Firebase Authentication para que dados sejam facilmente separados e seguros para seus usuários.

Firebase Performance Monitoring

O cenário de smartphones é complexo por conta da diversidade existente de aparelhos e conexões que não param de crescer. O Módulo de Performance Monitoring ajuda diretamente com este aspecto, oferecendo ferramentas para acompanhar o desempenho de apps e diferentes tipos de aparelhos. Este módulo é disponível apenas para iOS no momento deste post.

Com coleta de dados automática e personalizada esse módulo foca em acompanhar o tempo e uso de rede entre eventos e depois reporta seu diagnóstico quebrado pelos diferentes aparelhos, versões do App e região, para que seja possível entender com exatidão os momentos e aparelhos que precisam de mais atenção para manter usuários satisfeitos com sua experiência e evitar a perda por conta de fustrações.

Cada momento de coleta, chamado de Trace, acontece entre dois eventos, como por exemplo o momento entre apertar “Login” até o usuário chegar na tela incial do App.

Para cada Trace, o SDK captura uma série de informações automaticamente:

  • Tempo de resposta entre Traces.
  • Foreground e Background traces: O SDK consegue reconhecer a performance do App mesmo quando rodando em plano de fundo.

Para Traces que tenham comunicação com servidores (http/s), o SDK também coleta:

  • Tempo de resposta: O tempo que leva até a resposta
  • Tamanho: Tamanho em Bytes transferidos
  • Taxa de sucesso: Taxa de conexões bem sucedidas entre o App e servidores

Nos relatórios, os traces são cruzados por:

  • App version
  • Country
  • Device
  • OS
  • Radio
  • Carrier

E para aqueles que possuem comunicação com servidores, são oferecidas as visões por:

  • App version
  • Country
  • Device
  • OS
  • Radio
  • Carrier
  • MIME type

Crash Reporting (apenas iOS)

Além de oportunidades de melhoria na performance, algo que é necessário evitar a todo o custo são erros críticos (Crashes), estes são erros que causam o aplicativo para fechar inesperadamente, geralmente causando grande frustração e até mesmo a desinstalação. Para ajudar com este lado, o Firebase inclui o Crash Reporting.

Integrado automaticamente ao SDK, o Firebase coleta informações sobre erros críticos. Os relatórios indicam informações importantes como o percentual de usuários afetados por erros e o detalhamento de cada erro, separado pelo número de ocorrências, tipo e descrição técnica.

Um destaque é a integração com o módulo de analytics. Os erros enviam o evento app_exception, que pode ser utilizado para investigação do comportamento de usuários que sofreram erros críticos para melhor identificar causas e focar esforços para ajustes técnicos.

Conclusão

O Google Firebase é uma suite de ferramentas que mostra seu poder quando utilizada em conjunto e os módulos oferecem grande flexibilidade para que apenas as ferramentas mais úteis sejam utilizadas sem causar peso excessivo do SDK.

Augusto Roselli

– DP6

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade