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

Windows Docker Containers can make WIN32 API calls, use COM and ASP.NET WebForms

After the last post , I received two interesting questions related to Docker and Windows. People were interested if we do Win32 API calls from a Docker container and if there is support for COM. WIN32 Support To test calls to WIN32 API, let’s try to populate SYSTEM_INFO class. [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } ... [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); ... SYSTEM_INFO pSI = new SYSTEM_INFO(

Azure AD and AWS Cognito side-by-side

In the last few weeks, I was involved in multiple opportunities on Microsoft Azure and Amazon, where we had to analyse AWS Cognito, Azure AD and other solutions that are available on the market. I decided to consolidate in one post all features and differences that I identified for both of them that we should need to take into account. Take into account that Azure AD is an identity and access management services well integrated with Microsoft stack. In comparison, AWS Cognito is just a user sign-up, sign-in and access control and nothing more. The focus is not on the main features, is more on small things that can make a difference when you want to decide where we want to store and manage our users.  This information might be useful in the future when we need to decide where we want to keep and manage our users.  Feature Azure AD (B2C, B2C) AWS Cognito Access token lifetime Default 1h – the value is configurable 1h – cannot be modified

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.51 EF 6.0.2 VS2013 It see