| Nome: | Descrição: | Tamanho: | Formato: | |
|---|---|---|---|---|
| 3.86 MB | Adobe PDF |
Autores
Orientador(es)
Resumo(s)
Geo-replication has been a common technique to provide clients with fast worldwide
access to an application. For such large-scale systems, the application’s servers, logic and
data are replicated in many geographical locations across different continents.
Creating and maintaining geo-replicated applications is challenging and developers
often make mistakes due to the complexity of these systems. Software tools and frame-
works, such as Jepsen and JepREST, are currently available to assist with the testing process
and the correctness of distributed applications. Yet, these tools were not designed to test
applications that are spread out in a geo-replicated way without extra effort.
For this purpose, we have extended the functionalities of JepREST to support testing
geo-replicated applications. This involves the deployment of virtual clients around the
world that perform a set of operations simultaneously on the application while producing
logs that will be analysed to check if the execution was correct. These clients will attempt
to uncover any inconsistencies being made by the application. As they act like real-
world clients, detecting anomalies in the behaviour of the application can be deemed
unacceptable. That is why it is crucial for an application to be able to maintain its claims
of being correct and ensuring data consistency. To accommodate the generated results
that are now scattered around the globe we have implemented an algorithm that compiles
them into a unified sequence of operations ordered by their time of execution. Since our
clients use different clocks, there can be slight discrepancies which can cause operations
to be ordered differently than what happened in reality. To address this, we calculate the
time gaps between our clients’ clocks and consider these differences in the verification
process using a checker algorithm modified to handle such cases.
To test the accuracy of this algorithm we built a geo-replicated application and deployed
JepREST to test it worldwide. The results show that the algorithm is able to detect anomalies
present in the sequences of operations that do not respect causal consistency. We also
designed custom histories of operations to test the limits of our algorithm, for which the
algorithm was able to correctly output the results.
A Geo-Replicação tem sido uma técnica comum para proporcionar aos clientes um acesso global e rápido a uma aplicação. Para tais sistemas de larga escala, os servidores, a lógica e os dados da aplicação são replicados em várias localizações geográficas em diferentes continentes. Construir e manter serviços geo-replicados é um desafio para os informáticos devido à sua complexidade. Algumas ferramentas, como o Jepsen e JepREST, já foram desenvolvidas para auxiliar o processo de teste e correção de sistemas distribuídos, no entanto, estas não são capazes de testar sistemas geo-replicados com muita facilidade. Para este propósito, estendemos as funcionalidades do JepREST para suportar testes em aplicações geo-replicadas. Isto envolveu a criação de clientes virtuais espalhados por todo o mundo, que realizam um conjunto de operações na aplicação concorrentemente. Ao mesmo tempo, geram ficheiros que serão analisados para verificar se a execução foi correta. Estes clientes tentarão descobrir quaisquer inconsistências da aplicação. São clientes a agir como um utilizador do mundo real, e por isso, ao detetarmos anomalias no comportamento da aplicação,esta pode ser considerada como tendo um comportamento inaceitável. Por essa razão, é crucial que uma aplicação consiga manter as suas afirmações de correção e garantir a consistência dos seus dados. Para tratar os resultados gerados que estão dispersos pelo globo nos diversos clientes, implementámos um algoritmo que os compila para uma única sequência de operações ordenadas pelo tempo de execução. Como os nossos clientes utilizam relógios de diferentes máquinas, podem existir pequenas discrepâncias que levam às operações sendo incorretamente ordenadas. Para solucionar isto, são calculadas as diferenças entre os relógios dos nossos clientes. Estas diferenças vão ter impacto na posterior análise dos resultados por parte de um algoritmo, modificado para tratar de tais casos. Para testar a precisão deste algoritmo, construímos uma aplicação geo-replicada e utilizámos o JepREST para a testar a nível mundial. Os resultados mostram que o algoritmo é capaz de detetar anomalias presentes nas sequências de operações que não respeitam a consistência causal. Também desenhamos testes personalizados de operações para avaliar os limites do nosso algoritmo, para os quais o algoritmo foi capaz de apresentar os resultados esperados.
A Geo-Replicação tem sido uma técnica comum para proporcionar aos clientes um acesso global e rápido a uma aplicação. Para tais sistemas de larga escala, os servidores, a lógica e os dados da aplicação são replicados em várias localizações geográficas em diferentes continentes. Construir e manter serviços geo-replicados é um desafio para os informáticos devido à sua complexidade. Algumas ferramentas, como o Jepsen e JepREST, já foram desenvolvidas para auxiliar o processo de teste e correção de sistemas distribuídos, no entanto, estas não são capazes de testar sistemas geo-replicados com muita facilidade. Para este propósito, estendemos as funcionalidades do JepREST para suportar testes em aplicações geo-replicadas. Isto envolveu a criação de clientes virtuais espalhados por todo o mundo, que realizam um conjunto de operações na aplicação concorrentemente. Ao mesmo tempo, geram ficheiros que serão analisados para verificar se a execução foi correta. Estes clientes tentarão descobrir quaisquer inconsistências da aplicação. São clientes a agir como um utilizador do mundo real, e por isso, ao detetarmos anomalias no comportamento da aplicação,esta pode ser considerada como tendo um comportamento inaceitável. Por essa razão, é crucial que uma aplicação consiga manter as suas afirmações de correção e garantir a consistência dos seus dados. Para tratar os resultados gerados que estão dispersos pelo globo nos diversos clientes, implementámos um algoritmo que os compila para uma única sequência de operações ordenadas pelo tempo de execução. Como os nossos clientes utilizam relógios de diferentes máquinas, podem existir pequenas discrepâncias que levam às operações sendo incorretamente ordenadas. Para solucionar isto, são calculadas as diferenças entre os relógios dos nossos clientes. Estas diferenças vão ter impacto na posterior análise dos resultados por parte de um algoritmo, modificado para tratar de tais casos. Para testar a precisão deste algoritmo, construímos uma aplicação geo-replicada e utilizámos o JepREST para a testar a nível mundial. Os resultados mostram que o algoritmo é capaz de detetar anomalias presentes nas sequências de operações que não respeitam a consistência causal. Também desenhamos testes personalizados de operações para avaliar os limites do nosso algoritmo, para os quais o algoritmo foi capaz de apresentar os resultados esperados.
Descrição
Palavras-chave
Distributed Systems Geo-replication Jepsen JepREST Black-box tests
