Estamos nos tornando cada vez mais dependentes da tecnologia móvel e da internet em nosso cotidiano de negócios, e uma grande parte de nossos softwares e dados agora reside em diversos serviços baseados em nuvem. A questão sobre o que acontece quando não temos acesso à internet tem sido subestimada, mas acredito que a tecnologia já avançou para um nível de sofisticação e onipresença que faz com que o acesso off-line seja mais do que apenas algo “bom de se ter”.
Por que off-line é necessário
Evangelistas de nuvem gostam de argumentar que logo estaremos vivendo em um mundo de computação thin client em que os nossos dispositivos serão apenas janelas através das quais olhamos para os dados mantidos em um servidor. Essas mesmas pessoas argumentam que a computação local nunca pode fornecer os recursos da nuvem, onde você teria todo um centro de dados para fazer sua computação. Eu acredito que a nuvem é algo muito promissor (na verdade, muito mais do que já foi realizado até hoje), mas há um problema com a exibição somente em nuvem: o que acontece quando você não tem acesso à rede?
Naturalmente, muitos futuristas zombam deste argumento, insistindo que o aumento da cobertura dos serviços de dados móveis e wi-fi público significa que existem muito poucos lugares que não oferecem acesso à rede. É neste que acredito que exista uma lacuna entre o otimismo e a realidade: na semana passada participei de um evento popular da indústria, em Londres, onde o sinal de celular foi incapaz de penetrar as paredes do edifício. Ao viajar, a não ser que o seu serviço de trem ou companhia aérea ofereça wi-fi, é muito provável que você não tenha conectividade em algum momento ou durante toda a sua viagem (e acesso grátis a wi-fi normalmente é lento e raro).
Além disso, este problema não é resolvido com uma cobertura melhor, na verdade, nas grandes cidades acabaremos atingindo os limites de quantidade de dados que podem ser carregados, e à medida que um número maior de pessoas quer transferir mais dados mais frequentemente acredita-se que podemos chegar a um ponto de saturação, já em 2020. A maneira mais óbvia de lidar com esse desafio é adotar padrões de transferência de dados inteligentes que aproveitem os recursos da nuvem, mas não impeçam a experiência do usuário.
Desafios do off-line
Isso não quer dizer que o fornecimento de acesso off-line é fácil: é um desafio técnico significativo, e uma das razões pela qual a nuvem está sendo vendida como o futuro é que o acesso off-line é visto como sendo um pouco complicado. Apesar de ficar muito animado com o fato de que a empresa para a qual trabalho apoia a capacidade de construir capacidade off-line em nossa plataforma móvel, estou ciente de que há muitos desafios a se pensar quando você considera fornecer acesso off-line a aplicativos.
O principal desafio é a segurança: em particular, quais dados são armazenados no cliente, e como podem ser comprometidos. A segurança da rede e do servidor ou aplicativo web são menos importantes aqui, porque embora eles apresentem desafios, estes são quase os mesmos que em uma situação só de nuvem. Eu não quero entrar em muitos detalhes técnicos neste artigo, mas qualquer acesso off-line requer armazenamento no dispositivo. Isto significa que os dados podem ser lidos por malware ou em caso de roubo do dispositivo, e é por isso que gestão de dispositivo móvel e aplicativos (MDM e MAM) está se tornando uma questão tão importante em mobilidade empresarial. No entanto, MDM e MAM não estão sozinhos na garantia de objetos; qualquer boa plataforma móvel irá permitir que você criptografe objetos de dados locais e ainda desenvolva um mecanismo para excluí-los depois de um período de tempo definido. Por isso, enquanto a segurança tem sido um grande desafio, agora há uma ampla gama de opções de segurança muito eficientes e você só precisa identificar qual é a mais apropriada para o seu negócio.
Outra questão é a forma de gerir os padrões off-line, uma vez que existem várias opções, incluindo a sincronização, correspondência e download, e como identificar qual delas melhor se adapta às necessidades do usuário pode ser um desafio. Isto é importante porque determina como os usuários afetam a cópia on-line quando as atualizações são feitas: se vários usuários editaram um item, qual deve prevalecer? A empresa em que trabalho tem um informe oficial sobre esse tema, entre em contato comigo através do Facebook, Twitter ou de nossa página inicial, se você deseja ter acesso a isso.
Existem duas grandes opções: sincronização e concorrência. Em um nível simples, a sincronização funciona em um nível muito baixo e é implementada para evitar uma leitura ou gravação incorreta dos dados devido à corrida de segmento. Este é o lugar onde dois sinais “competem” entre si para produzir a primeira saída, e é um problema em aplicações com vários segmentos, especialmente quando pode haver vários usuários simultâneos. A simultaneidade é essencialmente uma política que determina o que fazer em caso de um problema de sincronia, como quando um segundo usuário tenta acessar os mesmos dados. Vários padrões de concorrência são difundidos e cada um é otimizado para um cenário de negócios e problema específicos:
- Um Bloqueio Off-line Otimista visa prevenir conflitos revertendo a transação caso um conflito seja detectado, e valida os dados em questão que não foram alterados desde que foram carregados,
- Um Bloqueio Off-line Pessimista, como o nome sugere, é uma variação da versão otimista que é otimizada para ambientes com uma grande chance de conflito entre as sessões; evita o conflito permitindo que apenas uma única sessão tenha acesso a cada parte dos dados,
- Um Bloqueio de Granularidade Alta é um único bloqueio que abrange um conjunto de objetos, o que pode ser muito útil quando o usuário precisa acessar um registro de cliente: todos os objetos sob esse registro podem ser bloqueados automaticamente ajudando a evitar conflitos de sessão associados a esse registro,
- Por fim, um Bloqueio Implícito permite código de framework para adquirir bloqueios off-line, o que ajuda a evitar o erro humano no desenvolvimento (se o código não consegue liberar os bloqueios, a produtividade acabará por se tornar impossível) por ter tarefas-chave de bloqueio tratadas implicitamente pela aplicação, em vez de explicitamente pelo desenvolvedor.
Enquanto que os padrões de bloqueio são muito eficazes, às vezes é necessário o uso de formas mais sutis e complexas de controle de concorrência, incluindo:
- Gráfico de verificação em série, que verifica a existência de ciclos em operações compromissadas,
- Ordenação Timestamp, em que o acesso aos dados é controlado, em ordem de timestamp,
- Ordenação por Compromisso, em que a ordem cronológica dos eventos é verificada,
- Controle multiversão, o que gera uma nova versão do objeto, permitindo maior controle de versão,
- Simultaneidade de Índice, em que as operações de acesso são sincronizadas com índices em vez de dados do usuário,
- Espaços de trabalho privados, em que cada transação mantém um espaço de trabalho privado para seus dados acessados, o qual só se torna público após o compromisso.
No entanto, um desafio igualmente importante é como construir realmente uma aplicação da web que funcione off-line em primeiro lugar, uma vez que questões como cachê podem fazer a atualização do código um processo opaco, e navegadores atuais oferecem muito pouco feedback quando ocorrem problemas, e quanto menos se falar sobre a compatibilidade entre plataformas, melhor. Usando metadados para identificar os vários elementos que estão disponíveis off-line permite que o registro on-line seja atualizado com mais facilidade, pela simples comparação dos metadados nas cópias on-line e off-line.
A solução aqui é utilizar uma plataforma de desenvolvimento de aplicativos móveis, que é construído para lidar com metadados, funciona em todas as plataformas e lida com a codificação para você, e que tem suporte off-line embutido.
Por que o acesso off-line é um divisor de águas
Apesar dos desafios, acredito que ser capaz de oferecer acesso off-line para seus aplicativos da web é um divisor de águas porque isso permite que os usuários de cada tipo de negócio, de usuários internos de grandes empresas até consumidores de serviços B2C, contam com um aplicativo da web para seus negócios cotidianos e lazer, sem a preocupação de que uma falha de rede ou falta de conectividade faça com que percam o seu trabalho ou não consigam acessar dados críticos.
Acesso off-line não significa apenas não ter pleno acesso a uma rede, mas poderia ser mais sutil. Por exemplo, um usuário em 3G (e muito menos 2G) pode não querer gastar tempo e dados preciosos fazendo download de dados de um grande item, como um catálogo, portanto, neste caso, o usuário pode muito bem preferir uma versão off-line.
Na gestão de fluxo de trabalho, por exemplo, é importante que todos os elementos do fluxo de trabalho sejam seguidos e registrados, e em muitos casos, pode até haver questões de conformidade em torno deste relatório. No entanto, com mais usuários móveis em horários de trabalho menos definidos, não há nenhuma garantia de que o usuário terá acesso ao sistema central ao completar partes do fluxo de trabalho, portanto, ter acesso off-line confiável pode permitir que o usuário continue trabalhando com uma cópia em cachê da informação, e o fluxo de trabalho final pode ser atualizado automaticamente mais tarde.
Além disso, nos deparamos com processos de negócios o tempo todo no mundo móvel, como o funcionário que precisa registrar seu horário diariamente, mas só é capaz de fazer o upload para o sistema central em uma sexta-feira, neste caso, ser capaz de completar a tarefa, e ainda sincronizá-la com o sistema em uma data posterior pode ser muito útil.
Uma situação semelhante poderia ser aplicada em atualizações de tarefas, na qual um trabalhador remoto que foi chamado até o local do cliente pode registrar toda a informação necessária para completar a tarefa (incluindo encomendar peças sobressalentes ou agendar uma visita de retorno, se necessário), sem ter que se preocupar em ter acesso à rede confiável. Características semelhantes podem ser construídas em quadro de horários, relatórios de gerenciamento de projetos e de despesas: o acesso off-line aos sistemas significa que os usuários podem completar os relatórios quando é conveniente para eles, sem se preocupar com a conectividade.
O acesso off-line aos sistemas é especialmente útil para os profissionais de vendas que precisam ser capazes de procurar informações, como listas de preços, propostas anteriores e créditos em trânsito. Com o acesso off-line podem junto com o cliente utilizar com segurança uma cópia em cachê, quando não conseguirem obter acesso à rede, mas precisarem inserir novos dados no sistema no qual esses dados estão, principalmente quando se trata de um pedido! Neste momento, não é apenas uma questão de eficiência, mas também de ganhar a confiança do cliente, a experiência perfeita que o acesso off-line ajuda a gerar pode ser importante na construção da imagem de uma empresa que realmente sabe o que está fazendo.
Finalmente, no mundo do consumidor B2C acesso off-line está tornando cada vez mais um recurso muito procurado: os consumidores querem ter dados na hora, onde estão e da forma mais fácil possível. Afinal de contas, estamos vivendo no futuro e esperamos que a nossa tecnologia seja mágica. Os aplicativos de consumo mais críticos para acesso off-line são aqueles relacionados a viagens e vendas; estamos fazendo mais uso de nossos smartphones como um cartão de embarque, ingresso de cinema e a reserva do hotel, para não mencionar o mapa local. Todas esses recursos são muito essenciais para correr o risco de não ter acesso em razão da fraca cobertura, de modo que o consumidor valorizará demais a importância de ter essas informações em todos os lugares. É por isso que eu acredito que proporcionar o acesso off-line é um divisor de águas: ele nos leva um passo mais próximo de um futuro com conexão verdadeiramente móvel.
poderia me orientar para eu conseguir fazer vendas offline?
vendas para pessoas que possuem carteiras digitais (wallet) o qual requer transações em offline.
cordialmente: alvaro de araujo
Olá, parabéns pelo post.
Quero desenvolver uma ferramentas de venda utilizando phonegap e utilizando um banco de dados local, qual banco você me recomenda?
Olá Raphael,
nós aconselhamos a optar pelo Magic xpa () ao invés do phoneGap, e neste caso, o banco de dados que ele vai utilizar é um próprio, derivado do SQLite.