Article Preview
Top1. Introduction
Accessing resources through services rather than owning them represents a promising approach for developing applications. This is tied to many factors, among others we cite: the affordable access to reliable infrastructures through different high-performance hardware and software configurations, relieving users of maintenance tasks and ensuring low cost mechanisms for security issues. Consequently, a large number of institution managers have migrated towards could computing, which is already known since more than two decades, in order to perform computations in different areas of application (Jula, Sundararajan & Othman, 2014; Vakili, 2017).
On another side, business applications have consistently grown so to become more and more complex in a way that, sometimes, a one single service cannot perform a given task on its own. One possible solution is to move towards cloud services composition, where the need to resort to a set of services in order to communicate and to have combined each other (Guerfel, Sbai, & Ayed, 2014). In this case, a business application is composed of a combination of several components, often business services, where each service is used to perform a specific function (Tsai, Sun, & Balasooriya, 2010; Nguyen, Lelli, Papazoglou & Van Den Heuvel, 2012 & Benfenatki, 2016).
In practical terms, business services provide more global functionalities than in web services since they include application-packages that can be deployed across multiple infrastructures. This leads to an overall reduction of the total number of invoked-services, in particular for applications implying many features (Tsai, Sun, & Balasooriya, 2010 & Benfenatki, 2016). However, each involved service may impose some constraints on composition and deployment aspects. For instance, the Joomla service should always be composed with a database service (Jatoth, Gangadharan & Fiore, 2018 & Benfenatki, 2017).
On the one hand, the proliferation of Cloud Computing, Big Data, and Internet of Things led to the emergence of multiple instances of each abstract service (candidates) within the service composition workflow, with equivalent features but different quality of service metrics (QoS, such as cost, response time, availability, reliability, reputation, security, throughput, etc) (Zertal & Batouche, 2017 & Karimi et al., 2016). On the other hand, the applications comprised of multiple tasks that vary in nature require a composition strategy of cloud services based on some QoS parameters and execution priority depending on the current context of composition. Consequently, the composition system implies a selection among various candidate services, those that satisfy customers' requirements but also optimize the global QoS parameters (Zertal & Batouche, 2017& Karimi et al., 2016). The construction of the best (i.e. the optimal) services-composition is an NP-hard problem since the number of available candidate services is massively increasing with the growth of applications size.
In an effort to address this issue, several approaches were proposed that we classify into three main categories: framework-based approaches, agent-based approaches, and heuristic-based approaches (Vakili & Navimipour, 2017). Although these approaches show some advantages, the latter is, however, more suitable for optimizing service-composition according to QoS parameters since it deals with optimization problems solving. As a result, a considerable part of recent researches is turned out to search for optimized composition-plans using different hybrid heuristic algorithms; we cite for instance (Gohain & Paul, 2016; Karimi et al., 2016; Li, Jiang, & Ge, 2014; Seghir & Khababa, 2016; Seghir et al., 2016; Wu, Chen, & Huang, 2016; Yang et al., 2019; Khanam, Kumar & Kumari, 2018; Naseri & Navimipour, 2018; Gavvala, Jatoth, Gangadharan & Buyya, 2019; Jatoth, Gangadharan & Fiore, 2018 & Yu, Chen & Li, 2015).