Cloud services are designed to provide users with different computing models such as software-as-a-Services (SaaS), Infrastructure-as-a-Service (IaaS), Data-as-a-Service (DaaS), and other IT related services (denoted as XaaS). Easy, scalable and on-demand cloud services are offered by cloud providers to users. With the prevalence of different types of cloud services, the task of selecting the best cloud service solution has become more and more challenging. Cloud service solutions are offered through a collaboration of different cloud services at different cloud layers. This type of collaborations is denoted as vertical service composition. Quality of Service (QoS) properties are used as differentiating factors for selecting the best services among functionally equivalent services. In this thesis, we introduce a new service selection framework for the cloud which vertically matches services offered by different cloud providers based on users’ end-to-end QoS requirements. Functional requirements can be satisfied by the required cloud service (software service, platform service, etc) alone. However, users’ QoS requirements must be satisfied using all involved cloud services in a service composition. Therefore, in order to select the best cloud service compositions for users, QoS values of these compositions must be end-to-end. To tackle the problem of computing unknown end-to-end QoS values of vertical cloud service compositions for target users (for whom these values are computed), we propose two strategies: QoS mapping and aggregation and QoS prediction. The former deals with new cloud service compositions with no prior history. Using this strategy, we can map users’ QoS requirements onto different cloud layers and then we aggregate QoS values guaranteed by cloud providers to estimate end-to-end QoS values. The latter deals with cloud service compositions for which QoS data have been recorded in an active system. Using the QoS prediction strategy, we utilize historical QoS data of previously invoked service compositions and other service and user information to predict end-to-end QoS values. The presented experimental results demonstrate the importance of considering vertically composed cloud services when computing end-to-end QoS values as opposed to traditional prediction approaches. Our QoS prediction approach outperforms other prediction approaches in terms of the prediction accuracy by at least 20%.