Skip to main content

Cloud Maturity Level - IaaS vs PaaS and SaaS

Nowadays cloud is just a commodity, and the number of cloud providers is high (including the private one also). Most of them have a vast number of services that can be consumed from their marketplace, from classical VMs to messaging systems and data warehouse. Once you start working with multiple cloud providers, the maturity level of the cloud providers is crucial. When you want to optimise the cost and improve the quality attributes of IT solutions that you build or manage the maturity level is important.

What
When we look at the service list provided by a cloud important, it is essential to take into account the level of management that needs to be done by ourself. It is not the same if a cloud provider offers us just an image with Redis inside a VM or Docker in comparison with a full SaaS offering.
Depending on where each service is in the IaaS-PaaS-SaaS (and even FaaS) scale, the cost of development, automation, integration is impacted. The most significant impact is at management and operation, where it is a big difference between managing an IaaS vs PaaS or SaaS.

An excellent example of this case is the database. It is a big difference when the cloud provider offers the database as IaaS. In the IaaS context, you need to manage the VM, the backup of the database and all other stuff. In comparison with a PaaS where all these things are part of the service offer. The only thing that you need to do is to specify for how long you want to keep the backup, what is the recovery policy and so on – at one click distance.
It is so easy to offer any service as an IaaS (just the VM and the application). But taking a part of the management and operation responsibilities, offering the ability of the user to configure features from a configuration dashboard is a different thing. You need the processes, the mechanism and teams that can do the magic behind the scene.

Why
I have seen a significant cost difference from the management and operation perspective for different cloud providers. Also, the development teams were complaining that for some specific cloud providers, the development and automation are slow and complicated.
It was a trigger to invest time and resources to understand what is the root cause of all of this.

Cloud Maturity Level
Taking this into account, one of the essential factors that define the maturity level of a cloud provider is the percent of the services offered in IaaS vs PaaS and SaaS. In general, you don’t realise the impact of it until you start to use 2 or 3 different cloud providers. When you try to do the same thing in another cloud provider and you realise that you need to manage a VM, not PaaS services, things become expensive and more complex.

For example, at this moment in time, AWS and  Azure are offering Cassandra DB as PaaS. We need to spin up the service and copy/paste the connection string. Inside IBM Cloud, Cassandra DB it is available only as IaaS, so you need to spin-up the VM, configure the Cassandra DB and so on.

Comparison
I took the top 4 cloud providers used by enterprises – Azure, AWS, GCP and IBM. For each of them, I counted the number of services that are IaaS versus the ones that are PaaS and IaaS. There might be some mistakes in the way how I marked each service as IaaS or PaaS and SaaS. Overall the result should represent the reality that we have now – at the end of 2019.
The initial result was exciting but it was not so shocking. AWS and Azure - that leaders of public cloud  -have less than 12% of their service as IaaS. In comparison with IBM, where more than 27% of their services are IaaS.


The result was aligned with the feedback received from the market. The next question that I had was related to what are the categories of services where IaaS offer has a high impact on the cost.
I wanted to find out what is the service category that has the highest impact on these costs (IaaS vs PaaS and SaaS)

Computation
The first category is the computation that has many formats nowadays – VM, microservices, serverless and many more. From this point of view more than 85% of the services offered by IBM in this category as IaaS. It was shocking because Azure and AWS have less than 46% and GCP only 21%.
It was pretty clear from this metric, why the operation and management cost of IBM cloud is so high. All the other cloud providers are offering many services inside PaaS, in comparison with IBM, where you have plenty of service as VMs.


Data and Storage
From the database and storage services point of view, cloud providers are smaller. The average of IaaS offer in comparison with PaaS and SaaS is around 15%. It is interesting that from the primary services offered by AWS on data and storage, all of them are PaaS and SaaS.
The highest number of IaaS services in this category is for Azure (22%). Even so, if we analyse the services from data and storage category, we notify that the cores ones are PaaS.  Some additional services from different providers are offered as IaaS.


Other categories
I also tried to extract information related to other categories like messaging and events or IoT. The results obtained were not very concluded, and it was not clear what is the impact of end customers.

Result overview
There are two types of service categories offered as IaaS that have a high impact on the operation and management cost. Computation, together with data storage, have a significant impact on this landscape, especially for enterprise applications. Most of the applications from these categories are storing plenty of data in different formats that need to be processed and fetch to other systems. When we combine this with NFR requirements, we realise that if redundancy, backups or auto-scaling are offered out of the box in a PaaS or SaaS offers it is the best things that can happen for the IT teams.
Less management, fewer operations that need to be done by the teams means fewer issues, low complexity and better NFR provided to the end-customer.

Conclusion
The lever of IaaS services in comparison with PaaS and SaaS is a useful maturity metric. The insights provided by this metric can offer us an overview related to complexity and cost. It seems that there is a direct connection between the cost of management and operation of IT projects and the number of cloud services offered in IaaS vs PaaS and SaaS. Additional to this during the implementation phase, there is a high impact on quality attributes and the complexity of the solution.

Comments

Popular posts from this blog

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine:
threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration:

TeamCity.NET 4.51EF 6.0.2VS2013
It seems that there …

Entity Framework (EF) TransactionScope vs Database.BeginTransaction

In today blog post we will talk a little about a new feature that is available on EF6+ related to Transactions.
Until now, when we had to use transaction we used ‘TransactionScope’. It works great and I would say that is something that is now in our blood.
using (var scope = new TransactionScope(TransactionScopeOption.Required)) { using (SqlConnection conn = new SqlConnection("...")) { conn.Open(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = ... sqlCommand.ExecuteNonQuery(); ... } scope.Complete(); } Starting with EF6.0 we have a new way to work with transactions. The new approach is based on Database.BeginTransaction(), Database.Rollback(), Database.Commit(). Yes, no more TransactionScope.
In the followi…

GET call of REST API that contains '/'-slash character in the value of a parameter

Let’s assume that we have the following scenario: I have a public HTTP endpoint and I need to post some content using GET command. One of the parameters contains special characters like “\” and “/”. If the endpoint is an ApiController than you may have problems if you encode the parameter using the http encoder.
using (var httpClient = new HttpClient()) { httpClient.BaseAddress = baseUrl; Task<HttpResponseMessage> response = httpClient.GetAsync(string.Format("api/foo/{0}", "qwert/qwerqwer"))); response.Wait(); response.Result.EnsureSuccessStatusCode(); } One possible solution would be to encode the query parameter using UrlTokenEncode method of HttpServerUtility class and GetBytes method ofUTF8. In this way you would get the array of bytes of the parameter and encode them as a url token.
The following code show to you how you could write the encode and decode methods.
publ…