Dissertação

{en_GB=Variable Data Consistency in Parse Server} {} EVALUATED

{pt=As aplicações de hoje em dia recorrem a sistemas de armazenamento backend, para armazenarem o seu estado persistente. A replicação dos dados é amplamente adotada por esses backends para melhorar a confiabilidade e o desempenho. Embora a manutenção da consistência forte entre as réplicas garanta o correto funcionamento das aplicações isso afetará o desempenho da mesma pois existe um trade-off bem conhecido entre consistência e desempenho. A documentação do Parse Server, o nosso backend alvo, não esclarece o nível de consistência que fornece. Nós investigamos e chegamos à conclusão de que as garantias de consistência que oferece dependem de como alguns parâmetros, que têm impacto na consistência de seu sistema de armazenamento, MongoDB, estão a ser definidos. Infelizmente, não há informações sobre essa configuração. Nós também descobrimos que ajustar esses parâmetros pode não garantir que algumas anomalias de consistência sejam evitadas. Para melhorar essas garantias, propomos uma solução que permite aos programadores escolher as garantias de consistência que necessitam, por objeto, e oferecer um novo modelo de consistência, fornecido pelo ZooKeeper. Esta solução permite que o Parse Server forneça consistência sequencial nos seus objetos, se os programadores assim o exigirem. Nós implementamos e avaliámos a nossa proposta de solução para medir como ela afeta a latência dos pedidos ao Parse Server e também o throughput do Parse Server. O impacto em certos casos é significativo, mas esse é o preço que os programadores têm que pagar para alcançar um nível maior de consistência de dados nas suas aplicações., en=Modern applications resort to specialized backend storage systems to store their persistent state. Replication is widely adopted by these backends in order to improve the reliability and performance. Although maintaining the strong consistency among replicas can guarantee the correctness of application behaviors, it will affect the application performance at the same time because there is a well-known trade-off between consistency and performance. The documentation of Parse Server, our target backend, does not clarify the level of consistency it provides. We further investigated on this subject and we came to the conclusion that the consistency guarantees of Parse Server are dependent on how some parameters, that have impact on the consistency of its storage system, MongoDB, are being set. Unfortunately, there is no information about that configuration. We also found that tuning these parameters might not guarantee that some consistency anomalies are averted. To improve on these guarantees, we propose a solution which allows the developers to choose the consistency guarantees they require, per object, and offer a new consistency model, provided by ZooKeeper. This solution enables Parse Server to provide Sequential consistency on its objects, if developers require it. We implemented and evaluated our proposed solution in order to measure how it impacts on the latency of Parse requests and on the throughput of Parse Server. The impact in certain cases is significant, but that is the price developers have to pay in order to achieve a higher level of data consistency on their apps.}
{pt=Sistemas distribuídos, Consistência de dados, ZooKeeper, Parse Server, MongoDB, en=Distributed Systems, Data Consistency, ZooKeeper, Parse Server, MongoDB}

Novembro 6, 2017, 14:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Rodrigo Seromenho Miragaia Rodrigues

Departamento de Engenharia Informática (DEI)

Professor Catedrático