|Institution:||Universidade do Rio Grande do Sul|
|Keywords:||Web application; Manutencao : Software; Application-level caching; Servios Web; Self-adaptive systems; Software maintenance; Software evolution; Guideline; Pattern|
|Full text PDF:||http://hdl.handle.net/10183/156813|
Latency and cost of Internet-based services are encouraging the use of application-level caching to continue satisfying users demands, and improve the scalability and availability of origin servers. Application-level caching, in which developers manually control cached content, has been adopted when traditional forms of caching are insufficient to meet such requirements. Despite its popularity, this level of caching is typically addressed in an adhoc way, given that it depends on specific details of the application. Furthermore, it forces application developers to reason about a crosscutting concern, which is unrelated to the application business logic. As a result, application-level caching is a time-consuming and error-prone task, becoming a common source of bugs. This dissertation advances work on application-level caching by providing an understanding of its state-of-practice and automating the decision regarding cacheable content, thus providing developers with substantial support to design, implement and maintain application-level caching solutions. More specifically, we provide three key contributions: structured knowledge derived from a qualitative study, a survey of the state-of-the-art on static and adaptive caching approaches, and a technique and framework that automate the challenging task of identifying cache opportunities The qualitative study, which involved the investigation of ten web applications (open-source and commercial) with different characteristics, allowed us to determine the state-of-practice of application-level caching, along with practical guidance to developers as patterns and guidelines to be followed. Based on such patterns and guidelines derived, we also propose an approach to automate the identification of cacheable methods, which is often manually done and is not supported by existing approaches to implement application-level caching. We implemented a caching framework that can be seamlessly integrated into web applications to automatically identify and cache opportunities at runtime, by monitoring system execution and adaptively managing caching decisions. We evaluated our approach empirically with three open-source web applications, and results indicate that we can identify adequate caching opportunities by improving application throughput up to 12.16%. Furthermore, our approach can prevent code tangling and raise the abstraction level of caching. O custo de servios na Internet tem encorajado o uso de cache a nvel de aplicao para suprir as demandas dos usurios e melhorar a escalabilidade e disponibilidade de aplicaes. Cache a nvel de aplicao, onde desenvolvedores manualmente controlam o contedo cacheado, tem sido adotada quando solues tradicionais de cache no so capazes de atender aos requisitos de desempenho desejados. Apesar de sua crescente popularidade, este tipo de cache tipicamente endereado de maneira ad-hoc, uma vez que depende de detalhes especficos da aplicao para ser desenvolvida. Dessa forma, tal cache consiste em uma tarefa que requer tempo eAdvisors/Committee Members: Nunes, Ingrid Oliveira de.