Single Tenant, Multitenant, Private and Public Clouds: Oh My!

My head is starting to hurt with all the back and forth among my Enterprise Irregulars buddies about the relationships between the complex concepts of Multitenancy, Private, and Public Clouds. A set of disjoint conversations and posts came together like the whirlpool in the bottom of a tub when it drains. I was busy with other things and didn’t get a chance to really respond until I was well and truly sucked into the vortex. Apologies for the long post, but so many wonderful cans of worms finally got opened that I just have to try to deal with a few of them. That’s why I love these Irregulars!

To start, let me rehash some of the many memes that had me preparing to respond:

While the benefits that multi-tenancy can provide are manifold for the vendor, these rationales don’t hold water on the user side.

That is not to say that customers can’t benefit from multi-tenancy. They can, but the effects of multi-tenancy for users are side-benefits, subordinate to the vendors’ benefits. This means, IMO, that a customer that looks at multi-tenancy as a key criteria for acquiring a new piece of functionality is basing their decision on factors that are not directly relevant to their TCO, all other factors being equal.

and:

Multi-tenancy promises to age gracelessly as this market matures.

Not to mention:

Most of the main benefits of multi-tenancy – every customer is on the same version and is updated simultaneously, in particular – are vendor benefits that don’t intrinsically benefit customers directly.

The implication being that someone somewhere will provide an alternate technology very soon that works just as good or better than multitenancy. Wow. Lots to disagree with there. My ears are still ringing from the sound of the steel gauntlet that was thrown down.

– Phil Wainewright took a little of the edge of my ire with his response post to Josh, “Single Tenancy, the DEC Rainbow of SaaS.” Basically, Phil says that any would-be SaaS vendor trying to create an offering without multitenancy is doomed as the DEC Rainbow was. They have some that sort of walks and quacks like a SaaS offering but that can’t really deliver the goods.

I think the pricing and services pressure of the multi-tenant vendors will force single-tenant vendors to make their offerings as compatible as possible. But as long as they are compatible with the promises of multi-tenancy, they don’t need to actually be multi-tenant to compete in the market.

That’s kind of like saying, “I’m right so long as nothing happens to make me wrong.” Where are the facts that show this counter case is anything beyond imagination? Who has built a SaaS application that does not include multitenancy but that delivers all the benefits?

Meanwhile back at the ranch (we EI’s need a colorful name for our private community where the feathers really start to fly as we chew the bones of some good debates), still more fascinating points and counterpoints were being made as the topic of public vs private clouds came up (paraphrasing):

– Is there any value in private clouds?

– Do public clouds result in less lock-in than private clouds?

– Are private clouds and single tenant (sic) SaaS apps just Old School vendors attempts to hang on while the New Era dawns? Attempts that will ultimately prove terribly flawed?

– Can the economics of private clouds ever compete with public?

– BTW, eBay now uses Amazon for “burst” loads and purchases servers for a few hours at a time on their peak periods. Cool!

– Companies like Eucalyptus and Nimbula are trying to make Private Clouds that are completely fungible with Public Clouds. If you in private cloud frameworks like these means you have
to believe companies are going to be running / owning their own servers for a long time to come even if the public cloud guys take over a number of compute workloads. The Nimbula guys built EC2 and they’re no dummies, so if they believe in this, there must be something to it.

– There are two kinds of clouds – real and virtual. Real clouds are multi-tenant. Virtual clouds are not. Virtualization is an amazing technology but it can’t compete with bottoms up multi-tenant platforms and apps.

Stop! Let me off this merry go-round and let’s talk.

What It Is and Why Multitenancy Matters

Sorry Josh, but Multitenancy isn’t marketing like Intel Inside (BTW, do you notice Intel wound up everywhere anyway? That wasn’t marketing either), and it matters to more than just vendors. Why?

Push aside all of the partisan definitions of multitenancy (all your customers go in the same table or not). Let’s look at the fundamental difference between virtualization and multitenancy, since these two seem to be fighting it out.

Virtualization takes multiple copies of your entire software stack and lets them coexist on the same machine. Whereas before you had one OS, one DB, and one copy of your app, now you may have 10 of each. Each of the 10 may be a different version entirely. Each may be a different customer entirely, as they share a machine. For each of them, life is just like they had their own dedicated server. Cool. No wonder VMWare is so successful. That’s a handy thing to do.

Multitenancy is a little different. Instead of 10 copies of the OS, 10 copies of the DB, and 10 copies of the app, it has 1 OS, 1 DB, and 1 app on the server. But, through judicious modifications to the app, it allows those 10 customers to all peacefully coexist within the app just as though they had it entirely to themselves.

Can you see the pros and cons of each? Let’s start with cost. Every SaaS vendor that has multitenancy crows about this, because its true. Don’t believe me? Plug in your VM software, go install Oracle 10 times across 10 different virtual machines. Now add up how much disk space that uses, how much RAM it uses when all 10 are running, and so on. This is before you’ve put a single byte of information into Oracle or even started up an app. Compare that to having installed 1 copy of Oracle on a machine, but not putting any data into it. Dang! That VM has used up a heck of a lot of resources before I even get started!

If you don’t think that the overhead of 10 copies of the stack has an impact on TCO, you either have in mind a very interesting application + customer combination (some do exist, and I have written about them), or you just don’t understand. 10x the hardware to handle the “before you put in data” requirements are not cheap. Whatever overhead is involved in making that more cumbersome to automate is not cheap. Heck, 10x more Oracle licenses is very not cheap. I know SaaS companies who complain their single biggest ops cost is their Oracle licenses.

However, if all works well, that’s a fixed cost to have all those copies, and you can start adding data by customers to each virtual Oracle, and things will be okay from that point on. But, take my word for it, there is no free lunch. The VM world will be slower and less nimble to share resources between the different Virtual Machines than a Multitenant App can be. The reason is that by the time it knows it even needs to share, it is too late. Shifting things around to take resource from one VM and give it to another takes time. By contrast, the Multitenant App knows what is going on inside the App because it is the App. It can even anticipate needs (e.g. that customer is in UK and they’re going to wake up x hours before my customers in the US, so I will put them on the same machine because they mostly use the machine at different times).

So, no, there is not some magic technology that will make multitenant obsolete. There may be some new marketing label on some technology that makes multitenancy automatic and implicit, but if it does what I describe, it is multitenant. It will age gracefully for a long time to come despite the indignities that petty competition and marketing labels will bring to bear on it.

What’s the Relationship of Clouds and Multitenancy?

Must Real Clouds be Multitenant?

Sorry, but Real Clouds are not Multitenant because they’re based on Virtualization not Multitenancy in any sense such as I just defined. In fact, EC2 doesn’t share a core with multiple virtual machines because it can’t. If one of the VM’s started sucking up all the cycles, the other would suffer terrible performance and the hypervisors don’t really have a way to deal with that. Imagine having to shut down one of the virtual machines and move it onto other hardware to load balance. That’s not a simple or fast operation. Multi-tasking operating systems expect a context switch to be as fast as possible, and that’s what we’re talking about. That’s part of what I mean by the VM solution being less nimble. So instead, cores get allocated to a particular VM. That doesn’t mean a server can’t have multiple tenants, just that at the granularity of a core, things have to be kept clean and not dynamically moved around.

Note to rocket scientists and entrepreneurs out there–if you could create a new hardware architecture that was really fast at the Virtual Machine load balancing, you would have a winner. So far, there is no good hardware architecture to facilitate a tenant swap inside a core at a seamless enough granularity to allow the sharing. In the Multicore Era, this would be the Killer Architecture for Cloud Computing. If you get all the right patents, you’ll be rich and Intel will be sad. OTOH, if Intel and VMWare got their heads together and figured it out, it would be like ole Jack Burton said, “You can go off and rule the universe from beyond the grave.”

But, it isn’t quite so black and white. While EC2 is not multitenant at the core level, it sort of is at the server level as we discussed. And, services like S3 are multitenant through and through. Should we cut them some slack? In a word, “No.” Even though an awful lot of the overall stack cost (network, cpu, and storage) is pretty well multitenant, I still wind up installing those 10 copies of Oracle and I still have the same economic disadvantage as the VM scenario. Multitenancy is an Application characteristic, or at the very least, a deep platform characteristic. If I build my app on Force.com, it is automatically multitenant. If I build it on Amazon Web Services, it is not automatic.

But isn’t there Any Multitenant-like Advantage to the Cloud? And how do Public and Private Compare?

Yes, there are tons of benefits to the Cloud, and through an understanding and definition of them, we will tease out the relationship of Public and Private Clouds. Let me explain…

There are two primary advantages to the Cloud: it is a Software Service and it is Elastic. If you don’t have those advantages, you don’t have a Cloud. Let’s drill down.

The Cloud is a Software Service, first and foremost. I can spin up and control a server entirely through a set of API’s. I never have to go into a Data Center cage. I never have to ask someone at the Data Center to go into the Cage (though that would be a Service, just not a Software Service, an important distinction). This is powerful for basically the same reasons that SaaS is powerful versus doing it yourself with On-prem software. Think Cloud = SaaS and Data Center = On Prem and extrapolate and you’ll have it.

Since Cloud is a standardized service, we expect all the same benefits as SaaS:

– They know their service better than I do since it is their whole business. So I should expect they will run it better and more efficiently.

– Upgrades to that service are transparent and painless (try that on your own data center, buddy!).

– When one customer has a problem, the Service knows and often fixes it before the others even know it exists. Yes Josh, there is value in SaaS running everyone on the same release. I surveyed Tech Support managers one time and asked them one simple question: How many open problems in your trouble ticketing system are fixed in the current release? The answers were astounding–40 to 80%. Imagine a world where your customers see 40 to 80% fewer problems. It’s a good thing!

– That service has economic buying power that you don’t have because it is aggregated across many customers. They can get better deals on their hardware and order so much of it that the world will build it precisely to their specs. They can get stuff you can’t, and they can invest in R&D you can’t. Again, because it is aggregated across many customers. A Startup running in the Amazon Cloud can have multipe redundant data centers on multiple continents. Most SaaS companies don’t get to building multiple data centers until they are way past having gone public.

– Because it is a Software Service, you can invest your Ops time in automation, rather than in crawling around Data Center cages. You don’t need to hire anyone who knows how to hot swap a disk or take a backup. You need peeps who know how to write automation scripts. Those scripts are a leveragable asset that will permanently lower your costs in a dramatic way. You have reallocated your costs from basic Data Center grubbing around (where does this patch cable go, Bruce?), an expense, to actually building an asset.

The list goes on.

The second benefit is Elasticity. It’s another form of aggregation benefit. They have spare capacity because everyone doesn’t use all the hardware all the time. Whatever % isn’t utilized, it is a large amount of hardware, because it is aggregated. It’s more than you can afford to have sitting around idle in your own data center. Because of that, they don’t have to sell it to you in perpetuity. You can rent it as you need it, just like eBay does for bursting. There are tons of new operational strategies that are suddenly available to you by taking advantage of Elasticity.

Let me give you just one. For SaaS companies, it is really easy to do Beta Tests. You don’t have to buy 2x the hardware in perpetuity. You just need to rent it for the duration of the Beta Test and every single customer can access their instance with their data to their heart’s content. Trust me, they will like that.

What about Public Versus Private Clouds?

Hang on, we’re almost there, and it seems like it has been a worthwhile journey.

Start with, “What’s a Private Cloud?” Let’s take all the technology of a Public Cloud (heck, the Nimbulla guys built EC2, so they know how to do this), and create a Private Cloud. The Private Cloud is one restricted to a single customer. It’d be kind of like taking a copy of Salesforce.com’s software, and installing it at Citibank for their private use. Multitenant with only one tenant. Do you hear the sound of one hand clapping yet? Yep, it hurts my head too, just thinking about it. But we must.

Pawing through the various advantages we’ve discussed for the Cloud, there are still some that accrue to a Cloud of One Customer:

– It is still a Software Service that we can control via API’s, so we can invest in Ops Automation. In a sense, you can spin up a new Virtual Data Center (I like that word better than Private Cloud, because it’s closer to the truth) on 10 minutes notice. No waiting for servers to be shipped. No uncrating and testing. No shoving into racks and connecting cables. Push a button, get a Data Center.

– You get the buying power advantages of the Cloud Vendor if they supply your Private Cloud, though not if you buy software and build your Private Cloud. Hmmm, wonder what terminology is needed to make that distinction? Forrester says it’s either a Private Cloud (company owns their own Cloud) or a Hosted Virtual Private Cloud. Cumbersome.

But, and this is a huge one, the granularity is huge, and there is way less Elasticity. Sure, you can spin up a Data Center, but depending on its size, it’s a much bigger on/off switch. You likely will have to commit to buy more capacity for a longer time at a bigger price in order for the Cloud Provider to recoup giving you so much more control. They have to clear other customers away from a larger security zone before you can occupy it, instead of letting your VM’s commingle with other VM’s on the same box. You may lose the more multitenant-like advantages of the storage cluster and the network infrastructure (remember, only EC2 was stuck being pure virtual).

What Does it All Mean, and What Should My Company Do?

Did you see Forrester’s conclusion that most companies are not yet ready to embrace the Cloud and won’t be for a long time?

I love the way Big Organizations think about things (not!). Since their goal is preservation of wealth and status, it’s all about risk mitigation whether that is risk to the org or to the individual career. A common strategy is to take some revolutionary thing (like SaaS, Multitenancy, or the Cloud), and break it down into costs and benefits. Further, there needs to be a phased modular approach that over time, captures all the benefits with as little cost as possible. And each phase has to have a defined completion so we can stop, evaluate whether we succeeded, celebrate the success, punish those who didn’t play the politics well enough, check in with stakeholders, and sing that Big Company Round of Kumbaya. Yay!

In this case, we have a 5 year plan for CIO’s. Do you remember anything else, maybe from the Cold War, that used to work on 5 year plans? Never mind.

It asserts that before you are ready for the Cloud, you have to cross some of those modular hurdles:

A company will need a standardized operating procedure, fully-automated deployment and management (to avoid human error) and self-service access for developers. It will also need each of its business divisions – finance, HR, engineering, etc – to be sharing the same infrastructure. In fact, there are four evolutionary stages that it takes to get there, starting with an acclimation stage where users are getting used to and comfortable with online apps, working to convince leaders of the various business divisions to be guinea pigs. Beyond that, there’s the rollout itself and then the optimization to fine-tune it.

Holy CYA, Batman! Do you think eBay spent 5 years figuring out whether it could benefit from bursting to the Cloud before it just did it?

There’s a part of me that says if your IT org is so behind the times it needs 5 years just to understand it all, then you should quit doing anything on-premise and get it all into the hands of SaaS vendors. They’re already so far beyond you that they must have a huge advantage. There is a another part that says, “Gee guys, you don’t have to be able to build an automobile factory as good as Toyota to be able to drive a car.”

But then sanity and Political Correctness prevail, I come back down to Earth, and I realize we are ready to summarize. There are 4 levels of Cloud Maturity (Hey, I know the Big Co IT Guys are feeling more comfortable already, they can deal with a Capability and Maturity Model, right?):

Level 1: Dabbling. You are using some Virtualization or Cloud technology a little bit at your org in order to learn. You now know what a Machine Image is, and you have at least seen a server that can run them and swapped a few in and out so that you experience the pleasures of doing amazing things without crawling around the Data Center Cage.

Level 2: Private Cloud. You were impressed enough by Level 1 that you want the benefits of Cloud Technology for as much of your operation as you can as fast as you can get it. But, you are not yet ready to relinquish much of any control. For Early Level 2, you may very well insist on a Private Cloud you own entirely. Later stage Level 2 and you will seek a Hosted Virtual Private Cloud.

Level 3: Public Cloud. This has been cool, but you are ready to embrace Elasticity. You tripped into it with a little bit of Bursting like eBay, but you are gradually realizing that the latency between your Data Center and the Cloud is really painful. To fix that, you went to a Hosted Virtual Private Cloud. Now that your data is in that Cloud and Bursting works well, you are realizing that the data is already stepping outside your Private Cloud pretty often anyway. And you’ve had to come to terms with it. So why not go the rest of the way and pick up some Elasticity?

Level 4: SaaS Multitenant. Eventually, you conclude that you’re still micromanaging your software too much and it isn’t adding any value unique to your organization. Plus, most of the software you can buy and run in your Public Cloud world is pretty darned antiquated anyway. It hasn’t been rearchitected since the late 80’s and early 90’s. Not really. What would an app look like if it was built from the ground up to live in the Cloud, to connect Customers the way the Internet has been going, to be Social, to do all the rest? Welcome to SaaS Multitenant. Now you can finally get completely out of Software Operations and start delivering value.

BTW, you don’t have to take the levels one at a time. It will cost you a lot more and be a lot more painful if you do. That’s my problem with the Forrester analysis. Pick the level that is as far along as you can possibly stomach, add one to that, and go. Ironically, not only is it cheaper to go directly to the end game, but each level is cheaper for you on a wide scale usage basis all by itself. In other words, it’s cheaper for you to do Public Cloud than Private Cloud. And it’s WAY cheaper to go Public Cloud than to try Private Cloud for a time and then go Public Cloud. Switching to a SaaS Multitenant app is cheaper still.

Welcome to crazy world of learning how to work and play well together when efficiently sharing your computing resources with friends and strangers!

cloudsigmasaid

1. One key performance metric for multi-tenant clouds is contention. RAM and storage can’t really be contended at the moment but CPU can. Different clouds apply different contention ratios to their CPU allocation. Obviously there is no concept of contention in a single tenant environment. As such, I think a key metric for people to understand when using a multi-tenant cloud is the contention that they are facing for resources. There are significant differences in the level of contention between clouds and it has a direct impact on performance.

2. The KVM hypervisor does allow sensible sharing of CPU cores between virtual machines which is why KVM based clouds (such as ourselves) are able to offer a much higher level of granularity with respect to resource size for customers.

[…] My head is starting to hurt with all the back and forth among my Enterprise Irregulars buddies about the relationships between the complex concepts of Multitenancy, Private, and Public Clouds. A set of disjoint conversations and posts came together like the whirlpool in the bottom of a tub when it drains. I was busy with other things and didn't get a chance to really respond until I was well and truly sucked into the vortex. Apologies for the … Read More […]

I’m a long time reader/fan as you write about subjects very relevant to us. Much appreciated! I’ve couple of comments/questions to further analyze/test the essential nature of multi tenancy.

– What if the application requires more than one server per customer anyway? Multi-tenancy benefits seem to be more apparent for apps with smaller footprint where many customers are sharing resources on the box.

– “Compare that to having installed 1 copy of Oracle on a machine” this sounds a bit of a straw man argument. Applications have multiple layers. What if your database (oracle or something else) is shared, but the application itself (where the code is) resides on a separate server (or servers) per customer? It is not hard to have multiple database instances on a single Oracle installation. Installing 10 oracle copies on a single box sounds ridiculous, but running 10 different java apps on a single JVM does not have whole a lot more overhead compared to single app (as long as the number of users are the same). And if your customers use more than one server anyway, potential resource efficiencies that would be introduced by multi-tenancy diminishes.

– “When one customer has a problem, the Service knows and often fixes it before the others even know it exists”. I may be misunderstanding something. Can you not have multiple copies of your application but use the same code base? Can’t you fix the code in all instances of your app at once as long as the code base is the same?

– “Where are the facts that show this counter case is anything beyond imagination” AFAIK service-now.com uses a single tenant architecture, which may serve as an example here. Service-now.com mainly competes which large traditional vendors (IBM, BMC, HP, etc.) Their offering is significantly more competitive (better/drastically cheaper) than the traditional vendors. As a result, I don’t think customers care that much whether they are single/multi tenant, at least not as much as they care about several other things, as such service-now.com success has little correlation to whether or not they use multi tenant architecture. There are many other factors they can differentiate themselves from other SaaS vendors (like their feature set and flexibility) and compete with traditional vendors effectively.

I don’t mean to say multi-tenancy is not important. It is indeed very important, but I’m not sure it is a sacred cow so to speak. We’ve started with our journey as multi-tenancy as a must have, but increasingly running into decisions where return on investment in multi tenancy is not apparent. Given finite resources one has at hand it is almost a matter of priority, and we’re running into situations where single tenant approach actually has advantages as well.

– Yes, there are cases where a single tenant spans more than one server. They are rare. A single server will run quite a lot of users for most apps. At my last company it was good for about 2 million. Even if it were only good for 10,000, that’s still quite a large company! In any event, I provided a link to an earlier post that delves into this topic. Look for the link next to “Some do exist”.

– That database argument is no straw man. I used the unit of a server for simplicity. Consider a “pod”, the smallest “hotel” for many tenants. It may be several servers, but the argument still applies. If your app is written so the db is shared, it is multitenant by definition, and so again the argument applies. If I run 10 Java apps on 1 JVM, that’s also a multitenant app.

– RE running everyone on the same release, yes, sure you should do that whether or not you have multitenant. That’s my point, and in fact I used the example in a non-multitenant case of the Cloud Service.

– That ServiceNow competes well with traditional on-prem doesn’t provide the counter example needed. If ServiceNow (assuming it is not multitenant) could compete well against a multitenant app with equivalent functionality, that would be the example. Having looked at ServiceNow in depth, I can tell you that if it isn’t multitenant, they could get considerable savings by making it multitenant and would not fare well against a well-written multitenant competitor.

If you’re not seeing the return on multitenancy, you need to re-evaluate the economics of the application you’re creating. Perhaps your customers are so large you can’t fit many on a server. That’s one thing. But most apps and markets, if they’re well implemented, can. As I mention, we could fit 2 million users on a single server. That equated to a cost, including ops personnell costs of about 5 cents per year. Those are economics no SaaS business can afford to ignore.

I guess we’re one of these cases. When you’re targeting the large enterprise (as opposed to SMB)a single customer can easily use multiple servers. Number of users is not a good indicator alone in our case since the app has to process large amounts of data.

Based on your definition we still have a multi tenant arch as our data store is shared (not relational), we’re just implementing the app as separate instances for customers, don’t think we need to worry about sharing a server for the app for the reason I mentioned above, but the architecture does not prevent us from sharing if we needed to.

I thought service-now is a good example because it demonstrates that it is important to ask the right question, not just what the answer is. Service-now does not need to compete with other SaaS providers, they are competing with traditional vendors as such they needed to focus on how to compete with them, and they’ve been doing that really well. Another SaaS provider cannot challenge their dominance in their chosen target market by simply being multitenant, as there are many other factors, including time to market. For example if having a multitenant architecture will cost you 6-12 months extra, a competitor can establish in the mean time. Technical superiority is hardly the only factor (it’s not even the primary factor) that impacts success of a company in IT enterprise software market.

adriancockcroftsaid

The bottom line is that i would like to be an insignificant proportion of a public cloud’s capacity, and by definition you cant be an insignificant proportion of your own private cloud.

You have the EC2 multi tenancy by core thing wrong, however. If you check vmstat on your EC2 instance you find an extra CPU state column called “stolen” which is the amount of time that you were ready to run on the CPU but were delayed by another tenant. When we see this go in to 20-40% range we kill and redeploy our instance. It happens a lot more on the m1.small instances, which I guess are oversubscribed. i.e. They probably assign more than 8 tenants to an 8 core host. Any CPU intensive services should be run on larger instance types.

Adrian, not clear on the core sharing issue. Many have written about the stolen CPU cycles, but they aren’t necessarily going to competing VM’s. Several sources I’m familiar with who claim inside knowledge say they don’t oversubscribe the cores–you get what you pay for 100%. Here is one that’s public about that claim:

It really doesn’t matter though, because what is clear from many people’s experience, is the performance of an instance can go to pot suddenly and through no fault of your own app (i.e. something external is going on). Many, including that link, have speculated it has more to do with I/O saturation than cores and I tend to agree. Looking at my own experience with the phenom, it is mostly likely to happen when I/O on MySQL got saturated.

Your strategy of immediately bopping over to a new instance is one that we hit on too and it works. Also, your point is that you want to be an insignificant portion of your cloud’s capacity is key, and this was one of my points of comparison for elasticity of public vs private clouds.

[…] and that’s why multi-tenancy matters. Yet even Bob Warfield, who’s on my side of the argument, can write, “There are two primary advantages to the Cloud: it is a Software Service and it is Elastic.” […]

[…] Posts Memcached: When You Absolutely Positively Have to Get It To Scale the Next DaySingle Tenant, Multitenant, Private and Public Clouds: Oh My!Microsoft's Extraordinary Quarter, Valuations, and "Who Owns the Cash?"Apple's Greatest Strength and […]