Having worked at Salesforce.com for several years now, I have been immersed in the world of Cloud and I have witnessed first hand how an enterprise class application could scale in such an environment. It has been fascinating all along and that experience has been truly put to use as I have been dealing with ISV (Independent Software Vendors) partners in the last few months for Salesforce.
As I talk to CEOs and CTOs of those ISV who want to work with us, the question of the architectural choice they have made comes every single time: Is your offering Cloud based or on-premise? Is it truly Multi-tenant or more of a shared hosted solution? What I came to realize through those conversations is that the choice those companies made early on is definitely something that is very impactful to their business and that once it is made, it is extremely hard to change. That difficulty can have huge consequences on your ability to scale, your ability to innovate, your ability to lead and even your ability to exit!
As a consequence, I would like to write a piece of advice, or at least a bit of guidance to all of you, early entrepreneurs, who are thinking about building software: Should you go Cloud or not, and if so what type of Cloud offering should you pursue? What I hope from this post is that you will realize that this decision should not be taken lightly and should definitely not be an afterthought, but above all, it should be made early.
Cloud, Multi-tenant, On-premise.. What is all this??
Let’s quickly recap what Cloud, multi-tenant or on-premise mean (I’ll stay very high level here):
- A Cloud application does not live on your customers infrastructure(usually). The customer connects to your application via a basic Web Browser. Most of the time those solutions are sold on a subscription basis.
- An On-Premise solution usually lives on the customers infrastructure. The customer owns servers and potentially spaces in data centers to run the software. Usually those solutions are sold through a one time license and some yearly maintenance fee that gives access to upgrades and patches.
Cloud based solution can have (roughly) two flavors: Hosted or Multi-tenant.
- A Hosted solution usually means that despite the fact that the customer accesses your solution through the Web and has a subscription service they pay, the application lives in its own container called “instance”. Each customer has its own instance with its own engine and Database. There is literally a virtual separation between each customers instance.
- A multi-tenant solution usually means that the Database as well as the application is unique and access for each customer is controlled through some meta-data layer. Everything is shared and security is ensured at the query level rather than at the virtual infrastructure level.
So what are the implications of each of those solutions for an early startup?
Let’s assume you start with an on-premise solution
Let’s say you start on-premise (just like many of the enterprise solution providers out there started many years ago). Here is how your business will go:
- Your sales representative will be compensated on the licenses they sell. Usually those up-front licensing costs are high: the customer “Buys” the software. That’s usually pretty attractive when you start because:
- You get more upfront cash which can fuel your growth
- You don’t have to have a security conversation with your customers which will ask where the data resides and how secure it is, etc.. so sells are a bit easier.
- You will have happy sales guys because they will get high bonuses
So it all starts pretty well, but then as your business grows, this is what happens:
Your customers are not upgrading which means you have to maintain several versions of your software which drives your support and development costs up. You have to release patches for several versions and you have to train your support crew on several versions.. this could quickly become a nightmare. So to reduce this cost you revert to a fewer releases which drives down your ability to innovate fast, react to new market trends and lead ahead of the competition as you cannot afford to manage too many versions and at the same time and you cannot force your customers to upgrade.
You realize that the new hardware that a customer has added to their machine is causing issue so you have to handle hardware specific patches, or your virtual machine provider has released a patch that is also causing problems with your application but that only happened for a subset of your customers..
Your sales guys constantly have find new customers because your revenue is dependent mostly on this one-time licensing fee that you charge and if they don’t get new deals they don’t get the nice bonuses they use to have.
Some prospects are worried about the seasonality of their business and how quickly they can scale up and down and also deploy mobile apps.. Well with your on-premise solutions Mobile access is not that simple as your customers need to open their Firewalls to give access to the servers that host your App. And by the way, they also need to integrate with other solutions, and some of them are Cloud based, so do you offer some kind of standardized platform where partners can create those hooks?
As a business owner you look at this, you look at your costs, you look at the market trend and the growth of the Cloud and you decide that it’s time for you to start providing a Cloud based solution..
This is where things really start breaking.
From on-premise to cloud: the equivalent of a pivot, but harder!
Your sales force has been trained to pitch the value of on-premise versus cloud and all your customers have bought into this vision. Now you have to go tell them that Cloud is better! If you don’t, you will have to manage yet another version of your offering and increase your costs even more.
Of course, you don’t want to re-code everything as multi-tenant, it would take you months if not years as the architecture are fundamentally different. Your developers would be frustrated and your customers may not have the patience. You may even loose the precious lead you had on your competition in terms of product features. Multi-tenant is a no-go, so you decided to go hosted.
Going hosted is easy enough, you basically take the on-premise App you have, hopefully you had a web browser front-end instead of a desktop application (if not you are really in trouble), and you put it in your own infrastructure.. You change your licensing model to be subscription based and you are good to go: You have a nice Cloud bases solution.
Well it’s not that easy..
First, you still had to spend an ungodly amount of cash to build or rent your datacenter in the meantime though. You will have to swallow that as the revenue of a Cloud based offering are also much more progressive, no big one-time fee here.
Second, your sales guys won’t like this and will always sell the on-premise version if they can. They will come in a deal leading with Cloud, start pitching and revert to the on-premise every time. Maybe you mitigate this with two different sales units, one for Cloud solutions and one for on-premise, but you will rapidly enter a turf war internally. I have seen this over and over. That means your cloud solutions will have a very hard time picking up.
The maintenance of the hosted solution is also going to be the same nightmare as it was for the on-premise.. When you upgrade you have to go through each instance individually and upgrade them one by one. The problem is that your customers will always tell you that it’s not a good time and it takes weeks if not months to upgrade everyone. By that time you may already have a new version available.
Going hosted you haven’t solved anything.. you made it worth. You have sales that don’t want to sell your stuff, you have support and maintenance nightmares and you lost your innovative power.
Let’s continue the story. You are resourceful and with your strong leadership you have been able to change the culture of your company and everyone is behind you now.. your hosted solution has taken off and you have an opportunity to exit with one of the leading firm in the Cloud.
Looking at an exit? Tough luck…
The company (fictional) that is looking at your business was attracted by you because of your Cloud offering. Their IT is looking at your architecture and realized that you host many instances of your solution.. There is nothing multi-tenant and basically the integration story will be almost impossible as everything will have to be re-written to be compatible with multi-tenant. Your support organization will be cut drastically as well as you have way to many and all your customer base will have to be migrated as heavy costs which means there is a good chance of attrition. How do you think the acquiring company will feel about your business? not so sexy anymore. Of course it can happen, but what multiple will you get?
So what about multi-tenant then?
Very quickly, multi-tenant means you ARE Cloud. You develop 1 version, you maintain 1 version, you upgrade everyone at once, you are nimble and innovative and you will crush your competition. Your sales will be trained on 1 message, compensated on 1 model, and customers will grow with you, making you a very good target for a beautiful exit.
One element often forgotten about hosted versus multi-tenant is that a hosted solution will never be able to grow your customer base in the SMB market if that is what you plan on doing (either as a start or if you want to go down market later). Spinning up a new instance and maintaining that instance for a customer with 2 seats will definitely not be worth the time. A Multi-tenant architecture on the other hand, doesn’t care if you are 1 or 10,000, the cost of deploying and maintaining each customer comes down to a cost per seat (roughly). Small business are subject to the same level of quality and care as the big customers and your overall level of service is much higher.
Summary: choose wisely and choose early… (my advice: choose multi-tenant!)
I took a very simplistic approach to the story, but hopefully you now have a better understanding of what it could mean to start with the wrong architecture. Going on-premise may be simple, or even hosted to start with, but the consequences on the growth of your company, the costs, the innovation and flexibility you will have to adapt to a rapidly changing market and the ability to exit may be really impacted and depending on your business strategy and goals could even be detrimental.
I truly believe in the Cloud but I also truly believe in multi-tenant. There are many different ways to architect your solution with some hybrid solutions but always keep in mind the maintenance costs they will generate assuming customers will not upgrade if they can avoid it.. Some customers are very sensitive to cloud solutions like in the banking industry but salesforce has proven that with the right security, the right message and with enough benefits, even the banks will follow you.