Organizacije sve više ovise o kvaliteti informacijskih sustava kao okosnici stabilnog poslovanja. Za razliku od zatvorenih sustava koje koristi unaprijed određeni broj korisnika, informacijski sustavi okrenuti vanjskom poslovanju moraju biti skalabilni i otporni na promjene u radnom opterećenju. Zbog osjetljivosti i na najmanje ispade, garancija kvalitete usluge pojedinog sustava ostvarena je strogim sporazumima o razini usluge. U ostvarenju takvih sustava, infrastruktura računarstva u oblaku pruža dinamičan zakup sklopovlja razmjeran trenutnom radnom opterećenju te ostvaruje elastičnost usluge. Ova disertacija predstavlja model arhitekture informacijskoga sustava koji odlikuje mogućnost rekonfiguracije u sklopu prilagodbe promjenjivom radnom opterećenju te mogućnost optimiranja njegove konfiguracije. Cilj optimiranja je ostvarivanje željene kvalitete usluge definirane sporazumom uz minimalni trošak zakupa infrastrukture u oblaku. Za ocjenu atributa kvalitete pojedinih konfiguracija predložena je metoda koja omogućuje automatsku konfiguraciju sustava, simuliranje promjenjivog radnog opterećenja te analizu prikupljenih podataka. Kako prostor konfiguracija pojedinog sustava naglo raste zavisno broju komponenti, za efikasno pretraživanje i određivanja optimalnih kandidata predlaže se genetski algoritam koji koristi metodu simulacije u određivanju atributa kvalitete. Predloženi simulacijski model zasnovan je na mreži redova čekanja. Zbog elastičnosti modelirane aplikacije predlaže se simulator koji raspolaže mogućnošću prilagodbe modela sustava tijekom izvođenja. Naposljetku, predložen je model razvojne okoline ElaClo, skraćeno od Elastic Cloud, koja provodi optimizaciju koristeći računalni oblak. Realiziran je prototip okoline ElaClo kako bi se provela validacija optimiranja aplikacije iz domene maloprodaje koju svakodnevno koristi nekoliko tisuća korisnika. Validacija simulacijskog modela provedena je na podacima prikupljenim tijekom provedbe 40 uzastopnih optimizacija gdje se pomoću neparametrijskih statističkih testova pokazalo da su ostvarene zadane pretpostavke o preciznosti i efikasnosti postupka. Predstavljena automatska optimizacija konfiguracije omogućuje davatelju usluge značajnu vremensku uštedu u ostvarenju optimalne konfiguracije te informirano odlučivanje prilikom oblikovanja sporazuma o razini usluge u skladu s očekivanim troškovima izvođenja u oblaku.
Applications in the cloud are implemented with elasticity attribute to achieve lower operating costs without sacrificing quality. Software architects strive to provide efficient services by deciding on a software configuration: a set of structural architectural decisions. For a given application, there can be numerous software configuration alternatives creating the need for automated optimization methods. Current optimization approaches rely on experts providing application performance models built upfront, based on their experience and the requirements provided. While such techniques are effective and valuable, they require additional maintenance effort as the software evolves. This dissertation introduces ElaClo, a framework for optimizing application configuration in a cloud environment. ElaClo's main contribution is in providing optimization in the software assembly phase from automatically extracted application models. ElaClo provides workload generation, monitoring, configuration management, elasticity mechanisms, and algorithms to support the optimization process. ElaClo was implemented as an expert tool and evaluated on a real-life cloud application from the retailing business domain where ElaClo was applied to select optimal configurations with regards to service response time objectives and infrastructure costs. The efficiency of the optimization process and the quality of optimization results were validated quantitatively on a set of optimization runs. Results demonstrate the effectiveness of the suggested framework in yielding optimal configurations. Theoretical background and previous research The first part of the thesis introduces all the necessary concepts. It defines the software architecture and software configuration and their relationship where architecture restricts possible configurations. It defines a software component and different architectural styles as existing patterns for solving repeating requirements. It then introduces component-based systems and the role of component model as a specification for developing software components. An explanation of software component life-cycle is also provided covering all phases from releasing to retiring components. Software quality is also defined together with quality attributes, metrics, and criteria that are commonly used in the service-level agreements. The context of this thesis is optimizing the software configuration in the cloud so the concept of cloud computing is also explained with special attention given to cost models. Application workload is defined as the sum of all individual user requests, and system scalability as the base requirement for addressing volatile workloads. In order to scale effectively, elasticity attribute of the system is introduced as its ability to adapt the system processing capacity to closely follow the current workload demands. The final part of this chapter is the dissemination of the process of systematic literature review – SLR. First, the methodology for SLR is given together with the plan for conducting the literature search. Literature search process resulted in 4648 publications which are narrowed down to 48 final publication included in SLR. A taxonomy is given which involves all the different aspects of configuration optimization by which the selected publications have been classified. Finally, a critical analysis of previous work is given highlighting the novelties in this thesis. These are primarily the optimization of the configuration under the dynamic workload, quality criteria expressed with quantiles, and introducing a cloud development environment for optimizing the configuration after the initial development phase. This contrasts the previous work where optimization relies on the provided performance models in the design phase. Elastic component-based information system architecture This chapter enumerates the applied architectural styles in the specification of an elastic architecture with dynamic reconfiguration capabilities. The proposed architecture is described from different architectural views together with a model for the system configuration that allocates components to elastic groups. Each elastic group can be dynamically reconfigured during runtime for implementing elastic behavior. A meta-model of the architecture is also given in the form of a UML profile. Configuration optimization problem is formulated based on the proposed elastic component-based architecture. The configuration search-space size is also defined based on all the permutations of allocating components to elastic groups. Finally, an extension of component-based software process model is given that places the optimization step between existing implementation and component assembly phases. A method for evaluating configurations compliant with service-level agreements In order to assess individual quality attributes of each configuration under the dynamic workload, the method introduced in this chapter first defines two models: (1) application workload model, and (2) SLA model. Workload model is defined as the non-homogeneous Poisson Processes belonging to multiple request classes. In order to generate such volatile workload, an algorithm is also provided. Finally, methods for evaluation each configuration is provided by a model of components that coordinate the optimization, generate the synthetic workload and monitor the key metrics of the targeted application. In order to apply different configurations, an algorithm is introduced to generate all possible configurations of the given application model. For the purpose of collecting the key metrics, an algorithm is also defined that approximates the response time distribution. An evolution algorithm for determining optimal configurations An evolution algorithm is defined in this chapter for the efficient exploration of the space of possible application configurations. The rationale for selecting the genetic algorithm in evolutionary approach is primarily based on the ability to work with populations thus yielding Pareto optimal sets of configurations. All steps of the genetic algorithm are disseminated together with the candidate representation method. For evaluating each candidate a multi-class queue network is used together with a method for conducting the simulation. The simulation process is able to simulate elasticity by dynamically changing the queueing network to represent different states of the system expressed by the number of cloud resources used. An execution environment for optimizing configurations This chapter gives a model of the execution environment ElaClo (Elastic cloud). ElaClo is a distributed system that can be divided into central ElaClo optimization environment and application framework integrated into a targeted application that supports the optimization process. Component models are given for both the central ElaClo components and application components. The process of adapting the configuration is described together with possible communication alternatives between components of the targeted application. Finally, an ElaClo user interface is presented in the form of web application. Validation In this chapter, the validation the optimization process is given. It describes the validation goals, research questions, and the methodology for answering them. ElaClo was implemented as a prototype tool and it was then evaluated on a real-life system. Case study introduces the CashRegister application used in the Croatian, Slovenian, and Czech market by several thousand active users. The dynamic workload has been modeled by analyzing the usage of the real system. The optimization process was statistically proven to converge based on the data gathered from 40 optimization runs. The quality of results was also shown to be satisfactory by evaluating them in the real cloud system using ElaClo. Validation concludes by enumerating all limitations of this research and threats to validity. Conclusion This dissertation introduced the ElaClo framework for optimizing application configuration according to response-time based service-level objectives and cloud infrastructure operation costs. ElaClo provides these capabilities by providing a development framework to be used in the targeted application together with a cloud-based development environment with an integrated simulator to accelerate optimization process. By using ElaClo, developers are empowered with meaningful information about configuration evaluation and optimization processes and so they can target and offer feasible service-level objectives. ElaClo was evaluated on a real-life case study and indicated non-trivial optimal topologies. Since the space of all possible topologies is large, ElaClo determines optimal topology candidates using a simulation environment by automatically extracting simulation models based on measurement from the real application components. Suggested topologies were re-evaluated on a real infrastructure under same volatile workload model, exploiting ElaClo to automatically manage the cloud topology, generate workload, monitor and enable service elasticity. Several statistical tests were applied to evaluate the accuracy and efficiency of the optimization process in the simulated environment. It was demonstrated and statistically supported that applying genetic algorithms on simple queue network performance models can differentiate topologies that tend to be optimal when tested in the real environment. The largest challenge in applying ElaClo is the process of integrating ElaClo's application framework into applications that need optimization. This requires additional effort from service providers and limits ElaClo applicability in different component framework implementations. For that reason, future work will involve integrating application containers (e.g. Docker) to facilitate managing incremental changes to component artifacts. This will enable evaluation of different configurations across application releases throughout the development process and enable optimization of systems with heterogeneous components.