Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform
Autor(a) principal: | |
---|---|
Data de Publicação: | 2021 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10362/160537 |
Resumo: | Low-Code Development platforms enable users to rapidly develop applications relying on a form of abstraction of the actual code run by the system. The developer interacts mostly with a visual programming language, needing to write few or no lines of code at all. The abstraction and the degree of automation working underlyingly diminish greatly the time required to implement a fully functional application. However, the same abstraction that accelerates development also contributes to the mapping gap between running and written code. The problem arises as the information exposed by the current running systems complies with the generated running code (e.g.: through verbose logs), rather than the low-code abstraction employed by the developer. This work’s case study is of the OutSystems platform, on which it addresses the improvement of the relation between a runtime problem and the OutSystems code that led to it. Particularly, the problem will be faced in the context of most OutSystems running applications, i.e., of a multi-machine setting. The proposed solution modifies the OutSystems compiler, so that the application publishing process automatically generates OpenTelemetry instrumentation code, that exports tracing information on the same abstraction level as the one developed. Said information is currently presented using external tools, such as Jaeger. As a whole, the approach shall provide relevant information about the system’s runtime state, facilitating the task of finding a possible root-cause of an encountered problem. The proposed solution was tested against its impact regarding performance overhead, namely on the server and client machines, as well as on network activity. The results pointed out some overhead, particularly on the client-side’s CPU consumption and number of KBytes sent. Real users were also tested, to analyse the overall usability of the solution (and its collected and presented information), leading to a success rate of, approximately, 90% on user interpretation of the information and usability scoring. |
id |
RCAP_4169b703a87a3db83f95f28d2344f183 |
---|---|
oai_identifier_str |
oai:run.unl.pt:10362/160537 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems PlatformLow-Code DevelopmentOutSystemsDistributed SystemsObservabilityMonitoringTracingDomínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaLow-Code Development platforms enable users to rapidly develop applications relying on a form of abstraction of the actual code run by the system. The developer interacts mostly with a visual programming language, needing to write few or no lines of code at all. The abstraction and the degree of automation working underlyingly diminish greatly the time required to implement a fully functional application. However, the same abstraction that accelerates development also contributes to the mapping gap between running and written code. The problem arises as the information exposed by the current running systems complies with the generated running code (e.g.: through verbose logs), rather than the low-code abstraction employed by the developer. This work’s case study is of the OutSystems platform, on which it addresses the improvement of the relation between a runtime problem and the OutSystems code that led to it. Particularly, the problem will be faced in the context of most OutSystems running applications, i.e., of a multi-machine setting. The proposed solution modifies the OutSystems compiler, so that the application publishing process automatically generates OpenTelemetry instrumentation code, that exports tracing information on the same abstraction level as the one developed. Said information is currently presented using external tools, such as Jaeger. As a whole, the approach shall provide relevant information about the system’s runtime state, facilitating the task of finding a possible root-cause of an encountered problem. The proposed solution was tested against its impact regarding performance overhead, namely on the server and client machines, as well as on network activity. The results pointed out some overhead, particularly on the client-side’s CPU consumption and number of KBytes sent. Real users were also tested, to analyse the overall usability of the solution (and its collected and presented information), leading to a success rate of, approximately, 90% on user interpretation of the information and usability scoring.As plataformas de desenvolvimento low-code permitem que os utilizadores desenvolvam aplicações rapidamente, baseando-se numa forma de abstração do código que efetivamente é executado pelo sistema. O programador interage maioritariamente com uma linguagem de programação visual, necessitando apenas de escrever poucas ou nenhumas linhas de código. A abstração e o grau de automação subjacentes diminuem sobejamente o tempo necessário para a implementação de uma aplicação completamente funcional. Contudo, a mesma abstração que acelera o desenvolvimento também contribui para a separação entre o código executado e o código escrito. O problema surge uma vez que a informação exposta pelo sistema em execução diz respeito ao código gerado que estiver em execução (e.g.: através de logs verbosos), ao invés da abstração low-code empregue pelo programador. O caso de estudo deste projeto é o da plataforma OutSystems, no qual é abordada a melhoria da relação entre um problema encontrado em tempo de execução e o código OutSystems que o originou. Particularmente, o problema será enfrentado no contexto no qual a maior parte das aplicações OutSystems se situam, i.e., de uma configuração de múltiplas máquinas. A solução proposta altera o compilador OutSystems, para que, no processe de publicação de uma nova aplicação, este gere código de instrumentação OpenTelemetry, que exportará informação de tracing ao mesmo nível de abstração que o usado no processo de desenvolvimento. Esta informação é atualmente apresentada em ferramentas externas, como o Jaeger. Como um todo, esta abordagem deverá providenciar informação relevante sobre o estado do sistema em tempo de execução, facilitando a identificação de possíveis causas de um problema encontrado. A solução proposta foi testada contra o seu impacto ao nível de performance, nomeadamente nas máquinas de servidor e cliente, bem como quanto à atividade de rede. Os resultados apontam para a presença de impacto, particularmente no consumod e CPU e número de KBytes enviados pelo cliente. Foram também inquiridos utilizadores reais, para analisar a usabilidade geral da solução, apontando para uma taxa de sucesso de, sensivelmente, 90%.Lourenço, JoãoGregório, HélderRUNDeodato, Pedro Henrique Jones2023-11-27T08:29:54Z2021-022021-02-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10362/160537enginfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-03-11T05:43:14Zoai:run.unl.pt:10362/160537Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-20T03:58:05.203027Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
title |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
spellingShingle |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform Deodato, Pedro Henrique Jones Low-Code Development OutSystems Distributed Systems Observability Monitoring Tracing Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática |
title_short |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
title_full |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
title_fullStr |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
title_full_unstemmed |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
title_sort |
Runtime Tracing of Low-Code Applications: A Case Study for the OutSystems Platform |
author |
Deodato, Pedro Henrique Jones |
author_facet |
Deodato, Pedro Henrique Jones |
author_role |
author |
dc.contributor.none.fl_str_mv |
Lourenço, João Gregório, Hélder RUN |
dc.contributor.author.fl_str_mv |
Deodato, Pedro Henrique Jones |
dc.subject.por.fl_str_mv |
Low-Code Development OutSystems Distributed Systems Observability Monitoring Tracing Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática |
topic |
Low-Code Development OutSystems Distributed Systems Observability Monitoring Tracing Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática |
description |
Low-Code Development platforms enable users to rapidly develop applications relying on a form of abstraction of the actual code run by the system. The developer interacts mostly with a visual programming language, needing to write few or no lines of code at all. The abstraction and the degree of automation working underlyingly diminish greatly the time required to implement a fully functional application. However, the same abstraction that accelerates development also contributes to the mapping gap between running and written code. The problem arises as the information exposed by the current running systems complies with the generated running code (e.g.: through verbose logs), rather than the low-code abstraction employed by the developer. This work’s case study is of the OutSystems platform, on which it addresses the improvement of the relation between a runtime problem and the OutSystems code that led to it. Particularly, the problem will be faced in the context of most OutSystems running applications, i.e., of a multi-machine setting. The proposed solution modifies the OutSystems compiler, so that the application publishing process automatically generates OpenTelemetry instrumentation code, that exports tracing information on the same abstraction level as the one developed. Said information is currently presented using external tools, such as Jaeger. As a whole, the approach shall provide relevant information about the system’s runtime state, facilitating the task of finding a possible root-cause of an encountered problem. The proposed solution was tested against its impact regarding performance overhead, namely on the server and client machines, as well as on network activity. The results pointed out some overhead, particularly on the client-side’s CPU consumption and number of KBytes sent. Real users were also tested, to analyse the overall usability of the solution (and its collected and presented information), leading to a success rate of, approximately, 90% on user interpretation of the information and usability scoring. |
publishDate |
2021 |
dc.date.none.fl_str_mv |
2021-02 2021-02-01T00:00:00Z 2023-11-27T08:29:54Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10362/160537 |
url |
http://hdl.handle.net/10362/160537 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799138162377752576 |