Voltar ao blog Business apps

Seu aplicativo empresarial auto-hospedado funciona offline? Um checklist prático de avaliação

Saiba como testar se um aplicativo empresarial auto-hospedado realmente permite trabalhar offline — e não apenas exibe páginas em cache — e avalie sincronização, conflitos, autenticação, anexos e riscos para os dispositivos.

Equipe de operações testando um aplicativo empresarial offline em um notebook e um celular

Comece definindo o que “offline” significa para sua equipe

As necessidades de uso offline variam. Uma breve interrupção do Wi-Fi durante uma visita técnica é diferente de trabalhar um turno inteiro sem conexão confiável; ambas também são diferentes de operar em um local onde não se espera conectividade por vários dias.

Anote a duração máxima provável da desconexão, quantas pessoas podem trabalhar offline ao mesmo tempo, de quais dados precisam e com que rapidez as alterações devem chegar aos colegas. Inclua os dispositivos e navegadores que vocês realmente usam: o comportamento offline pode variar de acordo com o aplicativo e o navegador, e alguns recursos de sincronização em segundo plano não estão disponíveis em todos os navegadores.

Defina uma expectativa aceitável para a recuperação. Por exemplo, decida se a equipe precisa concluir uma tarefa imediatamente enquanto estiver offline ou se basta registrar um rascunho e terminá-lo após a reconexão. São requisitos diferentes e podem apontar para ferramentas diferentes.

  • Interrupção ocasional: o aplicativo deve preservar o trabalho em andamento e se recuperar sem problemas quando a conexão voltar.
  • Desconexão prolongada: os usuários talvez precisem consultar e editar um conjunto útil de registros e enviar ações mais tarde.
  • Sem internet confiável: avalie se é necessário um aplicativo compatível com uso offline ou uma implantação local, em vez de presumir que um serviço hospedado na nuvem atenderá à necessidade.
Comece definindo o que “offline” significa para sua equipe

Diferencie o acesso a conteúdo em cache da conclusão de um fluxo de trabalho

Uma página abrir offline não prova que é possível concluir o trabalho. Um aplicativo web pode armazenar em cache os recursos da página ou o conteúdo consultado anteriormente, mas é o próprio aplicativo que determina como cada solicitação será tratada. As páginas em cache podem estar desatualizadas, incompletas ou disponíveis apenas para leitura. A [documentação da MDN sobre operação offline](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Offline_and_background_operation) explica que o conteúdo disponível depende do que foi armazenado e de como as solicitações são tratadas.

Teste a tarefa inteira, não apenas a tela. O usuário consegue encontrar o registro certo, editá-lo, adicionar uma observação, enviar a alteração e receber uma confirmação clara enquanto está desconectado? O aplicativo salva um rascunho localmente, coloca a solicitação em uma fila ou simplesmente exibe um erro? Peça ao fornecedor que explique o comportamento exato de cada ação crítica.

Considere como recursos distintos: consultar conteúdo armazenado anteriormente, editá-lo offline, colocar alterações em fila para envio posterior e concluir um fluxo de trabalho de ponta a ponta sem conexão com o servidor. Não presuma que um desses recursos implica os demais.

  • Acesso offline: quais registros e páginas de referência ficam disponíveis e quando foram atualizados pela última vez?
  • Edição offline: quais campos ou ações podem ser alterados sem conexão?
  • Envio em fila: onde a alteração pendente fica armazenada e como o usuário sabe que ela ainda não chegou ao servidor?
  • Conclusão do fluxo de trabalho: quais etapas ainda exigem o servidor, como aprovação, validação ou geração de um resultado compartilhado?
Diferencie o acesso a conteúdo em cache da conclusão de um fluxo de trabalho

Liste os registros, anexos e materiais de referência de que os usuários precisam

Faça um inventário breve com base no trabalho real, em vez de pedir genericamente um “modo offline”. Especifique os tipos de registro, os campos que as pessoas alteram e as informações de referência que consultam. Inclua anexos, como fotos ou documentos, e teste-os separadamente do texto comum.

Pergunte como os usuários disponibilizam os dados antes de ficar offline. Eles são baixados automaticamente ou é preciso abri-los ou selecioná-los primeiro? Verifique se os registros permanecem acessíveis durante todo o período offline esperado e se o aplicativo mostra a idade dos dados locais.

O armazenamento do navegador tem limites e critérios de remoção que variam entre navegadores e dispositivos; dados armazenados podem ser removidos quando há pressão sobre o espaço disponível. Consulte a [documentação da MDN sobre cotas e remoção de armazenamento](https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria), confirme como o aplicativo informa quando os dados locais estão ausentes e determine se a equipe pode tolerar baixar novamente registros ou anexos.

  • Identifique os registros essenciais e os campos mínimos necessários para agir sobre eles.
  • Liste as fotos, os arquivos, os formulários, os mapas, os procedimentos ou outros materiais de referência necessários.
  • Verifique o volume aproximado de dados offline e o espaço de armazenamento disponível nos dispositivos da equipe.
  • Teste se o aplicativo indica o que foi baixado e quando foi atualizado pela última vez.
  • Decida o que o usuário deve fazer se o conteúdo offline necessário não estiver disponível.

Verifique a sincronização, as novas tentativas e o tratamento de conflitos

Uma ação colocada em fila não é necessariamente uma ação sincronizada com segurança. Descubra o que inicia a sincronização: um processo automático do navegador, a abertura do aplicativo, o toque do usuário em um botão de sincronização ou outra etapa. A [documentação da MDN sobre Background Sync](https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API) descreve o recurso e informa que ele não está disponível em todos os navegadores amplamente usados; teste as combinações que sua equipe realmente utiliza.

Pergunte o que acontece se a conexão cair durante um envio ou se o aplicativo não conseguir saber se uma solicitação chegou ao servidor. Repetir uma ação que altera dados pode produzir efeitos duplicados, a menos que o aplicativo consiga identificar com segurança uma repetição ou determinar se a primeira tentativa foi concluída. O [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html) explica por que novas tentativas de operações não idempotentes exigem cuidado.

Podem surgir conflitos quando alguém edita um registro online enquanto outra pessoa altera uma cópia offline. Confirme se o aplicativo pode exibir versões concorrentes, mesclar alterações ou pedir que alguém revise e edite novamente. A [documentação do Apache CouchDB sobre conflitos](https://docs.couchdb.org/en/stable/replication/conflicts.html) apresenta essas como possíveis abordagens. Determine quais dados prevalecem, quem resolve o conflito e se os valores originais continuam disponíveis.

  • Os usuários conseguem ver quais ações estão pendentes, foram concluídas ou falharam na sincronização?
  • Os envios com falha são repetidos automaticamente e o usuário pode tentar novamente com segurança?
  • O que acontece quando o mesmo registro é alterado em dois dispositivos antes de eles se reconectarem?
  • O usuário pode inspecionar e resolver conflitos ou o aplicativo aplica uma regra automaticamente?
  • O que acontece se o navegador ou o dispositivo for fechado antes do envio do trabalho em fila?

Teste a autenticação, as permissões e os dispositivos compartilhados

Inclua casos de login e controle de acesso na avaliação. Descubra se o usuário consegue abrir dados já baixados depois que a sessão de autenticação expira e o que o aplicativo permite fazer até que se reconecte. Um dispositivo offline não pode consultar o servidor para verificar permissões alteradas recentemente; confirme como o aplicativo lida com essa situação e com que rapidez as alterações de acesso passam a valer após a reconexão.

Dê atenção especial aos dispositivos compartilhados ou usados por turnos. Determine se uma pessoa consegue ver registros armazenados localmente ou alterações pendentes de outra pessoa, o que acontece com os dados locais ao sair da conta e como os usuários distinguem o próprio trabalho ainda não enviado. Não presuma que uma tela de login protege informações já armazenadas no navegador.

O acesso offline cria uma cópia local das informações da empresa. A [OWASP recomenda não armazenar informações confidenciais ou identificadores de sessão no armazenamento local](https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html) e alerta que usuários com acesso à máquina podem acessar dados armazenados no navegador. Pergunte ao fornecedor quais dados ficam no dispositivo e avalie se isso é apropriado para suas informações.

  • Teste sessões expiradas tanto online quanto offline.
  • Teste uma alteração de permissão, a desativação de uma conta e a saída do usuário; depois, reconecte o dispositivo.
  • Verifique se um usuário do dispositivo consegue acessar dados em cache ou ações em fila de outro usuário.
  • Documente a sensibilidade dos registros armazenados localmente e quem pode acessar o dispositivo.

Inclua anexos e a perda de dispositivos na avaliação de riscos

O suporte offline também é uma decisão de governança de dados. Um dispositivo pode conter registros e anexos que ainda não estão no servidor. Decida quais informações podem ser armazenadas localmente, por quanto tempo e quais usuários e dispositivos podem mantê-las.

Pergunte se os dados locais são criptografados e quais controles de dispositivo sua organização exige. As [orientações da NIST para dispositivos móveis](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-124r2.pdf) recomendam criptografar os dados armazenados e descrevem o apagamento remoto como uma medida a considerar quando um dispositivo pode ter sido perdido, roubado ou estar em mãos não confiáveis. Verifique se o processo de gerenciamento de dispositivos atende aos requisitos para os dispositivos que a equipe realmente usa.

Documente o que fazer em caso de perda de um dispositivo. Inclua como comunicar a perda, desativar o acesso quando possível, tratar os dados armazenados localmente e identificar se o trabalho ainda não sincronizado pode ser perdido. O recurso offline do aplicativo não substitui os procedimentos da organização para acesso, retenção e resposta a incidentes.

  • Classifique os dados e anexos que podem ser armazenados em cada dispositivo.
  • Defina requisitos de criptografia do dispositivo, bloqueio de tela e gerenciamento adequados à sua organização.
  • Confirme quais ações remotas estão disponíveis e o que elas podem ou não remover.
  • Defina como a equipe deve comunicar a perda de um dispositivo e como o trabalho pendente será recuperado ou recriado.

Faça um teste offline controlado com tarefas representativas

Use uma conta de teste, registros representativos e os mesmos modelos de navegador e dispositivo que sua equipe pretende usar. Comece online, prepare os dados que deverão estar disponíveis offline e confirme o que o aplicativo indica como pronto. Em seguida, desconecte a rede deliberadamente e execute as tarefas críticas acordadas.

Reconecte e aguarde o mecanismo de sincronização documentado. Confira tanto a interface do usuário quanto o resultado no servidor: confirme que as alterações pretendidas chegaram, que o trabalho com falha está visível, que os anexos estão completos e que nenhuma ação foi duplicada. A orientação do Chrome para [testar novas tentativas quando a conexão voltar](https://developer.chrome.com/docs/workbox/retrying-requests-when-back-online) também recomenda verificar o comportamento após interromper e restabelecer a rede.

Não teste apenas uma interrupção breve em condições ideais. Inclua o período offline máximo esperado e situações como fechar e reabrir o navegador, reiniciar o dispositivo ou trocar de usuário, quando fizerem parte das operações normais. Registre as etapas e os resultados exatos para que a equipe possa repetir o teste após mudanças na configuração ou no aplicativo.

  • Prepare um checklist de teste para cada fluxo de trabalho crítico e para o resultado esperado.
  • Desconecte a rede e tente executar o fluxo de trabalho do início ao fim.
  • Interrompa pelo menos um envio ou uma submissão e, em seguida, restabeleça a conexão.
  • Verifique alterações ausentes, efeitos duplicados, conflitos não resolvidos e clareza das mensagens para o usuário.
  • Repita o teste em todas as combinações de navegador e dispositivo das quais a equipe dependerá.
  • Registre as limitações e decida se são aceitáveis, se exigem uma solução alternativa ou se tornam o aplicativo inadequado.

Escolha o modelo de implantação adequado ao trabalho

A auto-hospedagem descreve quem opera o ambiente do aplicativo; por si só, não oferece dados offline, edição offline ou sincronização. Um aplicativo hospedado em um servidor ainda precisa de conexão quando o fluxo de trabalho depende desse servidor. Por outro lado, um aplicativo com comportamento offline cuidadosamente projetado pode oferecer suporte a tarefas específicas enquanto estiver desconectado, dentro dos próprios limites.

A Airbip gerencia a infraestrutura em nuvem para aplicativos auto-hospedados: as instâncias dos aplicativos são executadas como cargas de trabalho Docker em servidores em nuvem da Airbip, com roteamento e certificados TLS automatizados por meio do Traefik e do Let’s Encrypt, além de verificações de DNS, gerenciamento do ciclo de vida dos serviços e backups diários, semanais e mensais configuráveis. Esse modelo de hospedagem não acrescenta recursos de fluxo de trabalho offline a um aplicativo. Avalie separadamente o comportamento documentado do aplicativo e considere se os locais de trabalho dos usuários conseguem acessar o serviço hospedado quando estão online.

Se os usuários precisarem concluir tarefas essenciais em locais sem conexão confiável, escolha um aplicativo e um modelo de implantação que comprovadamente ofereçam suporte a esses fluxos de trabalho ou crie um procedimento offline explícito. Se o problema forem apenas interrupções ocasionais, um fluxo testado de fila e sincronização pode ser suficiente. Se o trabalho exigir ações compartilhadas e validadas pelo servidor em tempo real, um processo exclusivamente online com uma alternativa clara pode ser mais seguro do que afirmar que o fluxo funciona offline.

  • Escolha um software compatível com uso offline quando tarefas críticas precisarem ser concluídas sem conexão com o servidor.
  • Escolha um fluxo testado de sincronização posterior somente se o tratamento de conflitos e de ações duplicadas for aceitável.
  • Escolha um fluxo explicitamente online quando as ações exigirem validação em tempo real pelo servidor ou dados compartilhados atualizados, e ofereça uma alternativa prática para interrupções.
  • Trate a hospedagem, os recursos do aplicativo, os controles dos dispositivos locais e os procedimentos da equipe como partes distintas da decisão.

Perguntas frequentes

A auto-hospedagem deixa um aplicativo empresarial disponível offline?

Não. A auto-hospedagem diz respeito a onde e como o aplicativo é operado; acesso offline, edição e sincronização dependem do projeto do aplicativo e dos dados disponíveis no dispositivo.

Como saber se um aplicativo atende às necessidades offline da equipe?

Defina as tarefas essenciais, teste-as desconectado nos navegadores e dispositivos usados pela equipe e confira, após a reconexão, o resultado no servidor. A avaliação deve incluir o período offline esperado e as limitações identificadas.

O que fazer se um dispositivo com dados offline for perdido?

Tenha uma resposta documentada que cubra comunicação da perda, controle de acesso, gerenciamento do dispositivo e dados armazenados localmente. Decida também como lidar com o trabalho que ainda não havia sido sincronizado.

Fontes e leituras adicionais

  1. Offline and background operation — Progressive web apps — MDN Web Docs
  2. Background Synchronization API — MDN Web Docs
  3. Retrying requests when back online — Chrome for Developers
  4. Storage quotas and eviction criteria — MDN Web Docs
  5. HTML5 Security Cheat Sheet — OWASP
  6. RFC 9110: HTTP Semantics — Internet Engineering Task Force
  7. Replication and conflict model — Apache CouchDB
  8. Guidelines for Managing the Security of Mobile Devices in the Enterprise — National Institute of Standards and Technology
  9. Service Worker API — MDN Web Docs