CODA (Constant Data Availability) é um sistema avançado de armazenamento de arquivos em rede. Seu grande diferencial é proporcionar o acesso de dados constante ao usuário, mesmo que esse enfrente problemas de rede, através do uso de um cache local. Por esse motivo, a sua implementação para dispositivos portáteis traz grandes promessas.
O CODA trabalha no modelo cliente-servidor. Seus servidores armazenam volumes – conjunto de diretórios do sistema de arquivos, que são replicados em outros conjuntos de servidores chamados de VSG (Volume Server Group). Essas cópias são mantidas sempre sincronizadas.
Para cada usuário de rede existe um sub-volume chamado de AVSG. Qualquer alteração feita em seu sub-volume é propagada para todos os AVSG da rede e então acontece a propagação para os VSG, garantindo a integridade e consistência dos dados. Da perspectiva do usuário, o modelo funciona como o esquema abaixo:
Um dos objetivos da implementação desse modelo, é que processos de falha na rede não atrapalhem o trabalho local de um usuário – o processo de sincronização é transparente. Em um modelo cliente-servidor comum, caso o usuário tente atualizar um documento e o servidor falha, por exemplo, após um time out, uma mensagem de erro é exibida e a operação é invalidada. No CODA isso não acontece, porque em cada estação de trabalho é salvo um log das atividades do usuário, e assim que acontece a reconexão, as mudanças são replicadas na rede. Em alguns casos podem acontecer problemas – como a alteração em um mesmo arquivo por dois usuários diferentes, mas na maior parte dos casos eles são resolvidos com algoritmos que analisam o tipo de alteração que foi feita no documento. A intervenção humana pode ser necessária em alguns casos conflitantes, mas isso acontece raramente.
No momento da replicação dos dados localmente, o usuário pode sinalizar quais arquivos e diretórios são importantes no caso de falha de rede. Assim o sistema trabalha com mais eficiência, evitando o consumo de recursos por replicação de arquivos que não seriam utilizados. Além disso, o sistema apresenta um modelo de segurança de autenticação de acesso, tornado visíveis somente diretórios pertinentes ao usuário.
Do ponto de vista dos servidores, ao invés de estes trabalharem com a atualização constante, o processo funciona de maneira diferente. Quando um servidor AVSG cai, ele não é atualizado automaticamente quando é reiniciado. As atualizações ocorrem quando há requisição de um cliente – no momento da requisição de um arquivo, acontece o pedido do mesmo a todos os AVSG existentes. Assim, se existe uma cópia desatualizada em algum servidor, ele é automaticamente “avisado” disso.
Contudo, o grande diferencial desse tipo de sistema é a possibilidade de trabalhar em conjunto com dispositivos móveis. Com a crescente demanda desse setor, existe a necessidade de se trabalhar com aplicativos e sistemas que operam em aparelhos que não podem estar online em tempo integral. Com o sistema de replicação local e armazenamento de cache, esse tipo de trabalho acontece de maneira mais fácil – em relação a manutenção dos dados.
Permitir a atualização concorrente, tratando as informações na reconciliação da conexão traz grandes possibilidades de integração entre sistemas de plataformas diferentes, com foco especial para dispositivos móveis. A necessidade de um modelo como o CODA enfatiza então a tendência do mobile computing, uma nova forma de interação entre homem-máquina e também máquina-máquina.