Primeira Impressão do “novo” Firebase
No passado dia 18 de Maio, tive a oportunidade de participar pela primeira vez no Google IO e até este momento estou a tentar processar toda informação e os novos contactos com developers interessantes que conheci durante o evento de um universo de 7000 que se faziam presente no Shoreline Amphiteather em Mountain View, California.
Como não poderia fugir a regra, durante o evento varias novidades foram anunciadas, desde o novo assistente para casas denominado Google Home a novas aplicações como Allo e Duo que tem “Machine Learning” como um componente principal para a excelente experiência que elas prometem.
Caso não tenhas tido a a chance de ver o Keynote, recomendo que faça uma pausa de aproximadamente 2h neste momento para assistir.
De todos os tópicos anunciados durante o IO, um dos mais falados e que achei muito interessante foi o lançamento do novo Firebase.
Para quem não sabe o que é o Firebase, de forma muito simples, é um serviço que oferece ferramentas e infraestrutura necessária para que possamos desenvolver, testar e lançar aplicações com qualidade e escaláveis desde o dia 1.
Para melhor entender a esta definição, irei falar sobre 4 serviços do Firebase que achei interessantes.
Realtime Databases
Para falar de realtime databases, devemos primeiro dar alguns passos para trás e entender como fazíamos/fazemos as coisas sem o Firebase.
Quando temos a ideia de construir uma app e precisamos de persistir dados em algum sitio o nosso primeira instinto é pensar em tirar um framework, desenvolver uma REST API sobre o framework, definir a forma como os dados estarão estruturados e o tipo de base de dados a utilizar(SQL, MongoDB, etc). Tudo isto é muito interessante e bonito ate o momento em que temos de implementar mais funcionalidades que possam requerer que os dados sejam sincronizados em todos dispositivos do utilizador e nos encontramos em uma situação de ter de escrever muito código no android assim como nas outras plataformas para fazer algo muito simples.
Realtime Databases é simplesmente uma base de dados na cloud em que os dados são guardados utilizando a Javascript Object Notation ( JSON ) e a medida que os dados são modificados todas as aplicações cliente Web, Android e iOS são actualizadas instantaneamente e a única coisa com que devemos nos preucupar e em estruturar como queremos guardar os dados.
Autenticação
Voltando ao exemplo anterior em que criamos uma nova aplicação, a dada altura precisaríamos de começar a dar o poder ao utilizador de personalizar a aplicação ao seu gosto e para isso teríamos de implementar um sistema de autenticação para permitir que cada utilizador só possa aceder aos dados que esteja autorizado.
Este é um outro problema que começa primeiro por nos colocar na duvida entre implementar um sistema de autenticação de raiz versus utilizar a integração com redes sociais a problemas como fazer a devida gestão dos casos em que o utilizador decida fazer “merge” de todas estas contas.
O serviço de Autenticação do Firebase oferece API’s que permitem a integração com o Google+, Twitter, Facebook, Github ou a combinação e-mail/password sem que tenha de se preocupar com detalhes específicos de cada um destes mecanismo pois ao registar um novo utilizador independentemente do provider , o Firebase cria um FirebaseUser que contem um id único que poderá utilizar para guardar na realtime database associado a outros dados do utilizador.
Storage
Para completar a funcionalidades da realtime database que nos ajuda a guardar e sincronizar dados de forma estruturada, o Firebase possui o Storage que oferece um local e mecanismos necessários para o armazenamento de ficheiros( photos, musicas entre outros).
Se tomarmos como exemplo um caso de uso em que o utilizador decide adicionar uma foto ao seu perfil, a partir das API’s do firebase é possível fazer o upload da imagem, pegar o link e guardar na realtime database juntamente como os outros dados do seu perfil.
Estas API’s vão ainda mais a fundo e resolvem problemas comuns ao lidar com o envio e descarga de ficheiros como fraca conectividade e automaticamente retomar as operações após qualquer tipo de falhas.
Cloud Messaging e Analytics
Grande parte do que me deixou feliz no Firebase foi poder ter estas 2 componentes na mesma plataforma que permitiram analisar o comportamento dos utilizadores e enviar notificações forma fácil e apropriada.
Todo processo começa com o Firebase analytics que só por adicionar a dependência na aplicação consegue fazer a leitura de informação básica sobre como os utilizadores estão a utilizar a aplicação e com algumas linhas de código a mais podemos controlar eventos, telas e outro tipo de métricas que podem variar de projecto para projecto.
Ao obter informação sobre como os utilizadores estão a utilizar a aplicação o Cloud Messaging entra com o papel de oferecer mecanismos para facilmente notificar os utilizadores.
O Firebase Cloud Messaging de forma geral é uma versão melhorada do Google Cloud Messaging com o poder de nos permitir definir facilmente alguns parâmetros como o segmento de utilizadores que queremos(com base no analytics), recorrência de uma notificação e muitos outros dependendo da necessidade e criatividade da equipe de desenvolvimento.
Apesar de ter mencionado apenas 4 serviços oferecidos pelo Firebase os quais ja tenho estado a trabalhar e achei interessante, o Firebase tem ainda muito mais e a minha opinião é que veio para ficar e mudar a forma tradicional como sempre olhamos para o desenvolvimento tradicional do Backend de um determinado produto.
E com este primeiro post, dou inicio a série sobre o Firebase e o Android na seguinte sequência:
1.Realtime Databases Part 1- Introducao
2. Realtime Database Part 2- Interligacao com uma android App
3. Autenticacao : Firebase + Google Sign in no Android
4. Realtime Database Part 3- Regras de Segurança
Obrigado por ler.
Eu sou Dario Mungoi, um android GDE de Moçambique e Co-Fundador do Moovi.
Escrevo todas as Terças e Sextas e caso tenhas alguma duvida, sugestão, questão não hesite em deixar um comentário que ficarei feliz em levar a conversa a diante.