Some embodiments relate to a multi-tenant application platform. More specifically, some embodiments relate to the tenant independent add-on software packages for an enterprise platform as a service product.
An application platform may execute applications (e.g., business enterprise processes) to provide business functions to a client. Efficiencies may be realized by providing functionality to multiple clients from a single application platform, which may be referred to as a “multi-tenant” application platform. Due to the sensitivity of business data, it may be preferable to isolate the data of each client (i.e., tenant) from the data of other tenants. More specifically, a tenant of a multi-tenant application platform may be unable to access the data of another tenant.
The multi-tenant application platform 100 may provide business solutions for small, medium, and/or large-sized companies. To provide appropriate business functionality for such a wide variety of groups, software packages called “add-ons” may be provided by independent software vendors, service centers, and/or the provider of the application platform 100. As used herein, the creators of add-on software packages are referred to as “partners” even if they are part of the organization that provides the application platform 100. The lifecycle management of the application platform 100 may be significant and may represent a relatively high share of the total cost of ownership of an information technology solution (e.g., lifecycle management of the application platform 100 may require highly skilled system administrators). Further, the development of add-on software packages is typically associated with a separate development system landscape (e.g., including a development system and/or an additional test systems for functional and performance testing).
The multi-function application platform 100 may offer services as Internet services and/or as an on demand service, such as a “platform as a service” product. In this case, typical ways of developing add-on software packages may not be sufficient to meet the requirements of a “cloud” development community. For example, it may be desirable to facilitate the development of add-on software packages without a dedicated system landscape for each partner and/or without highly skilled system administrators to provide a relatively low total cost of ownership for the application platform 100.
The following description is provided to enable any person in the art to make and use the described embodiments and sets forth the best mode contemplated for carrying out some embodiments. Various modifications, however, will remain readily apparent to those in the art.
The system 200 includes a platform as a service system 210 that may provide business solutions for a number of clients 220 (e.g., clients A through C). Moreover a number of partners 230 (e.g., partners A through C) may develop add-on software packages to enhance the solutions that are available to the clients 220. As illustrated in
Moreover, according to some embodiments the software packages associated with the enterprise platform as a service system 210 may be tenant independent. For example, a partner 230 may create add-on software packages via a Software Development Kit (“SDK”) against a development tenant in the development system 240 which is shared by other partners 230. The add-on software package may be registered centrally in the production system 250 and stored in a central service market place (e.g., an application store). The add-on software package may also be deployed to test tenant in a test system (not illustrated in
Note that the add-on software package deployment process may be associated with, for example, an initial customer implementation or an existing implementation (e.g., as a “change project”). Note that the deployment process may be associated with a merge of add-on content and application platform content that as appropriate to meet the business expectations of the customer. According to some embodiments, an add-on software package may be un-deployed from a customer production tenant after a trial phase (e.g., add-on software package is returned by the customer). According to some embodiments, an add-on software package may represent a change or patch to a prior add-one software package. For example, patched content may deployed on the system 200 and on the tenants in which the add-on software package is registered (and the patched add-on content may be merged with the remaining add-on content and the application platform content). In some cases, an add-on software package may be associated with an upgrade to a new version of the package (e.g., when a partner 230 develops new functions and/or features).
According to some embodiments, an add-on software package may be switched on (e.g., become available to and/or accessible by) with respect to partner A without being switched on with respect to partner B. Similarly, an add-on software package may be switched on with respect to client A without being switched on with respect to client B. For example,
Thus, embodiments may support multi-tenancy and/or multiple add-on abilities on a single system (e.g., add-on software packages may be tenant-independent, and be switched on tenant by tenant).
At S410, an add-on software package for an enterprise platform as a service product may be received from a partner. The add-on software package may have been created, for example, with a SDK and may be associated with: (i) an initial installation of the enterprise platform as a service product, (ii) a change to the enterprise platform as a service product, and/or (iii) a change to a prior add-on software package.
At S420, the add-on software package may be deployed to and developed at a multi-tenant development system. The multi-tenant development system may be, for example, associated with the enterprise platform as a service product and may store a plurality of development add-on software packages from a plurality of partners. According to some embodiments, the plurality of add-on software packages are stored in a central repository of the development system.
An indication associated with the add-on software package and a first tenant may be received at S430. For example, the indication might be retrieved from a table or received from an administrator via a UI. At S440, responsive to the received indication, a development add-on software package may be switched on for the first tenant (and not be switched on for a second tenant).
At S450, the add-on software package may be deployed to a multi-tenant production system associated with the enterprise platform as a service product, wherein the multi-tenant production system stores a plurality of production add-on software packages from a plurality of partners. Moreover, an indication associated with the add-on software package and the first customer tenant may be received, and, responsive to the received indication, the production add-on software package may be switched on for the first customer tenant (without being switched on for the second customer tenant). In this way, tenant independent add-on software packages may be provided in connection with multiple partners and/or customers. According to some embodiments, the add-on software package may also be removed or “un-deployed” from the development and/or the production systems.
According to some embodiments, the add-on software package may be stored as a source artifact, and a compiler may generate a generated artifact from the source artifact based on a scope of a customer selected in a business configuration work center. For example, source artifacts may belong to partners and a platform provider might avoid changing source artifacts (e.g. during an upgrade). Generated artifacts, however, may be changed by the platform provider (e.g. during an upgrade). Thus, an add-on software package may be associated with both a business content relevant solution and a “main” solution. The business content relevant part may be, for example, activated first in a customer tenant, and subsequently the customer perform a scope definition and/or configuration of the add-on software package. After finishing the definition and/or configuration, a final generated artifact may become visible in the customer system.
According to some embodiments, the process 400 of
Generally, the partner tool 510 and web dispatcher 520 may communicate via any internal or external network, networks, sub-network, or combination thereof operable to facilitate communications between various computing components inside and outside the illustrated landscape 500. The partner tool 510 and web dispatcher 520 may communicate, for example, Internet Protocol (“IP”) packets, Frame Relay frames, Asynchronous Transfer Mode (“ATM”) cells, voice, video, data, and other suitable information between network addresses. The landscape 500 may also include one or more Local Area Networks (“LANs”), Radio Access Networks (“RANs”), Metropolitan Area Networks (“MANs”), Wide Area Networks (“WANs”), all or a portion of the Internet, and/or any other communication system or systems at one or more locations.
Note that any of the devices illustrated in
The web dispatcher 520 may facilitate an exchange of information between the partner tool 510 and a partner development system 540 and partner development test system 542. The partner development system 540 may, for example be associated with a development tenant and an AAK engine and may access infrastructure systems 550, such as a Service Market Place (“SMP”) and/or Product and Production Management System (“PPMS”) databases. The partner development test system 542 may host a deployment test tenant and associated business content. According to some embodiments, a landscape directory 560 may store a central Service Provider Cockpit (“SPC”) and registry. A partner solution marketplace 530 may also be coupled to a customer production system 570 having a production tenant 572 and a test tenant 574 (each associated with business content). Note that the production tenant 572 and the test tenant 574 might be provided on different systems. According to some embodiments, content may be registered in PPMS of the landscape directory 560 and assembled and shipped to the SMP of the infrastructure systems 550. The content may then be deployed to the test tenant in the partner development test system 542 (and registered on the appropriate system and tenant) and the final content may be deployed to customer tenants in the customer production system 570.
According to some embodiments, each partner developing add-on software packages may access: (1) a development system, (2) a deployment test system, (3) a maintenance system, and (4) maintenance test system. That is, one tenant may be provided for each partner on each of these four systems (e.g., representing a “tenant quadruple”). Note that partners might develop, maintain and tests several add-ons in one tenant quadruple. Moreover, multiple partners may work with multiple add-on software packages on one system, and the add-ons are tenant-independent (switched on by tenant).
The deployment system 600 may further include a partner test system 620 and/or a quality test system 630 (e.g., to deploy and test potential solutions). A service provider cockpit 640 may receive test results from the quality test system 640, register an ad-on for installation, and/or trigger a system activation when a customer purchases an item in an add-on store 650. According to some embodiments, the add-on store 650 may list an add-on software package when it has been approved by the quality test system 630.
A service marketplace 660 may upload an add-on software package when it is received from the partner development system 610. Finally, a customer system 670 may deploy the add-on software package (after it is received from the service market place 660) and activate in business configuration as appropriate.
When a partner project is created, the following information might be provided and/or registered by the system 600: an ABAP namespace, and HTTP namespace for external communications (e.g., via web services) and potentially a unique namespace for internal content separations (e.g., of the generated artifacts), a product version (e.g., to be registered centrally in the PPMS), and a transport request number. Moreover, a partner add-on software package may consist of one software component containing a structure package, a package that contains transported “main” content, and a package that contains transported partner resource files from which BC content in a target system may be generated. According to some embodiments, there may be multiple software components when multiple projects are supported.
The following illustrates various additional embodiments of the invention. These do not constitute a definition of all possible embodiments, and those skilled in the art will understand that the present invention is applicable to many other embodiments. Further, although the following embodiments are briefly described for clarity, those skilled in the art will understand how to make any changes, if necessary, to the above-described apparatus and methods to accommodate these and other embodiments and applications.
Although specific hardware and data configurations have been described herein, note that any number of other configurations may be provided in accordance with embodiments of the present invention (e.g., some of the information associated with the applications and databases described herein may be combined or stored in separate systems). Similarly, although a particular information flow and user interactions have been given as examples, other and/or additional steps may be performed in accordance with any embodiments described herein.
The present invention has been described in terms of several embodiments solely for the purpose of illustration. Persons skilled in the art will recognize from this description that the invention is not limited to the embodiments described, but may be practiced with modifications and alterations limited only by the spirit and scope of the appended claims.