{"id":673,"date":"2011-05-13T08:10:28","date_gmt":"2011-05-13T15:10:28","guid":{"rendered":"http:\/\/upon2020.com\/?p=673"},"modified":"2011-05-12T20:13:56","modified_gmt":"2011-05-13T03:13:56","slug":"there-is-no-multi-tenant-architecture-there-are-three","status":"publish","type":"post","link":"https:\/\/upon2020.com\/blog\/2011\/05\/there-is-no-multi-tenant-architecture-there-are-three\/","title":{"rendered":"There Is No Multi-Tenant Architecture: There Are Three!"},"content":{"rendered":"<p>I&#8217;ve heard the term &#8220;multi-tenancy&#8221; hurled at somebody as an attack about once too often now. Could we at least agree that there are several different kinds (I count three) of multi-tenancy, and they have different tradeoffs?<\/p>\n<h2>1. Application-level Multi-Tenancy<\/h2>\n<p>Salesforge, Gmail, and most SaaS businesses come to mind: they run all of their customers on a single application (and database) instance. Or if they run multiple application instances, many customers are assigned to the same instance; no customer on the same plan has any particular computing resource with their name on it.<\/p>\n<h2>2. Hypervisor-level Multi-Tenancy<\/h2>\n<p>IaaS vendors like Amazon Web Services, Rackspace, GoGrid etc. practice multi-tenancy at the opposite end: multiple tenants share the same hardware, but each of them has an entire (virtual) computer for them with separate instances of operating system and applications.<\/p>\n<h2>3. Middleware-level Multi-Tenancy<\/h2>\n<p>And then we have something in the middle. Some of the Platform-As-A-Service products like Heroku do this: each customer runs their own application, but all share the same hardware and operating system. Good old-style shared hosting is also in this camp.<\/p>\n<h2>[4. Others<\/h2>\n<p>For completeness, a colocation facility with hardware from different customers would also use the label &#8220;multi-tenant&#8221; with justification: multiple customers, aka tenants, rent space in the same data center and share the facilities. That&#8217;s usually not what we mean in computing, but that&#8217;s what the word means originally!]<\/p>\n<p>&nbsp;<\/p>\n<p>It&#8217;s obvious also that these different versions of multi-tenancy have different pros and cons:<\/p>\n<ul>\n<li>Application-level multi-tenancy is probably the most resource-efficient: there are no copies of anything. The downside is that all of those customers really better have the same requirements, because customer-specific changes are, by definition, impossible: everybody must share the same code.<\/li>\n<li>Hypervisor-level multi-tenancy has copies of operating system, middleware and applications for all tenants, so it&#8217;s less efficient. But then, these customers can do pretty much anything they please and won&#8217;t step on each others&#8217; feet.<\/li>\n<li>Middleware-level multi-tenancy is somewhere in the middle, having all the drawbacks of application-level and none of the advantages of hypervisor-level multi-tenancy (or was it the other way around? ;-) just kidding)<\/li>\n<\/ul>\n<p>So next time somebody screams: &#8220;but it&#8217;s not multi-tenant, so it isn&#8217;t cloud!&#8221; (ignoring that we have even less of a clue what &#8220;cloud&#8221; might be) let&#8217;s politely respond: which kind of multi-tenancy does it have to be for you? It seems to me that all of them have their justifications &#8230;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve heard the term &#8220;multi-tenancy&#8221; hurled at somebody as an attack about once too often now. Could we at least agree that there are several different kinds (I count three) of multi-tenancy, and they have different tradeoffs? 1. Application-level Multi-Tenancy Salesforge, Gmail, and most SaaS businesses come to mind: they run all of their customers&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled":false,"footnotes":""},"categories":[58,23],"tags":[170,512,172,173,174,149,167,166,169,147,150,171,168],"class_list":["post-673","post","type-post","status-publish","format-standard","hentry","category-big_picture","category-cloud","tag-architecture","tag-cloud","tag-gmail","tag-heroku","tag-hypervisor","tag-iaas","tag-multi","tag-multi-tenant","tag-multitenant","tag-paas","tag-saas","tag-salesforce","tag-tenant","kind-"],"kind":false,"_links":{"self":[{"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/posts\/673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/comments?post=673"}],"version-history":[{"count":4,"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/posts\/673\/revisions"}],"predecessor-version":[{"id":677,"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/posts\/673\/revisions\/677"}],"wp:attachment":[{"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/media?parent=673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/categories?post=673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/upon2020.com\/blog\/wp-json\/wp\/v2\/tags?post=673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}