Pereira, António Jorge SantosSantos, André Vieira dos2023-12-062023-11-09http://hdl.handle.net/10400.22/24087Over the years, software architectures have undergone significant transformations, driven by the constant changes in market demands. The imperative to empower organizations and teams for independent and agile application development has culminated in the adoption of loosely coupled architectures that consist of small, independent services. Emphasizing an asynchronous communication methodology through events, this approach enhances flexibility and speed while also reducing the dependency between services and teams. Concurrently, the escalating requirements for robust, resilient, and highly available systems have propelled a heightened need for better observability, particularly in these systems. While fundamental techniques like logging, monitoring, and alerting are essential for individual services, they may fall short in the context of an event-driven architecture where services are independent of each other and possess resilience mechanisms such as clustering, load balancing, and data replication. With the adoption of such software architectures, organizations face difficulties in achiev ing sufficient visibility of end-to-end business flows that span across multiple services. This thesis explores this challenge, taking into account the difficulties identified in the implemen tation posed by existing resilience mechanisms, such as clustering, load balancing, and data replication strategies. The proposed solution addresses these challenges by introducing an easy-to-set-up, open source tracing solution designed to enable tracing in a pre-defined set of services. This solution aims to bridge the gap in observability within event-driven architectures, allowing organizations to overcome the limitations posed by these implementations. By leveraging distributed tracing tools, the proposed solution provides a comprehensive analysis of the ecosystem’s current state, offering insights and actionable data for improved monitoring and understanding of end-to-end business processes. In conclusion, the work done in this thesis contributes not only to the theoretical understand ing of observability challenges in dynamic software architectures but also provides a practical and accessible solution to enhance traceability in the context of event-driven architectures with resilience mechanisms. The open-source nature of the proposed solution promotes widespread adoption and collaboration within the software development community.Ao longo dos anos, as arquiteturas de software sofreram transformações significativas, impulsionadas pelas constantes mudanças nas exigências do mercado. A necessidade de capacitar organizações e equipas para o desenvolvimento independente e ágil de aplicações culminou na adoção de arquiteturas pouco acopladas, compostas por pequenos serviços in dependentes. Enfatizando uma metodologia de comunicação assíncrona através de eventos, essa abordagem aprimora a flexibilidade e velocidade de entrega, reduzindo a dependência entre serviços e equipas. Simultaneamente, os requisitos por sistemas robustos, resilientes e altamente disponíveis impulsionaram a necessidade acentuada de ter melhor observabilidade, particularmente nesses sistemas. Enquanto técnicas fundamentais como logging, monitorização e alertas são essenciais para ter observabilidade sobre um serviço, pode não ser suficiente no contexto de uma arquitetura orientada a eventos, onde os serviços são independentes e possuem mecanismos de resiliência como clustering, balanceamento de carga e replicação de dados. Com a adoção de tais arquiteturas de software, as organizações enfrentam dificuldades em alcançar uma boa visibilidade nos fluxos de negócios de ponta a ponta que abrangem vários serviços. Esta tese explora esse desafio, tendo em conta as dificuldades identificadas na implementação causadas pelos mecanismos de resiliência existentes, como clustering, balanceamento de carga e estratégias de replicação de dados. A solução proposta introduz uma ferramenta de tracing open-source, fácil de configurar, projetada para permitir realizar tracing num conjunto predefinido de serviços. Esta solução visa colmatar a lacuna na observabilidade dentro de arquiteturas orientadas a eventos, permitindo que as organizações superem as limitações impostas por essas implementações. Ao aproveitar ferramentas de tracing distribuído, a solução proposta fornece uma análise abrangente do estado atual do ecossistema, oferecendo insights e dados acionáveis para melhorar a monitorização e compreensão dos processos de negócios de ponta a ponta. Em conclusão, o trabalho realizado nesta tese contribui não apenas para a compreensão teórica dos desafios de observabilidade em arquiteturas de software dinâmicas, mas também fornece uma solução prática e acessível para aprimorar a rastreabilidade no contexto de arquiteturas orientadas a eventos. A natureza open-source da solução proposta promove a adoção generalizada e a colaboração dentro da comunidade de desenvolvimento de software.engEvent-DrivenTracingObservabilityLoggingMonitoringRastreio e monitorização de Arquiteturas Orientadas a EventosTracing and monitoring Event-Driven Architecturesmaster thesis203413059