Para concretizar o trabalho, os alunos devem utilizar o sistema Appia Appia. Este sistema fornece serviços de filiação e comunicação em grupo com diferentes propriedades e tipos de ordenação.
O trabalho consiste em concretizar um servidor replicado. Para simplificar o trabalho, o servidor mantém apenas um conjunto de registos. Cada registo armazena um inteiro.
A interface de acesso ao servidor deve apenas suportar duas operações, nomeadamente:
O servidor pode funcionar em dois modos, a saber:
No segundo modo, as actualizações devem aparentar ser atómicas. Ou seja, se um clinte vê uma actualização, qualquer cliente que leia esse registo no futuro deve ver essa actualização.
Os alunos devem assumir que existem muito mais operações de leitura do que de escrita, e devem conceber o sistema para optimizar ao máximo as primeiras operações, se possível distribuíndo a carga dos leitores pelas diversas réplicas.
Para a realização do trabalho, os alunos podem utilizar o código e ideias geradas em trabalhos dos anos anteriores. Em particular, poderão usar o sistema de comunicação em grupo e o sistema de RPCs replicados. Não hesitem em procurar esclarecimentos acerca da funcionalidades das camadas já disponíveis para não perderem tempo a concretizar funcionalidades que já estão disponíveis.
A título de exemplo, estão também disponíveis alguns relatórios de anos anteriores: