Dissertação

{en_GB=FaultSee: Reproducible fault injection in distributed systems} {} EVALUATED

{pt=Os sistemas informáticos distribuídos são cada vez mais importantes na sociedade moderna operando, muitas vezes, a uma escala global e com requisitos de disponibilidade muito perto dos 100%. Para alcançar um nível tão elevado de disponibilidade é necessário ter processos de desenvolvimento focados na qualidade, com testes rigorosos e exaustivos. Os sistemas distribuídos, por serem formados por vários componentes, são bastante difíceis de avaliar e testar de uma forma sistemática e reproduzível. Esta dificuldade pode constatar-se ao analisar artigos científicos ou outros estudos sobre um sistema distribuído em operação, em que é frequente ver afirmações sobre a injeção de faltas em nós do sistema, que não são explicadas nem contextualizadas de forma a permitir a reprodução num ambiente de teste alternativo. Dado que o comportamento do sistema pode variar substancialmente consoante o tipo de "falta" injetada, torna-se praticamente impossível a um investigador reproduzir o comportamento observado nesse teste. Se não existir reproducibilidade, então não se consegue fazer a adequada comparação de alternativas, e o progresso técnico torna-se mais lento e dispendioso. Neste trabalho propomos a criação da plataforma FaultSee que permite avaliar sistemas reais de uma forma mais sistemática e reproduzível do que o estado da arte. Propomos também uma linguagem, a FDSL, usada pelo FaultSee, de especificação de sistemas distribuídos e injeção de faltas que capturam precisamente variáveis como o ambiente de teste, a carga de trabalho e tipo de faltas. Estas funcionalidades são demonstradas em cenários realistas usando o Apache Cassandra e o BFT-Smart como casos de estudo. , en=Distributed systems are getting more important in modern society, often operating on a global scale with availability requirements close to 100%. Achieving high levels of availability requires quality-focused development processes with rigorous and thorough testing. Distributed systems, due to having several components, are quite difficult to evaluate and test in a systematic and reproducible manner. When analyzing a study or paper of a distributed system in operation, often there are statements about fault injection in system nodes, which are neither explained nor contextualized to allow reproduction in an alternate test environment. Since system behavior can vary substantially depending on the injected fault, it is virtually impossible for a researcher or engineer to reproduce the behavior observed in a test. Without reproducibility, correct comparison of alternatives is unobtainable, and technical progress becomes slower and more expensive. In this thesis, we propose the FaultSee platform that allows to evaluate real systems in a more systematic and reproducible way than the state of the art. We also propose a language, used by FaultSee, for distributed system specification and fault injection that accurately captures variables such as the test environment, workload and fault type. These features are demonstrated in realistic scenarios using the Apache Cassandra database and the BFT-Smart system as case studies.}
{pt=Sistemas distribuídos, Avaliação de sistemas, Reprodutibilidade, Tolerância a faltas, en=Distributed Systems, Fault Injection, Reproducibility, Chaos Engineering}

Dezembro 5, 2019, 9:0

Orientação

ORIENTADOR

Miguel Filipe Leitão Pardal

Departamento de Engenharia Informática (DEI)

Professor Auxiliar

ORIENTADOR

Miguel Ângelo Marques de Matos

Departamento de Engenharia Informática (DEI)

Professor Auxiliar