IP Library Granted Patent US 11,797,352
Granted Patent B2
US 11,797,352 · App. 17/510,178 · Granted Oct 24, 2023

SAAS infrastructure for flexible multi-tenancy

Inventors: Matt Moyer (Kansas City, MO); Chirag Divyakant Kapadia (Bothell, WA); Prakash Arumugam (Bellevue, WA); Fabio Yeon (Mill Creek, WA)
Assignee: VMware, Inc.
G06F9/5072G06F8/70G06F9/5077H04L61/4511H04L69/08
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,797,352
App. No.
17/510,178
Granted
Oct 24, 2023
Kind
B2
Abstract

Techniques for implementing a software-as-a-service (SaaS) infrastructure that supports flexible multi-tenancy are provided. In various embodiments, this SaaS infrastructure employs a hybrid design that can flexibly accommodate both single-tenant and multi-tenant instances of a SaaS application. Accordingly, with this infrastructure, a SaaS provider can advantageously support high levels of isolation between certain tenants of its application (as dictated by the tenants' needs and/or other criteria) while keeping the marginal cost of operating the infrastructure as low as possible.

Claims (49)

1. A method comprising:

receiving, by a global onboarding service for a software-as-a-service (SaaS) infrastructure, a request for onboarding a new customer to an application hosted on the SaaS infrastructure, wherein the SaaS infrastructure comprises a plurality of computing clusters, wherein each computing cluster includes a plurality of physical or virtual machines that concurrently support single-tenant and multi-tenant runtime instances of the application, and wherein the global onboarding service is separate from the plurality of computing clusters;

assigning, by the global onboarding service, a customer identifier and a unique domain name to the new customer;

determining, by the global onboarding service based on one or more criteria pertaining to a current configuration of the SaaS infrastructure, whether the new customer can be hosted on an existing runtime instance of the application in the SaaS infrastructure;

upon determining that the new customer can be hosted on an existing runtime instance, transmitting, by the global onboarding service, the customer identifier, the unique domain name, and an identifier of the existing runtime instance to a global tenancy service of the SaaS infrastructure; and

upon determining that the new customer cannot be hosted on an existing runtime instance;

identifying, by the global onboarding service, a computing cluster in the plurality of computing clusters where a new runtime instance of the application should be created for the new customer; and

transmitting, by the global onboarding service, a desired state of the new runtime instance to a lifecycle controller in the identified computing cluster, the desired state including a reference to a resource definition that defines a type of the new runtime instance, an image registry path for component images for the new runtime instance, and versions of the component images,

wherein upon receiving the desired state, the lifecycle controller is configured to create the new runtime instance in the identified computer cluster in accordance with the desired state and transmit a name, a network endpoint address, and a namespace of the new runtime instance to the global tenancy service.

2. The method of claim 1 wherein the one or more criteria include a number of existing customers currently hosted on each runtime instance of the application in the SaaS infrastructure.

3. The method of claim 1 wherein the determining is further based on one or more customer preferences or requirements included in the request.

4. The method of claim 3 wherein the one or more customer preferences or requirements includes a preference or requirement that application data of the new customer be isolated from other customers of the application.

5. The method of claim 3 wherein the one or more customer preferences or requirements includes a preference or requirement that the new customer be assigned to a runtime instance in a geographic region where a majority of users of the new customer reside.

6. The method of claim 1 further comprising:

generating a Domain Name System (DNS) routing record that maps the unique domain name to a network endpoint address of a computing cluster running the existing runtime instance; and

transmitting the DNS routing record to a DNS resolver communicatively coupled with the SaaS infrastructure.

7. A non-transitory computer readable storage medium having stored thereon program code executable by a global onboarding service of a software-as-a-service (SaaS) infrastructure, the program code embodying a method comprising:

receiving a request for onboarding a new customer to an application hosted on the SaaS infrastructure, wherein the SaaS infrastructure comprises a plurality of computing clusters, wherein each computing cluster includes a plurality of physical or virtual machines that concurrently support single-tenant and multi-tenant runtime instances of the application, and wherein the global onboarding service is separate from the plurality of computing clusters;

assigning a customer identifier and a unique domain name to the new customer;

determining, based on one or more criteria pertaining to a current configuration of the SaaS infrastructure, whether the new customer can be hosted on an existing runtime instance of the application in the SaaS infrastructure;

upon determining that the new customer can be hosted on an existing runtime instance, transmitting the customer identifier, the unique domain name, and an identifier of the existing runtime instance to a global tenancy service of the SaaS infrastructure; and

upon determining that the new customer cannot be hosted on an existing runtime instance:

identifying a computing cluster in the plurality of computing clusters where a new runtime instance of the application should be created for the new customer; and

transmitting a desired state of the new runtime instance to a lifecycle controller in the identified computing cluster, the desired state including a reference to a resource definition that defines a type of the new runtime instance, an image registry path for component images for the new runtime instance, and versions of the component images,

wherein upon receiving, the desired state, the lifecycle controller is configured to create the new runtime instance in the identified computer cluster in accordance with the desired state and transmit a name, a network endpoint address, and a namespace of the new runtime instance to the global tenancy service.

8. The non-transitory computer readable storage medium of claim 7 wherein the one or more criteria include a number of existing customers currently hosted on each runtime instance of the application in the SaaS infrastructure.

9. The non-transitory computer readable storage medium of claim 7 wherein the determining is further based on one or more customer preferences or requirements included in the request.

10. The non-transitory computer readable storage medium of claim 9 wherein the one or more customer preferences or requirements includes a preference or requirement that application data of the new customer be isolated from other customers of the application.

11. The non-transitory computer readable storage medium of claim 9 wherein the one or more customer preferences or requirements includes a preference or requirement that the new customer be assigned to a runtime instance in a geographic region where a majority of users of the new customer reside.

12. The non-transitory computer readable storage medium of claim 7 wherein the method further comprises:

generating a Domain Name System (DNS) routing record that maps the unique domain name to a network endpoint address of a computing cluster running the existing runtime instance; and

transmitting the DNS routing record to a DNS resolver communicatively coupled with the SaaS infrastructure.

13. A computer system running a global onboarding service of a software-as-a-service (SaaS) infrastructure, the computer system comprising:

a processor; and

a non-transitory computer readable medium having stored thereon program code that, when executed by the processor, causes the processor to:

receive a request for onboarding a new customer to an application hosted on the SaaS infrastructure, wherein the SaaS infrastructure comprises a plurality of computing clusters, wherein each computing cluster includes a plurality of physical or virtual machines that concurrently support single-tenant and multi-tenant runtime instances of the application, and wherein the global onboarding service is separate from the plurality of computing clusters;

determine, based on one or more criteria pertaining to a current configuration of the SaaS infrastructure, whether the new customer can be hosted on an existing runtime instance of the application in the SaaS infrastructure;

upon determining that the new customer can be hosted on an existing runtime instance, transmit the customer identifier, the unique domain name, and an identifier of the existing runtime instance to a global tenancy service of the SaaS infrastructure; and

upon determining that the new customer cannot be hosted on an existing runtime instance:

identify a computing cluster in the plurality of computing clusters where a new runtime instance of the application should be created for the new customer; and

transmit a desired state of the new runtime instance to a lifecycle controller in the identified computing cluster, the desired state including a reference to a resource definition that defines a type of the new runtime instance, an image registry path for component images for the new runtime instance, and versions of the component images,

wherein upon receiving, the desired state, the lifecycle controller is configured to create the new runtime instance in the identified computer cluster in accordance with the desired state and transmit a name, a network endpoint address, and a namespace of the new runtime instance to the global tenancy service.

14. The computer system of claim 13 wherein the one or more criteria include a number of existing customers currently hosted on each runtime instance of the application in the SaaS infrastructure.

15. The computer system of claim 13 wherein the determining is further based on one or more customer preferences or requirements included in the request.

16. The computer system of claim 15 wherein the one or more customer preferences or requirements includes a preference or requirement that application data of the new customer be isolated from other customers of the application.

17. The computer system of claim 15 wherein the one or more customer preferences or requirements includes a preference or requirement that the new customer be assigned to a runtime instance in a geographic region where a majority of users of the new customer reside.

18. The computer system of claim 13 wherein the processor is further configured to:

generate a Domain Name System (DNS) routing record that maps the unique domain name to a network endpoint address of a computing cluster running the existing runtime instance; and

transmit the DNS routing record to a DNS resolver communicatively coupled with the SaaS infrastructure.

Assignments (3)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
CHANGE OF NAME Recorded Feb 27, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066692/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2021
From: MOYER, MATT; KAPADIA, CHIRAG DIVYAKANT; ARUMUGAM, PRAKASH; YEON, FABIO
To: VMWARE INC.
Reel/Frame 057905/0856 →
Continuity (2)
Continuation 16848725 · Apr 14, 2020
Related Publication 20220043692A1 · Feb 10, 2022