Construindo um servless Android App com WeDeploy e Kotlin

Victor Oliveira
Liferay Engineering Brazil
6 min readApr 20, 2018

Ei pessoal, tudo bem?

Meu nome é Victor Oliveira, sou engenheiro de software mobile na Liferay e estou aqui parar mostrar a vocês como é simples construir um aplicativo sem a necessidade de uma infraestrutura de backend. Pois é, agora você não precisa mais dividir seus freelas com aquele seu amigo que entende tudo de backend, o WeDeploy vai te ajudar nisso e eu vou te mostrar como.

O que é o WeDeploy?

O WeDeploy é uma plataforma de desenvolvimento que ajuda você a criar desde aplicativos simples à complexos. Ele te dá acesso a APIs intuitivas para microsserviços de backend, para que você possa criar aplicativos modernos em pouco tempo.

Com o WeDeploy você pode fazer o deploy e configuração da sua aplicação pela linha de comando, autenticar usuários com poucas linhas de código, armazenar dados de forma segura, consumir informações em tempo real, liberar aplicativos com tempo de inatividade zero e diversas outras coisas.

Por que devo usar o WeDeploy?

O WeDeploy foi criado para se tornar uma plataforma de implantação que lida com todos os seus desafios de back-end e infraestrutura. Dessa forma, você pode se concentrar no que importa — criar aplicações incríveis.

Como posso usar o WeDeploy?

Utilizando o vasto ecossistema do Docker, o WeDeploy pode ajudá-lo a publicar qualquer coisa, desde um aplicativo Web até um banco de dados complexo — sem alterar sua stack de tecnologia.

Não é só isso, você pode acelerar o seu processo de desenvolvimento usando nossos serviços Plug & Play.

Plug and Play Services

WeDeploy Email é um serviço de envio de email baseado em nuvem. É uma solução simples, confiável e econômica para enviar e-mails para seus clientes.

  • Servidor SMTP personalizado
  • Validação de email
  • Gerenciamento de log
  • API Intuitiva
  • Multi-plataforma
  • Verificação de entrega

WeDeploy Auth permite que você autentique usuários usando email/senha ou provedores de identidade de terceiros populares, como Facebook, Google ou Github. Com este serviço você pode configurar todo o sistema de autenticação de sua aplicação em poucas linhas de código no iOS, Android ou Web.

  • Gerenciamento de usuários
  • Segurança sem servidor
  • HTTPS fora da caixa
  • Redefinição de password
  • Provedores de identidade de terceiros
  • Multi plataforma

WeDeploy Hosting oferece uma maneira fácil de fazer deploy de páginas estáticas. Ajudaremos você com domínios personalizados, certificados SSL, práticas recomendadas de cache, integrações do GitHub e muitas outras coisas.

  • Deploy com um comando
  • Integração com o GitHub
  • HTTPS fora da caixa
  • Domínios personalizados
  • Páginas de erro personalizadas
  • Melhores práticas de caching

WeDeploy Data é um banco de dados NoSQL totalmente pesquisável que permite armazenar dados com segurança, fazer consultas complexas instantaneamente e consumir informações em tempo real. Para desenvolvedores mobile uma das partes mais chatas do desenvolvimento de um app é ter que depender da API backend para acessar banco de dados, persistir informações etc. WeDeploy Data faz com que isso seja gerenciado inteiramente no lado do cliente, ou seja, em sua aplicação.

WeDeploy SDK

Com o WeDeploy SDK você poderá criar aplicativos para as seguintes plataformas:

  • Apple: iOS (iPhone, iPad, iPod Touch), watchOS (AppleWatch), tvOS (AppleTV), macOS (aplicativos CarPlay e Desktop).
  • Google: telefones e tablets Android, Android Wear, Android TV, Android Auto e qualquer plataforma que suporte Java!

Demo: Kotlin + WeDeploy = Serverless App

O WeDeploy Android SDK é desenvolvido em Java, mas eu decidi utilizar Kotlin em nossa demo principalmente pela linguagem ter sido adota oficialmente pelo Google, além de tornar a construção do nosso app muito mais divertido.

Nossa aplicação é bem simples apenas com uma listagem de items na tela e inicial, com a opção de adicionar, atualizar e deletar.

O primeiro passo é fazer uma conta no wedeploy.com e criar um projeto configurando o serviço de Data. Essa configuração é bastante simples e vocês podem encontrar detalhadamente no vídeo ao final do artigo (Em inglês), ou simplesmente utilizar nosso magic button disponível no nosso respositório.

Vamos começar criando nosso projeto no Android Studio utilizando o Basic Activity template:

Na nossa primeira tela ficará a listagem dos itens e ao clicar-mos no botão + abriremos uma nova Activity que chamaremos de AddItemActivity que será responsável pela adição e edição.

Não esqueça de adicionar nossa nova activity ao manifesto e também de adicionar permissão de internet ao nosso App. [AndroidManifest.xml]

A criação de layouts será ignorada nesse post por ser algo trivial para qualquer programador Android. [layouts]

Agora podemos começar a utilizar o WeDeploy para editar ou adicionar novos itens:

Repare que para utilizarmos o weDeploy Data só precisamos criar uma instância e chamar o método data passando a URL de nosso serviço. Essa url é encontrada no dashboard do seu projeto.

Para criar uma nova collection o método create recebe o nome da coleção e um JSON do nosso objeto ou um JSONArray com vários objetos. O método update funciona de forma semelhante porém além do nome da coleção é necessário passar o id do item que você deseja alterar. Fácil né ??!

O próximo passo é voltar a nossa MainActivity para listar os itens que agora já podemos cadastrar e editar, para isso vamos utilizar o método get:

O método get é muito simples, ele recebe o nome da collection que queremos buscar e chama um callback de sucesso ou falha, dependendo de como nossa request se comportar. O interessante aqui é que nós podemos encadear métodos que nos auxiliam na busca e/ou ordenação de nossa lista. Existem diversos operadores disponíveis que não entrarei em detalhes, mas vale a pena dar uma conferida na nossa documentão e ver quão versátil nossa listagem pode ser.

Feito isso ainda temos um problema. Ao adicionar um novo item nossa lista não está sendo atualizada :( E agora José?? Existem diversas maneiras de fazer isso utilizando estratégias do próprio Android, mas aqui vamos utilizar a mágica do weDeploy: REALTIME!!!!

Como funciona o realtime?? O Realtime nada mais é do que um socket que escuta determinados eventos em sua coleção. No nosso exemplos nós vamos escutar o evento de change para que toda vez que nossa coleção mudar, nós atualizarmos nossa lista automagicamente.

Por se tratar de um socket é recomendado que fechemos o socket quando não estamos mais utilizando, então não esqueça de chamar o método close no método onDestroy da sua aplicação:

Para finalizar nosso app devemos adicionar uma ação para deletar itens indesejados da nossa coleção. Para isso adicionamos uma ação de Long Press em nossa lista. Você pode ver os detalhes de ações da nossa lista aqui

Tão simples quanto os outros comandos o método delete também recebe a collection junto com o id do item que desejamos remover:

Pronto, temos nosso demo completo!!! Espero que vocês tenham gostado e se quiserem acompanhar os detalhes de implementação abstraídos aqui segue o link de Webinar ministrado por mim mostrando passo a passo a criação desse mesmo demo.

O vídeo é em inglês mas é muito intuitivo mesmo se você não tiver familiaridade com o idioma. Espero que vocês tenham curtido e até a próxima.

--

--

Victor Oliveira
Liferay Engineering Brazil

Mobile Software Engineer and Researcher at Federal University of Pernambuco