Collection of optimization patterns
The migration phase of the ARTIST project consists of two steps. The first one, namely reverse engineering step, deals with the abstraction of the original application into platform-independent models (PIMs), which keep no information about any specific platform. The second step, forward engineering, has as final target the production of code targeted at a specific platform. In the process of obtaining this final code, the PIMs are first transformed into platform-specific models (PSMs), which contain information about the particular platform where the application is to be eventually deployed. The architecture of the application can already be studied and analysed at the model level, in order to ensure a proper performance, reliability, security…, i.e., in order to satisfy the requirements expressed in terms of non-functional properties (NFPs) during the pre-migration phase. For this, we propose the use of optimization patterns, which aim at improving several NFPs of the application and whose effects can already be analysed in a model level. To this purpose, the main contribution of this deliverable is an Optimization Patterns Catalogue consisting of 31 different patterns gathered from different sources.
Different features from the three main cloud providers considered in the ARTIST project have been studied in order to realize which ones can be considered and utilized by the optimization patterns. For instance, if we want to apply Caching in the migrated application, we need to know which services the cloud providers offer to this aim.
Moreover, we also report on the feedback by the use case providers about requirements for the migrated systems that could improve the functionalities, as well as non-functional aspects, with respect to the original systems. This permits us to identify not only which patterns are more suitable for each use case, but also to determine and study which NFPs are related to which optimization patterns. Clearly, more than one optimization pattern can help improve the same NFP, but they can also worsen others. For this reason, it is also important to have knowledge about the negative effect that the application of optimization patterns can have on the migrated application.
Since the optimization patterns presented and described in this document have been obtained from different sources, where each work normally focus on cloud patterns at a specific level of abstraction. They define patterns that are either collected from other sources, or from other domains, or new patterns identified by them. We have gathered a set of patterns that can be used to optimize a migrated application according to different NFPs. These patterns can be applied at different levels of abstraction – for instance, there are patterns that can be applied at an architectural level, such as Horizontal Scaling; while there are others that need to be implemented at a code level, like Throttling. In any case, independently from the level of abstraction where our collected patterns can be applied, we have further classified them conceptually. In this way, we have grouped the patterns in seven different categories, where patterns in the same category try to optimize the same aspects of the migrated application. Some patterns are in more than one category. This categories have been identified within the context of the ARTIST project, not having been presented before elsewhere.
The Optimization Patterns Catalogue is represented through a template. This template has several different fields, namely the pattern’s name, the application context, the problem it solves, the solution and application, the mechanisms offered by the different cloud providers, the architecture mapping, the impact and negative impact regarding NFPs, the conceptual category (according to a total of seven different as mentioned above), the abstraction level, views needed for Task 8.3 and related patterns.