Palestra apresentada no The Developers Conference Connections, que ocorreu em 09 de julho de 2021, de forma remota.
Contato:
- Claudinei Brito Junior (claudineibjr@hotmail.com / https://www.linkedin.com/in/claudineibjr)
- Gabriela Pereira (gabriela.flutterdev@hotmail.com / https://www.linkedin.com/in/gabriela-pereira-dos-santos-472365139/)
WTDQS 2019 - Uma abordagem para localização de mutantes minimais e equivalent...
TDC Connections - Offline first - Como este requisito impacta seu projeto?
1. Globalcode – Open4education
Offline first
Como este requisito impacta seu projeto?
Gabriela P. Santos & Claudinei B. Junior
09 de junho de 2021 - TDC Connections
2. Globalcode – Open4education
Quem somos?
Gabriela Pereira dos Santos
Desenvolvedora Mobile e Estudante de Engenharia
Elétrica na Usp nas horas vagas. Sou coordenadora do
Flutter Girls, e tenho como missão incentivar mais
mulheres a entrarem na área da Tecnologia.
2
Gabriela
Desenvolvedora Mobile - Monitora
3. Globalcode – Open4education
Quem somos?
Claudinei Brito Junior
Bacharel em Ciência da Computação (UNIVEM -
Marília/SP) e Mestrando em Ciência da Computação
(Engenharia de Software - ICMC/USP). QA frustrado,
desenvolvedor mobile e techlead.
Apaixonado por pessoas, computação, desenvolvimento
mobile e aspirante a desenvolvedor backend.
3
Claudinei
TechLead - Monitora
6. Globalcode – Open4education
Realidade X Laboratório de testes
Presumir que a conexão de rede
é sempre rápida e estável é um
dos erros de desenvolvimento
mais comuns.
GIF
6
7. Globalcode – Open4education
O que é Offline first?
Offline first é uma abordagem para o desenvolvimento de
software em que os desenvolvedores criam os principais
recursos de um aplicativo para funcionar com ou sem
conexão com a Internet.
7
9. Globalcode – Open4education
Quando utilizar Offline First?
Features/apps que não precisam de atualização constantes
e que não contenham dados sensíveis.
Exemplos:
● Redes sociais (WhatsApp, Instagram, Facebook)
● Streaming
● Gerenciamento de tarefas
9
10. Globalcode – Open4education
Quando não utilizar Offline First
● Troca de uma grande quantidade de dados entre o
servidor e cliente
● Aplicativos que exigem sincronização em tempo real
● Aplicativos com informações sensíveis
Exemplos
● Internet banking
● Corretora
● Compras
● Transporte
● etc...
10
13. Globalcode – Open4education
Perguntas a se fazer para
traçar uma estratégia
● Quais features o usuário não poderá usar offline?
○ Ex: transações bancárias
● Quais ações da API podemos manter em uma fila offline para
serem processadas posteriormente?
○ Ações que o usuário pode fazer offline. Ex: Criar uma tarefa
● Quais dados devemos/podemos persistir offline no app?
○ Dados que não mudam constantemente e que não são sensíveis. Ex:
Informações do perfil x Saldo bancário
13
14. Globalcode – Open4education
Perguntas a se fazer para
traçar uma estratégia
● Como disponibilizar a informação offline?
○ WhatsApp X Spotify
● Como lidar com erros ao sincronizar ações?
○ Ex: Disponibilizar a opção do usuário sincronizar ações manualmente.
● Como mostrar para o usuário a ausência de conectividade?
● Como sincronizar ações offline?
○ Automática X ação do usuário
14
20. Globalcode – Open4education
● Dados armazenados em banco local
○ SharedPreferences, noSQL, SQL...
● Busca inteligente
○ Busca apenas os dados atualizados desde a última busca
● Armazenamento seguro de dados
20
Arquitetura e decisões
Leitura offline
21. Globalcode – Open4education
● Classe de decisão
do repositório
○ Local x online
21
Arquitetura e decisões
Fila de tarefas offline
22. Globalcode – Open4education
● Payloads
serializáveis
○ toJSON
○ fromJSON
22
Arquitetura e decisões
Fila de tarefas offline
23. Globalcode – Open4education
● Dados armazenados em banco local
○ SharedPreferences, noSQL, SQL...
● Fila de ações
● Armazenamento seguro de dados
23
Arquitetura e decisões
Fila de tarefas offline
28. Globalcode – Open4education
Dificuldades e desafios
● Aplicar a abordagem durante o desenvolvimento do projeto
○ Trocar a roda com o carro andando
● Dificuldade com o plugin de conectividade
○ Bug com a lib connectivity
○ Utilização da lib connectivity_plus
28
29. Globalcode – Open4education
● Problemas com sincronização
○ Execução paralela de sincronização de dados e busca de dados novos
○ Busca / sincronização de dados ordenado
Dificuldades e desafios
29