MobileConf 2015

Foi minha primeira vez no Rio. Coincidentemente, minha primeira vez num evento focado em mobile.

Confesso que nas últimas semanas tenho trabalhado bastante com o aplicativo da Medicinia e me interessei mais ainda sobre o assunto.

O Carlos Leite, CTO da Medicinia, lançou o desafio pra eu e o Rafael Moraes (front-end e UX de lá também) participarmos da Mobile Conf. E nós topamos!

Já adianto que não conheci quase nada a cidade, então vou pular pra parte da conferência e das palestras que assisti. Quero voltar um dia e ir além da Cidade Nova pra ter uma impressão mais completa sobre o Rio. Uma pena estar com aquela neblina, velha conhecida de nós paulistas.

# ****** DISCLAIMER ******
Esse post está SUPER atrasado. A MobileConf rolou em 30 de maio, mas estava deixando aqui no blog como rascunho a muito tempo... Demorou, mas saiu!

O que a SoundCloud aprendeu sobre microserviços

Phil Calçado

Link da palestra

Começando super bem o dia, Phil Calçado, da SoundCloud, contou um pouco sobre a experiência deles em migrar a plataforma toda para microservices.

E atenção, você vai ouvir várias vezes sobre microservices nesse post, portanto se acostume :)

Com uma média de 11 horas de áudio processados por minuto (!) e 300 milhões de usuários ativos (!!) por mês fica fácil entender porque a decisão de migrar do Rails monolítico para uma estrutura mais distribuída em serviços menores fez todo o sentido pra eles.

Passando rapidamente pelos requisitos de microservices - citando o artigo de Martin Fowler - Phil discorreu sobre o mal-estar causado ao ler o texto e descobrir que, embora simples e óbvios, os requisitos eram difíceis de se aplicar.

Provisionamento rápido, monitoração básica e deploy rápido são os principais requisitos pra que um sistema de microservices funcione.

Por experiência própria, ele nos mostrou que vale a pena aplicar os requisitos de forma progressiva e não de uma vez só. Sair do monolítico é um processo longo, mas possível.

Phil contou sobre a experiência que tiveram em criar um sistema de provisionamento de servidores para as micro aplicações. Ao concluir o projeto, vários outros surgiram e bem melhores (Docker, Kubernetes). Ele enfatizou o lance de simplificar antes de sofisticar.

Mesmo assim, nos incentivou a não deixar de fazer coisas novas, mesmo que pareçam complicadas demais.

Com um time de 150 devs e cerca de 60 serviços, Phil mostrou um pouco da estrutura e ferramentas que utilizam como StatsD, Pagerduty, Prometheus.io, Docker, Jenkins e Finagle, além de enfatizar que todos os sistemas tem dashboards simples e de fácil conferência.

Veredito

Essa foi uma das minhas preferidas do dia. Curti bastante a troca de experiência e as dicas do Phil. A didática e os slides foram bem objetivos e claros.

Como o HTTP/2 vai mudar sua vida

Sérgio Lopes

Link da palestra

Sérgio nos trouxe informações extremamente úteis sobre o novo protocolo HTTP. Indo do básico das mudanças ao mais avançado, vimos como esse protocolo vai acelerar muito a navegação e troca de informação entre browser e servidor.

Além de ser mais leve, usando binário nos headers e gzip obrigatoriamente, o protocolo é mais seguro e rápido (usa TLS - mesmo com a opção de não usar, mas que não faz sentido, vide o baixo custo de certificados SSL hoje em dia).

Com a opção de multiplexing, vimos que agora, não é necessário mais esperar um request finalizar pra que outro seja executado. Isso significa que aquele problema do limite de 6 conexões do HTTP 1, morreu. HTTP 2 usa conexão TCP assíncrona.

Agora podemos parar de nos preocupar com concatenação de arquivos, sprites (embora eu ache que o benefício não é só de tamanho de arquivo, mas de organização dos mesmos), envio de cookies e paralelização de requests (técnica pra contornar o limite de 6 requests).

Outras novidades são os Headers Tables, que removem a necessidade de repetir os headers em todos os requests, e o Server Push, que faz o envio múltiplo de requests mais inteligente (por exemplo, identificando que o html requisitado tem CSS e JavaScript pra ser carregado e já trazendo antes do browser solicitar).

O suporte já é grande em browsers (até a versão edge do IE já suporta) e em servidores como Apache e Nginx.

Aliás, o Google já migrou toda sua plataforma pra HTTP2. Isso já te dá uma baita carta na manga pra convencer sua equipe a migrar também.

Ah! O HTTP2 tem fallback pra HTTP1.

Veredito

É impressionante como o Sérgio leva bem a palestra e te prende no conteúdo que ele está apresentando. Foi super interessante ver essas mudanças e saber que os gigantes já estão migrando sem muito problema (vide Google).

User experience mobile: testando com usuários

Horácio Soares e Leonardo Caetano

Link da palestra

Horácio e o Leo mandaram muito bem na palestra e já de início nos mostraram alguns princípios para termos qualidade em UX:

  1. Desejável;
  2. Acessível;
  3. Confiável;
  4. Fácil de achar;
  5. Fácil de usar;
  6. Útil;
  7. Valioso.

Seguindo esses conceitos, algumas coisas que usamos no dia-a-dia desenvolvendo aplicações, geralmente não atendem os itens acima.

Exemplos disso é o captcha, o paralax e carrosel, que segundo o Horácio são ferramentas que devemos evitar quando falamos em mobile e até mesmo nas versões para telas maiores.

Uma das frases mais emblemáticas foi: "quer uma boa interface? Teste com usuários!". Junto a isso, o conselho dado de não fazer o usuário pensar demais na tela completaram o trecho em que o Horácio falou na palestra.

O Leo mostrou alguns casos de uso do Hotel Urbano, onde demonstrou usuários sendo filmados usando o aplicativo, dando feedback em voz alta. Percebe-se durante a filmagem a irritabilidade de uns usuários por certos problemas de usabilidade. Sem dúvida é uma ótima forma de validar sua aplicação!

Leo aconselhou a testar seu app o mais rápido possível. Isso gera feedback rápido e mudanças também na mesma velocidade.

Outra dica foi prototipagem no papel. O Rafa discordou um pouco, dizendo que na tela é mais palpável e fica mais real para o usuário visualizar. Se for apenas pré-prototipagem, ok.

Veredito

Palestras do Horácio são sempre impactantes. Ele sempre trás para os devs aquilo que não enxergamos quando estamos produzindo aplicações. Leo mandou muito bem também, principalmente na explicação dos casos de uso.

Vida Longa para SOA com microservices

Gustavo Serafin

Link da palestra (não disponível ainda)

A arquitetura de microservices (esse termo de novo =D) é fundamental na criação de um conjunto de APIS e componentes muito pequenos e autônomos. Essa foi a afirmação principal do Gustavo nessa palestra.

Os principais motivos para essa afirmação são:

  1. Times mais coesos;
  2. Manutenção;
  3. Separação de responsabilidades.

Aliados a esses motivos, Gustavo listou como medir decomposição em um microservice e dicas para sua implementação:

  1. Coesão do serviço;
  2. Evitar domínios iguais;
  3. Quanto um service pode ter de autonomia (código, banco ou até rede);
  4. Deve ser autônomo o suficiente pra, caso haja substituição de um serviço, eu consiga fazer sem parar outro.
  5. Uso de múltiplas tecnologias;
  6. Resiliência;

Outros pontos importantes citados foram escalabilidade e capacidade de substituir e lidar com mudanças de forma mais controlada.

Não menos importante, a organização do time, do código e até da infra-estrutura se torna mais necessária pra que esse tipo de abordagem flua normalmente.

Testes, skills de devops e necessidade de monitoria são outros comportamentos que são despertados no time quando se pensa em microservices. E isso deve acontecer gradualmente.

Veredito

Uma palestra bem teórica, mas muito bem tocada pelo Gustavo. Curti bastante a temática e as dicas que ele passou!

* só falta o Gustavo mandar a palestra online! =D

Arquitetura de apps em cenários offline

Gustavo Barbosa

Link da palestra

Gustavo começou a palestra demonstrando um pouco os tipos de indisponibilidade de rede que o usuário pode enfrentar que são:

  1. Falta de conectividade;
  2. Conectado com sinal fraco;
  3. Conectado na rede mas sem internet;
  4. Alto tráfego.

Prosseguindo, foram exibidas formas de sincronização com os serviços, e nisso, demonstrou-se formas de sincronizar dados em outros diversos cenários, como fetch, post e delete de dados.

Já em seguida começou a mostrar um pouco as possíveis formas de se armazenar dados nos devices, como cache em memória, em disco usando CoreData, SQLite ou arquivos.

Lembrando que o Gustavo estava focado em demonstrar exemplos voltados ao desenvolvimento nativo.

As formas de sincronização foram estado de sincronismo, marcando os dados com "NeedsSynced" ou "NeedsRemoved", ou fila de operações, onde cada ação é representada por uma operação - isso tudo usando o conceito FIFO (first in first out).

Finalmente, citou outas formas úteis de comunicação, como Background Fetch, Push Notifications e Sockets.

Veredito

Gostei bastante da forma que o Gustavo exibiu as operações de sincroniza e exibição de dados.

Inclusive, parece até engraçado, mas acabei submetendo uma palestra sobre arquitetura de aplicações offline para o TDC de São Paulo quase no mesmo período. Foquei mais na arquitetura em híbridos e acabei mostrando alguns exemplos de uso de ferramentas para armazenamento offline no browser. Veja aqui os slides.

Finalizando

A MobileConf teve conteúdo rico e muito interessante. Apesar de ouvir de alguns que as palestras não estavam muito focadas em desenvolvimento mobile, achei super interessante o fato de haver uma trilha back-end no evento.

Isso mostra que, desenvolver e aprimorar aplicações mobile não deve ser apenas um encargo e preocupação de desenvolvedores de apps nativos ou híbridos, mas sim, de toda equipe de desenvolvimento, sejam devops ou programadores back-end.

Foco em performance e facilidade de uso dos serviços é um ponto muito importante para aplicações mobile, que requerem resposta rápida e imediata.

Estava no evento e curtiu? Quer trocar ideia? Manda aí nos comentários!

comments powered by Disqus