The confusion between SaaS and the Cloud
or why every SaaS company is trying to convince us that they are on the Cloud
I am sure that if you are already in the software business even if you are not a technical guy you can easily answer the question above. The problem is that most of the people don’t know. But still, why every company that sells software services try to convince its customers that they are on the Cloud?
Let’s start from the beginning. The traditional way of selling software was by providing a user license and a medium like a CD that someone can install on their computer or server. The next step was that the customer could just download and install the software but still the software was running on their computer/server and they own a license for it. The Software-as-a-Service is a business model that permits to sell your centrally hosted software with a subscription model .
SaaS has the two characteristics mentioned above: subscription and centrally hosted.
These two characteristics are where the confusion with Cloud services begins. Cloud came into the software business to deal with different problems. The main problem is the availability of resources in terms of processing power, storage, memory, network etc. Nowadays, services with thousands of subscribers need more resources and has to run 24/7 without delays, errors or interruptions. But how is that possible? Is there any software without bugs and problems? Is there any infrastructure that can support any number of users, traffic or transactions? The answer is obviously no. But. There are solutions for these issues. For example, it would be nice to have your software be restarted or reloaded if something goes wrong. It would be even nicer if you could have your service available from different servers in different datacenters in many locations on earth. It would be cost effective to have your server grow in computational power, memory or storage when you need it and then automatically downsize when your application needs are lower. This is what all the technologies hidden behind the word “Cloud”, actually do.
So, why everyone talks about the Cloud and means SaaS?
Two reasons:
First: They don’t understand the difference.
Second: To make your software Cloud-enabled is much much harder than make it SaaS-enabled and the Cloud sells better.
I only want to talk about the second one and to share my personal experience at my company, Cytech. For the last 14 years we develop our software for mobile messaging and marketing. We started selling it with a traditional model, installing it to the servers of our customers and support them remotely. Then in 2005 we begun to sell it as a service (SaaS). We had our own servers where we used to install an instance of the software for each of our customers and they were paying us on a monthly basis for the software, the hosting and the technical support.
In 2014, as our customers were becoming bigger with greater needs, we decided to move to the Cloud. We actually renamed our products name accordingly, “mCore Cloud”. Easier said than done! We thought that it would be easy as our software was already SaaS enabled. Wrong!
Or to be honest, it is easy to move your SaaS service to a public Cloud like Amazon or Rackspace but there is no point if you don’t exploit the benefits they offer.
The reason you move your app to the Cloud is because your customers want greater availability, fault tolerance, on-demand scalability and resources. But in order to provide all these, the Cloud is the least that you have to worry about. The bigger issue is always your software and the right question is: Is your software Cloud-ready? In our case it wasn’t. We install it on the Amazon Cloud in 2 days and everything worked perfectly except from the important part. No horizontal scalability, no resources on demand, no autoscaling. So we begun to redesign some parts of the software. Our first requirement was to be able to automatically start a new instance of the service in a different datacenter when the first one doesn’t respond. This way we could provide better availability and at the end of the day better SLA.
So we created an Autoscaling Group with an Elastic Load Balancer and we configured it to have one instance alive at a time. So when one of our instances stopped responding, it was reported by the Elastic Balancer who was periodically making health checks to our services. After 3 failed health checks, the Autoscaling mechanism decided to bring the first server down and start a new one to a different Availability Zone. The load balancer was notified and started to send traffic to the new server. The user experience was that the service was down for about 5 minutes, the time the whole process needed to complete.
The redesign and the configuration of the Amazon Cloud took us about 2 months and cost us more than 15K in man power. We are now in the process to rewrite some of our code so we can have horizontal scaling and we estimate it will take us more than the double time and money to do it. The goal is to have a robust software capable of supporting any number of users and traffic. This will permit us to have happy customers and a successful business.
So next time you listen someone talking about their Cloud-based software, ask them how fast they can support the next 10000 users or the next 10000 SMS per second in our case.