Cloud, multi-cloud, DevOps … A brief analysis of trends

In the last years we have changed the way we consume software applications. Not that long ago, if we wanted to use a certain application we had to install it from a CD or similar format and we paid the corresponding license. Nowadays, however, we have countless possibilities to access to that very same software in an online mode, paying just for the use we make of it or even for free if we use just a limited version. This shift in the business model, from licenses to a pay-as-you-go is facilitated through cloud computing.

According to the US National Institute of Standards and Technology, NIST, cloud computing is “a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction”.

For software developers this new business model implies changes in which they develop and provision their software application. The sharing of computational resources involves changes in the architecture. Scalability often means changes not only in the architecture but also possibly in the data bases, which now will have to incorporate mechanisms to grow automatically. Another question that often arises the software developers has to do with where to deploy the application, namely, on which cloud service provider (CSP). Is it better a public CSP like Amazon, Azure or others or is it better to deploy it on a private cloud? And why not deploy each application component, following for instance a micro-services-based-architecture, on multiple CSPs, following a multi-cloud approach that allows profiting from the best of each provider? Events such as the one occurred with Amazon S3 on February 2017 leads us to think that maybe this would be a better option, that is, seek for a self-healing multi-cloud architecture, dynamically aware of the context and re-adaptable depending on several metrics such as performance, quality of services or legal – compliancy.

The challenges then faced by the developers of these multi-cloud applications are not only the ones intrinsic to software development such as the quality of the code and the proper functioning but also the selection of the most appropriate CSP for that micro-service-based component, negotiation and management of multiple CSPs, optimization of the application, continuous integration and deployment, as well as (semi-) automatic dynamic reconfiguration. In order to be able to select the most appropriate CSP, as well as to manage multiple providers from a unique entry point, a possible solution can be the usage of a cloud service broker (CSB) acting as aggregator and intermediator of cloud service offerings.

Moreover, in order to achieve a continuous integration and deployment, the current trend is the adoption of a DevOps approach that involves the ‘merging’ of the development environment with the operation one, facilitating the communication of the development and operation team members that up until now, worked in differentiated silos, with few communication. DevOps is often supported by tools such as Jenkins or Maven following the approach of the agile methodologies. DevOps allows companies that want to profit from the capabilities and the possibilities that the cloud offers, both when the aapplication is deployed on just one CSP or on multiple CSPs, offering the customer the most updated version and with the highest quality standards without business interruption.