DETAILED ACTION
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Election/Restrictions
Applicant's election with traverse of Group II in the reply filed on 6/17/2026 is acknowledged. The traversal is on the ground(s) that Examiner has failed to establish a serious search and/or examination burden with respect to Groups I and II. This is not found persuasive because as stated in the Restriction Requirement, the inventions are independent or distinct as subcombinations usable together. In the instant case, subcombination II, claims 8-20, has separate utility such as giving administrators and/or users recommendations on when a service hosted on a cloud computing platform can benefit from being migrated to another cloud computing platform. Additionally, Examiner has shown that there would be a serious search and/or examination burden because Group I is classified in G06F8/60 and related areas, whereas, Group II is classified in G06F9/4875.
The requirement is still deemed proper and is therefore made FINAL.
Claims 8-20 and 26-37 are pending in this application.
Information Disclosure Statement
The IDS filed on 4/24/2024 has been considered.
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claims 8-15 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
Claim 8 recites the limitation "the machine." There is insufficient antecedent basis for this limitation in the claim. Claims 9-15 are dependent claims.
Claims 8-15 and 26-37 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
The term “cloud provider neutral format” in claims 8 and 26 is a relative term which renders the claim indefinite. The term “cl” is not defined by the claim, the specification does not provide a standard for ascertaining the requisite degree, and one of ordinary skill in the art would not be reasonably apprised of the scope of the invention. The specification does not give any indication as to what is considered a cloud provider neutral format. Is it a specific type a machine-readable file, such as JSON or XML? Thus, the limitation is claims 8 and 26 of “in response to receiving a migration request to migrate a service, obtain and translate a current cloud deployment script, used by a first cloud computing platform to host the service, from a machine-readable format of the first cloud computing platform into a service representation having a cloud provider neutral format” is indefinite and renders the claim as a whole indefinite.
As per claims 9-15 and 27-37, they are dependent claims of claims 8 and 26, respectively, so they are rejected for similar reasons.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 8-15 and 26-37 are rejected under 35 U.S.C. 103 as being unpatentable over Sikkink et al (US Pub. No. 2024/0296036 A1 hereinafter Sikkink) in view of Velammal et al. (US Pub. No. 2023/0188613 A1 hereinafter Velammal).
As per claim 8, Sikkink teaches a computing device, comprising: a memory comprising machine executable code; and a processor coupled to the memory (¶ [0024], “One or more of the subsystems of software deployment supervisor 130 may be implemented on one or more processors 230 that execute instructions 234 (i.e., computer readable code) for software that are loaded into memory 232. A processor 230 comprises an integrated hardware circuit configured to execute instructions 234 to provide the functions of software deployment supervisor 130.”), the processor configured to execute the machine executable code to cause the machine to: in response to a redeploy request to redeploy a service, obtain and translate a current cloud deployment script, used by a first cloud computing platform to host the service (¶ [0031]-[0032], “As shown in FIG. 2, deployment manager 204 may be provisioned with one or more scripts 210-213 that automate deployment of software. As computing platforms 102 may use different commands, different names for resources, different APIs, etc., each script 210-213 may be customized or specific to an individual computing platform 102. For example, script 210 may be customized or specific to on-premise computing platform 110, script 211 may be customized or specific to cloud computing platform 111, script 212 may be customized or specific to cloud computing platform 112, and script 213 may be customized or specific to cloud computing platform 113. Deployment manager 204 may then run or execute the script 210-213 associated with the host computing platform 480 to automatically deploy the software 142…Although the host computing platform 480 may be suitable for deployment at the time of selection (as in step 306), conditions may change. In FIG. 3B, after deployment of software 142, deployment manager 204 implements a redeployment process (step 310). In general, for the redeployment process, deployment manager 204 looks for changes in the resource information 412 of the computing platforms 102 and/or deployment parameters 410 that may warrant moving the software 142 to a different computing platform 102 (i.e., change the host computing platform 480).”); evaluate, utilizing deployment parameters of the service representation, characteristics of cloud computing platforms to select a deployment arrangement of one or more of the cloud computing platforms for hosting components of the service (¶ [0027], “In FIG. 3A, deployment manager 204 receives deployment parameters from a customer 140 of the software deployment service 132 (also generally referred to as an entity) regarding deployment of software 142 (step 302)…The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc. The list of deployment parameters 410 provided in FIG. 4 is not exhaustive, and other parameters are considered herein.” ¶ [0036], “Deployment manager 204 reselects the host computing platform 480 from the plurality of computing platforms 102 based on the updated deployment parameters 410 and/or the updated resource information 412 (step 318)…When the deployment manager 204 reselects a different host computing platform 480 than where the software 142 is presently deployed, deployment manager 204 redeploys the software 142 on the different host computing platform 480 (e.g., cloud computing platform 112) during the downtime of the software 142 (step 320). In FIG. 5, for example, the software is presently deployed at host computing platform 480 (e.g., cloud computing platform 111). When deployment manager 204 reselects a different host computing platform 480 (e.g., cloud computing platform 112) based on the updated deployment parameters 410 and/or the updated resource information 412, deployment manager 204 redeploys the software 142 on the different host computing platform 480. In redeployment, deployment manager 204 deploys the software 142 on the different (new) host computing platform 480, and also tears down the software 142 on the previous host computing platform 480 during downtime of the software 142. One technical benefit is the software 142 may be moved to a different host computing platform 480 to optimize cost, improve performance, etc., of the software 142.”); generate one or more deployment scripts for redeploying the service, wherein for each cloud computing platform of the deployment arrangement, translating the service representation to a deployment script formatted according to programming semantics supported by a cloud computing platform (¶ [0031]-[0032], “As shown in FIG. 2, deployment manager 204 may be provisioned with one or more scripts 210-213 that automate deployment of software. As computing platforms 102 may use different commands, different names for resources, different APIs, etc., each script 210-213 may be customized or specific to an individual computing platform 102. For example, script 210 may be customized or specific to on-premise computing platform 110, script 211 may be customized or specific to cloud computing platform 111, script 212 may be customized or specific to cloud computing platform 112, and script 213 may be customized or specific to cloud computing platform 113. Deployment manager 204 may then run or execute the script 210-213 associated with the host computing platform 480 to automatically deploy the software 142…Although the host computing platform 480 may be suitable for deployment at the time of selection (as in step 306), conditions may change. In FIG. 3B, after deployment of software 142, deployment manager 204 implements a redeployment process (step 310). In general, for the redeployment process, deployment manager 204 looks for changes in the resource information 412 of the computing platforms 102 and/or deployment parameters 410 that may warrant moving the software 142 to a different computing platform 102 (i.e., change the host computing platform 480).”); and execute the one or more deployment scripts to deploy the components of the service across the one or more cloud computing platforms of the deployment arrangement (¶ [0036], “Deployment manager 204 reselects the host computing platform 480 from the plurality of computing platforms 102 based on the updated deployment parameters 410 and/or the updated resource information 412 (step 318)…When the deployment manager 204 reselects a different host computing platform 480 than where the software 142 is presently deployed, deployment manager 204 redeploys the software 142 on the different host computing platform 480 (e.g., cloud computing platform 112) during the downtime of the software 142 (step 320). In FIG. 5, for example, the software is presently deployed at host computing platform 480 (e.g., cloud computing platform 111). When deployment manager 204 reselects a different host computing platform 480 (e.g., cloud computing platform 112) based on the updated deployment parameters 410 and/or the updated resource information 412, deployment manager 204 redeploys the software 142 on the different host computing platform 480. In redeployment, deployment manager 204 deploys the software 142 on the different (new) host computing platform 480, and also tears down the software 142 on the previous host computing platform 480 during downtime of the software 142. One technical benefit is the software 142 may be moved to a different host computing platform 480 to optimize cost, improve performance, etc., of the software 142.”).
Sikkink fails to teach a migration request as well as translating the service representation into a cloud provider neutral format.
However, Velammal teaches in response to receiving a migration request to migrate a service, obtain and translate a current cloud deployment script, used by a first cloud computing platform to host the service, from a machine readable format of the first cloud computing platform into a service representation having a cloud provider neutral format (¶ [0020], “In an exemplary embodiment of the present invention, one or more of the plurality of applications (app1, app3, app5, app(n) etc.) may be assessed and migrated to the target cloud platform 106. In accordance with various embodiments of the present invention, the software application to be assessed and migrated, hereinafter referred to as application M is deployed and hosted via the source cloud platform 104. In an embodiment of the present invention, the source cloud platform 104 interfaces with the cloud assessment and migration system 112 over the first communication channel 108 to provide runtime data associated with the application M. In an embodiment of the present invention, the runtime data includes, but is not limited to, CPU consumption of application M in the source cloud platform, memory consumed/requested by the application M in the source cloud platform, build packs used for hosting the application M in the source cloud platform, number of instances of the application M running on the source cloud platform, and data associated with backing services consumed by the application M at the runtime in the source cloud platform, such as, but not limited to databases, file storage, messaging brokers etc.” ¶ [0035], “In accordance with various embodiments of the present invention, the interface unit 120 is configured to retrieve source cloud platform data by accessing the source cloud platform 104 via the cloud profiler tool 112a…Further, the cloud profiler tool 112a is configured to retrieve the source cloud platform data by accessing the source cloud platform 104 using the API ends points and/or credentials. In an exemplary embodiment of the present invention, the retrieved source cloud data is in the form of a JSON file. In an exemplary embodiment of the present invention, the retrieved source cloud platform data includes, but is not limited to, runtime data associated with the application M and other data associated with application M. In an embodiment of the present invention, the runtime data includes, but is not limited to, CPU consumption of application M, memory consumed/requested, build packs used for hosting the application M, number of instances of the application M running on the source cloud platform, and data associated with backing services consumed by the application M at the runtime, such as, but not limited to databases, file storage, messaging brokers etc.”).
Sikkink and Velammal are considered to be analogous to the claimed invention because they are in the same field of cloud platform management. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Sikkink with the migration functionality of Velammal to arrive at the claimed invention. The motivation to modify Sikkink with the teachings of Velammal is that accurately assessing when to migrate a service between cloud platforms results in better service performance after migration (See Velammal para. 0053.).
As per claim 9, Sikkink and Velammal teach the computing device of claim 8. Velammal teaches wherein the migration request specifies a set of services to migrate, and wherein the machine executable code causes the machine to: obtain and translate current cloud deployment scripts of the set of services to create a set of service representations (¶ [0020], “In an exemplary embodiment of the present invention, one or more of the plurality of applications (app1, app3, app5, app(n) etc.) may be assessed and migrated to the target cloud platform 106. In accordance with various embodiments of the present invention, the software application to be assessed and migrated, hereinafter referred to as application M is deployed and hosted via the source cloud platform 104. In an embodiment of the present invention, the source cloud platform 104 interfaces with the cloud assessment and migration system 112 over the first communication channel 108 to provide runtime data associated with the application M. In an embodiment of the present invention, the runtime data includes, but is not limited to, CPU consumption of application M in the source cloud platform, memory consumed/requested by the application M in the source cloud platform, build packs used for hosting the application M in the source cloud platform, number of instances of the application M running on the source cloud platform, and data associated with backing services consumed by the application M at the runtime in the source cloud platform, such as, but not limited to databases, file storage, messaging brokers etc.”); evaluate the set of service representations to identify a first service of the set of services that can be opted out from being migrated based upon the first service being identified as a non-essential service (¶ [0023], “In an embodiment of the present invention as shown in FIG. 1, the cloud assessment and migration system 112 is a software integrable/installable and executable via the client computing device 110 locally. In an embodiment of the present invention, the client computing device 110 is configured with a Graphical User Interface (GUI) of the cloud assessment and migration system 112 to at least provide inputs, select source cloud platform, select target cloud platform, input application M's source code address, generate migration readiness report, receive migration readiness report with recommendations, and migrate application M among other things. In an embodiment of the present invention where the cloud assessment and migration system 112 is a software integrable/installable and executable via the client computing device 110, a cloud profiler tool 112a associated with the cloud assessment and migration system 112 is provided on the client computing device 110 to retrieve runtime data associated with the application M from the source cloud platform 104.”); and provide a recommendation of the deployment arrangement in response to the migration request, wherein the recommendation specifies that the first service can be opted out from being migrated (¶ [0047]-[0048], “In accordance with various embodiments of the present invention, the migration unit 126 is configured to receive the migration readiness report from the report generation unit 124. In accordance with various embodiments of the present invention, the migration unit 126 is configured to receive the source cloud platform data and the target cloud platform data from the data analysis unit 122. Further, the migration unit 126 is configured to generate deployment configurations for the application M as per the target cloud platform if respective values of the tech-stack suitability score and the migration complexity score are within a preset threshold, and the anti-patterns are in one or more categories refactor and replatform…In another embodiment of the present invention, the migration unit 126 is configured to generate deployment configurations for the application M as per the target cloud platform based on user discretion. In an embodiment of the present invention, the deployment configurations for application M as per the target cloud platform 106 are generated by incorporating runtime data of application M and equivalent backing services in target platform from the migration readiness report into pre-configured deployment templates. In an embodiment of the present invention, the pre-configured deployment templates include, but are not limited to, deployment yaml templates, configMap yaml template, service yaml internal template and service yaml external templates.”).
Refer to claim 8 for reason to combine.
As per claim 10, Sikkink and Velammal teach the computing device of claim 8. Sikkink teaches wherein the machine executable code causes the machine to: implement a recommendation engine to recommend a set of services to migrate based upon cost of hosting the services within a particular cloud computing platform (¶ [0023], “While the host computing platform may be appropriate at the time of deployment, the resource information may change regarding one or more of the computing platforms 102, one or more deployment parameters may change, etc. Thus, deployment manager 204 is configured to monitor for updated resource information for resources 104 on the computing platforms 102 and/or receive updated deployment parameters, and reselect the host computing platform accordingly. Deployment manager 204 is configured to redeploy the software on a different host computing platform based on the reselection during downtime of the software (i.e., selected a different host computing platform based on updated resource information and/or updated deployment parameters). One technical benefit is software deployment supervisor 130 provides an automated solution for automatically selecting a computing platform and automatically deploying the software on the selected computing platform. Another technical benefit is software deployment supervisor 130 is able to move software among the different computing platforms 102 to optimize cost, improve performance, etc., of the software.” See also para. 0044.).
As per claim 11, Sikkink and Velammal teach the computing device of claim 8. Velammal teaches wherein the machine executable code causes the machine to:
generate a set of deployment arrangements that each include a different combination of cloud computing platforms for hosting the components of the service (¶ [0047]-[0048], “In accordance with various embodiments of the present invention, the migration unit 126 is configured to receive the migration readiness report from the report generation unit 124. In accordance with various embodiments of the present invention, the migration unit 126 is configured to receive the source cloud platform data and the target cloud platform data from the data analysis unit 122. Further, the migration unit 126 is configured to generate deployment configurations for the application M as per the target cloud platform if respective values of the tech-stack suitability score and the migration complexity score are within a preset threshold, and the anti-patterns are in one or more categories refactor and replatform…In another embodiment of the present invention, the migration unit 126 is configured to generate deployment configurations for the application M as per the target cloud platform based on user discretion. In an embodiment of the present invention, the deployment configurations for application M as per the target cloud platform 106 are generated by incorporating runtime data of application M and equivalent backing services in target platform from the migration readiness report into pre-configured deployment templates. In an embodiment of the present invention, the pre-configured deployment templates include, but are not limited to, deployment yaml templates, configMap yaml template, service yaml internal template and service yaml external templates.”); populate a user interface with the set of deployment arrangements for selection by a user (¶ [0023], “In an embodiment of the present invention, the client computing device 110 is configured with a Graphical User Interface (GUI) of the cloud assessment and migration system 112 to at least provide inputs, select source cloud platform, select target cloud platform, input application M's source code address, generate migration readiness report, receive migration readiness report with recommendations, and migrate application M among other things.”); and in response to receiving a selection of the deployment arrangement from the set of deployment arrangements through the user interface, utilize the deployment arrangement to migrate the service (¶ [0050]-[0052], In an exemplary embodiment of the present invention, the migration unit 126 is configured to receive the values for replacing the generic placeholders from the user. In particular, each string of generic placeholders wrapped with symbol “#$” is prompted to the user for receiving input values during generation of the deployment configurations as per the target cloud platform 106. An example of generic placeholder in a configuration yaml template is #$server-name#$, where server-name is prompted to the user and value provided by user is replaced in the template. In an exemplary embodiment of the present invention, the migration unit 126 is configured to port the system placeholders automatically from the runtime data of application M into the pre-configured templates…In accordance with various embodiments of the present invention, the migration unit 126 is configured to migrate the application M to the target cloud platform based on the generated deployment configurations. In accordance with various embodiments of the present invention, the migration unit 126 is configured to transform the application source code as per the target cloud platform 106. In operation, new files and pieces of code are inserted into the application source code based on the migration readiness report.”).
As per claim 12, Sikkink and Velammal each the computing device of claim 11. Sikkink teaches wherein the machine executable code causes the machine to: utilize the deployment parameters and the characteristics of the cloud computing platforms to determine cost and performance metrics of each deployment arrangement of the set of deployment arrangements; and populate the user interface with the cost and performance metrics (¶ [0028]-[0029], “In FIG. 3A, deployment manager 204 identifies resource information for resources 104 on a plurality of computing platforms 102 (step 304). The resource information may comprise compute capacity, storage capacity, network performance, pricing or pricing plan, and/or any other information related to resources 104 at a computing platform 102. In an embodiment, deployment manager 204 may query one or more of the computing platforms 102 to obtain the resource information (optional step 322), such as through network interface component 202…In FIG. 4, for example, the resource information 412 may comprise pricing 430 (also referred to as pricing information) for resources 104 on the computing platforms 102. The pricing 430 may comprise subscription-based pricing 431 (e.g., price per month), usage-based or on-demand pricing 432, hybrid pricing 433 (e.g., combination of subscription-based and on-demand pricing), auction-based spot pricing 434 (e.g., allowing users to bid for resources at a reduced rate), and/or other types of pricing. The resource information 412 may comprise resource capacity 435, such as capacity of compute resources, storage resources, network resources, etc. The resource information 412 may comprise a type of operating system 436 supported. The resource information 412 may comprise network accessibility 437. The list of resource information 412 provided in FIG. 4 is not exhaustive, and other types of resource information 412 are considered herein.”).
As per claim 13, Sikkink and Velammal teach the computing device of claim 8. Velammal teaches wherein the machine executable code causes the machine to:
execute the one or more deployment scripts to migrate operational metadata of the service from the first cloud computing platform to the one or more cloud computing platforms of the deployment arrangement in a seamless manner (¶ [0025], “In accordance with various embodiments of the present invention, the cloud assessment and migration system 112 is configured to interface with the code hosting platform 102, the source cloud platform 104 and the target cloud platform 106. In an embodiment of the present invention, the cloud assessment and migration system 112 is configured to interface with the code hosting platform 102 to retrieve source code of the application to be assessed and migrated (Application M).” ¶ [0027], “In accordance with various embodiments of the present invention, the assessment and migration engine 114 is a self-contained automated engine configured to retrieve complex data associated with the application, analyze said data to generate migration readiness report for the application, generate deployment configurations for migrating the application, update source code as per the target cloud platform, and migrate the application to the target cloud platform as per the deployment configuration.”).
Refer to claim 8 for reason to combine.
As per claim 14, Sikkink and Velammal teach the computing device of claim 8. Sikkink teaches wherein the machine executable code causes the machine to: utilize the service representation having the cloud provider neutral format to generate a service description having a human readable format; and populate a user interface with the service description (¶ [0023], “In an embodiment of the present invention, the client computing device 110 is configured with a Graphical User Interface (GUI) of the cloud assessment and migration system 112 to at least provide inputs, select source cloud platform, select target cloud platform, input application M's source code address, generate migration readiness report, receive migration readiness report with recommendations, and migrate application M among other things..” ¶ [0035], “In accordance with various embodiments of the present invention, the interface unit 120 is configured to retrieve source cloud platform data by accessing the source cloud platform 104 via the cloud profiler tool 112a…Further, the cloud profiler tool 112a is configured to retrieve the source cloud platform data by accessing the source cloud platform 104 using the API ends points and/or credentials. In an exemplary embodiment of the present invention, the retrieved source cloud data is in the form of a JSON file. In an exemplary embodiment of the present invention, the retrieved source cloud platform data includes, but is not limited to, runtime data associated with the application M and other data associated with application M. In an embodiment of the present invention, the runtime data includes, but is not limited to, CPU consumption of application M, memory consumed/requested, build packs used for hosting the application M, number of instances of the application M running on the source cloud platform, and data associated with backing services consumed by the application M at the runtime, such as, but not limited to databases, file storage, messaging brokers etc.” See also para. 0027, 0031, 0048, and 0050-0051.).
As per claim 15, Sikkink and Velammal teach the computing device of claim 8. Sikkink teaches wherein the machine executable code causes the machine to: parse the current cloud deployment script to identify the deployment parameters of the service representation as including at least one of a network configuration for the service, a definition defining how the service is to operate, a load balancer that will be used as part of the service, a database server that will be used as part of the service, a webserver that will be used as part of the service, an amount of compute to allocate to the service, an amount of storage resource to allocate to the service, or a virtual machine that will be used as part of the service (¶ [0027], “The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc. The list of deployment parameters 410 provided in FIG. 4 is not exhaustive, and other parameters are considered herein.”).
As per claim 26, it is a method claim comprising similar limitations to claim 8, so it is rejected for similar reasons.
As per claim 27, it is a method claim comprising similar limitations to claim 9, so it is rejected for similar reasons.
As per claim 28, it is a method claim comprising similar limitations to claim 10, so it is rejected for similar reasons.
As per claim 29, it is a method claim comprising similar limitations to claim 11, so it is rejected for similar reasons.
As per claim 30, it is a method claim comprising similar limitations to claim 12, so it is rejected for similar reasons.
As per claim 31, it is a method claim comprising similar limitations to claim 13, so it is rejected for similar reasons.
As per claim 32, it is a method claim comprising similar limitations to claim 14, so it is rejected for similar reasons.
As per claim 33, Sikkink and Velammal teach the method of claim 26. Sikkink teaches parsing the current cloud deployment script to identify the deployment parameters of the service representation as including a network configuration for the service (¶ [0027], “The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc. The list of deployment parameters 410 provided in FIG. 4 is not exhaustive, and other parameters are considered herein.”).
As per claim 34, Sikkink and Velammal teach the method of claim 26. Sikkink teaches parsing the current cloud deployment script to identify the deployment parameters of the service representation as including a definition defining how the service is to operate (¶ [0027], “The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc. The list of deployment parameters 410 provided in FIG. 4 is not exhaustive, and other parameters are considered herein.”).
As per claim 35, Sikkink and Velammal teach the method of claim 26. Velammal teaches parsing the current cloud deployment script to identify the deployment parameters of the service representation as including a database server that will be used as part of the service (¶ [0019], “In accordance with various embodiments of the present invention, the source cloud platform 104 and the target cloud platform 106 are any cloud platforms that provide computing services, including, but not limited to, servers, storage, databases, networking devices, software resources, analytics, and intelligence over a network, particularly internet to the consumers.”).
Sikkink and Velammal are considered to be analogous to the claimed invention because they are in the same field of cloud platform management. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify the deployment parameters of Sikkink with the well-known technique of database service consideration of Velammal to arrive at the claimed invention. The modification would have been reasonable and yielded predictable results under MPEP § 2143 as both references migrate service across cloud computing platforms based on operation parameters.
As per claim 36, Sikkink and Velammal teach the method of claim 26. Sikkink teaches parsing the current cloud deployment script to identify the deployment parameters of the service representation as including a webserver that will be used as part of the service (¶ [0027], “The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc.”).
As per claim 37, Sikkink and Velammal teach the method of claim 26. Sikkink teaches parsing the current cloud deployment script to identify the deployment parameters of the service representation as including at least one of an amount of compute to allocate to the service, an amount of storage resource to allocate to the service, or a virtual machine that will be used as part of the service (¶ [0027], “The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc.”).
Claim(s) 16-20 are rejected under 35 U.S.C. 103 as being unpatentable over Sikkink in view of PAL et al. (US Pub. No. 2023/0038345 A1 hereinafter PAL).
As per claim 16, Sikkink teaches a non-transitory machine readable medium (¶ [0045], “FIG. 8 illustrates a processing system 800 operable to execute a computer readable medium embodying programmed instructions to perform desired functions in an illustrative embodiment.”) comprising instructions for performing a method, which when executed by a machine, causes the machine to: in response to receiving a redeployment request to redeploy a service from on-premises, obtain metadata of the service as a service representation (¶ [0018], “In general, each of the computing platforms 102 comprises resources 104 used in the deployment of software (i.e., used to host software). For example, the resources 104 may comprise compute resources (e.g., a server, a virtual server or virtual machine (VM), a virtual central processing unit (vCPU), etc.), storage resources, networking resources, etc. One or more of the computing platforms 102 may include an on-premise computing platform 110. An on-premise computing platform 110 comprises resources 104 managed by an entity (e.g., a person, a company, an organization, etc.).” ¶ [0031], “As shown in FIG. 2, deployment manager 204 may be provisioned with one or more scripts 210-213 that automate deployment of software. As computing platforms 102 may use different commands, different names for resources, different APIs, etc., each script 210-213 may be customized or specific to an individual computing platform 102. For example, script 210 may be customized or specific to on-premise computing platform 110, script 211 may be customized or specific to cloud computing platform 111, script 212 may be customized or specific to cloud computing platform 112, and script 213 may be customized or specific to cloud computing platform 113.”); evaluate, utilizing deployment parameters of the service representation, characteristics of cloud computing platforms to select a deployment arrangement of one or more of the cloud computing platforms for hosting components of the service (¶ [0027], “In FIG. 3A, deployment manager 204 receives deployment parameters from a customer 140 of the software deployment service 132 (also generally referred to as an entity) regarding deployment of software 142 (step 302)…The deployment parameters 410 comprise any inputs, requirements, or other factors for deploying the software 142. As an example, the deployment parameters 410 may comprise compute requirements 420, storage requirements 421, operating system (OS) requirements 422 (e.g., type of OS, whether customer 140 has a license for the OS, etc.), network access requirements 423 (e.g., whether the software 142 needs outside access to the web), operational window(s) or time interval(s) 424 of the software 142 (e.g., an operating duration or time frames when software 142 is operational), use case 425 (e.g., test, performance, etc.), cost range or limit 426, etc. The list of deployment parameters 410 provided in FIG. 4 is not exhaustive, and other parameters are considered herein.” ¶ [0036], “Deployment manager 204 reselects the host computing platform 480 from the plurality of computing platforms 102 based on the updated deployment parameters 410 and/or the updated resource information 412 (step 318)…When the deployment manager 204 reselects a different host computing platform 480 than where the software 142 is presently deployed, deployment manager 204 redeploys the software 142 on the different host computing platform 480 (e.g., cloud computing platform 112) during the downtime of the software 142 (step 320). In FIG. 5, for example, the software is presently deployed at host computing platform 480 (e.g., cloud computing platform 111). When deployment manager 204 reselects a different host computing platform 480 (e.g., cloud computing platform 112) based on the updated deployment parameters 410 and/or the updated resource information 412, deployment manager 204 redeploys the software 142 on the different host computing platform 480. In redeployment, deployment manager 204 deploys the software 142 on the different (new) host computing platform 480, and also tears down the software 142 on the previous host computing platform 480 during downtime of the software 142. One technical benefit is the software 142 may be moved to a different host computing platform 480 to optimize cost, improve performance, etc., of the software 142.”); generate one or more deployment scripts for migrating the service, wherein for each cloud computing platform of the deployment arrangement, translate the service representation into a deployment script formatted according to programming semantics supported by a cloud computing platform ((¶ [0031]-[0032], “As shown in FIG. 2, deployment manager 204 may be provisioned with one or more scripts 210-213 that automate deployment of software. As computing platforms 102 may use different commands, different names for resources, different APIs, etc., each script 210-213 may be customized or specific to an individual computing platform 102. For example, script 210 may be customized or specific to on-premise computing platform 110, script 211 may be customized or specific to cloud computing platform 111, script 212 may be customized or specific to cloud computing platform 112, and script 213 may be customized or specific to cloud computing platform 113. Deployment manager 204 may then run or execute the script 210-213 associated with the host computing platform 480 to automatically deploy the software 142…Although the host computing platform 480 may be suitable for deployment at the time of selection (as in step 306), conditions may change. In FIG. 3B, after deployment of software 142, deployment manager 204 implements a redeployment process (step 310). In general, for the redeployment process, deployment manager 204 looks for changes in the resource information 412 of the computing platforms 102 and/or deployment parameters 410 that may warrant moving the software 142 to a different computing platform 102 (i.e., change the host computing platform 480).”); and execute the one or more deployment scripts to deploy the components of the service across the one or more cloud computing platforms of the deployment arrangement (¶ [0036], “Deployment manager 204 reselects the host computing platform 480 from the plurality of computing platforms 102 based on the updated deployment parameters 410 and/or the updated resource information 412 (step 318)…When the deployment manager 204 reselects a different host computing platform 480 than where the software 142 is presently deployed, deployment manager 204 redeploys the software 142 on the different host computing platform 480 (e.g., cloud computing platform 112) during the downtime of the software 142 (step 320). In FIG. 5, for example, the software is presently deployed at host computing platform 480 (e.g., cloud computing platform 111). When deployment manager 204 reselects a different host computing platform 480 (e.g., cloud computing platform 112) based on the updated deployment parameters 410 and/or the updated resource information 412, deployment manager 204 redeploys the software 142 on the different host computing platform 480. In redeployment, deployment manager 204 deploys the software 142 on the different (new) host computing platform 480, and also tears down the software 142 on the previous host computing platform 480 during downtime of the software 142. One technical benefit is the software 142 may be moved to a different host computing platform 480 to optimize cost, improve performance, etc., of the software 142.”).
Sikkink fails to explicitly teach receiving a migration request to migrate a service from on-premises to a cloud computing platform.
However, PAL teaches in response to receiving a migration request to migrate a service from on-premises (¶ [0082], “In one implementation, the method modifies existing on-premise application to work efficiently on cloud using a container or PaaS, upgrades or changes all blockers related to source code and design patterns and all underlying libraries to make them compatible with container or PaaS, application servers and database is re-platformed to reduce TCO, and monolith application may be de-coupled into services to improve efficiency and velocity.”).
Sikkink and PAL are considered to be analogous to the claimed invention because they are in the same field of cloud platform management. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Sikkink with the on-premise to off-premise migration functionality of PAL to arrive at the claimed invention. The motivation to modify Sikkink with the teachings of PAL is that moving from on-premise an off-premise computing platform allows the migrated service to take advantage of scalability and elastic features of cloud computing (See PAL para. 0048.).
As per claim 17, Sikkink and PAL teach the non-transitory machine readable medium of claim 16. Sikkink teaches wherein the service is a virtual machine (¶ [0018], “Computing environment 100 includes a plurality of computing platforms 102. In general, each of the computing platforms 102 comprises resources 104 used in the deployment of software (i.e., used to host software). For example, the resources 104 may comprise compute resources (e.g., a server, a virtual server or virtual machine (VM), a virtual central processing unit (vCPU), etc.), storage resources, networking resources, etc.”), and wherein the instructions cause the machine to: utilize an application programming interface of a hypervisor hosting the virtual machine to obtain the metadata (¶ [0031], “As computing platforms 102 may use different commands, different names for resources, different APIs, etc., each script 210-213 may be customized or specific to an individual computing platform 102. For example, script 210 may be customized or specific to on-premise computing platform 110, script 211 may be customized or specific to cloud computing platform 111, script 212 may be customized or specific to cloud computing platform 112, and script 213 may be customized or specific to cloud computing platform 113. Deployment manager 204 may then run or execute the script 210-213 associated with the host computing platform 480 to automatically deploy the software 142.” Examiner Note: One of ordinary skill in the art would recognize that, although not explicitly mentioned, a hypervisor must be present in the system in order for a virtual machine to be active.); evaluate the metadata to determine how the virtual machine is running on-premises; and determine the deployment parameters of the service representation based upon how the virtual machine is running on-premises (¶ [0040], “In an embodiment, computing platform 102 may provide an API 710 that allows deployment manager 204 to obtain the pricing 430, along with other resource information 412. In an embodiment, computing platform 102 may provide a command line interface (CLI) 712 that allows deployment manager 204 to obtain the pricing 430, along with other resource information 412. Thus, deployment manager 204 may query the computing platform 102 through API 710 or CLI 712 to obtain the pricing 430 (optional step 632 in FIG. 6A). As the different computing platforms 102 may provide different APIs 710 or CLIs 712, deployment manager 204 is configured to interact via the different APIs 710 and CLIs 712.”).
As per claim 18, Sikkink and PAL teach the non-transitory machine readable medium of claim 16. Sikkink teaches wherein the instructions cause the machine to:
perform a cost comparison between hosting the service on-premises and hosting the service across the one or more cloud computing platforms; and populate a user interface with a result of the cost comparison (¶ [0027], “n an example, deployment manager 204 may provide or implement a Graphical User Interface (GUI) 402 through a website, portal, etc., where customer 140 is able to enter or input the deployment parameters 410. GUI 402 may provide a list of optional deployment parameters 404 selectable by the customer 140. In another example, deployment manager 204 may provide website, a portal, etc., where customer 140 is able to upload a configuration file 406 with the deployment parameters 410. Customer 140 may also provide a copy of the software 142 (e.g., an application), a link (e.g., network address or Uniform Resource Locator (URL)) to the software 142, etc., to deployment manager 204.” ¶ [0029], “In FIG. 4, for example, the resource information 412 may comprise pricing 430 (also referred to as pricing information) for resources 104 on the computing platforms 102. The pricing 430 may comprise subscription-based pricing 431 (e.g., price per month), usage-based or on-demand pricing 432, hybrid pricing 433 (e.g., combination of subscription-based and on-demand pricing), auction-based spot pricing 434 (e.g., allowing users to bid for resources at a reduced rate), and/or other types of pricing.”).
As per claim 19, Sikkink and Pal teach the non-transitory machine readable medium of claim 16. Sikkink teaches wherein the instructions cause the machine to:
utilize the deployment parameters, the characteristics of the cloud computing platforms, and the deployment arrangement to generate a deployment plan populated with reasons why the one or more cloud computing platforms of the deployment arrangement were selected and benefits of utilizing the deployment arrangement; and provide the deployment plan to a user as a response to the migration request for confirmation (¶ [0023], “Deployment manager 204 may comprise circuitry, logic, hardware, means, etc., configured to select a host computing platform for a software deployment, and deploy the software on the host computing platform. For example, deployment manager 204 may receive one or more deployment parameters (e.g., from a customer 140), determine or identify resource information for resources 104 on the computing platforms 102, and select a host computing platform accordingly. Deployment manager 204 may then deploy the software on the host computing platform. For example, deployment manager 204 may provision the resources 104 on the host computing platform (if needed), and perform functions or actions to install the software on the host computing platform. Deployment manager 204 is further configured to implement a redeployment process after the software is deployed on a host computing platform. While the host computing platform may be appropriate at the time of deployment, the resource information may change regarding one or more of the computing platforms 102, one or more deployment parameters may change, etc. Thus, deployment manager 204 is configured to monitor for updated resource information for resources 104 on the computing platforms 102 and/or receive updated deployment parameters, and reselect the host computing platform accordingly. Deployment manager 204 is configured to redeploy the software on a different host computing platform based on the reselection during downtime of the software (i.e., selected a different host computing platform based on updated resource information and/or updated deployment parameters).” ).
As per claim 20, Sikkink and PAL teach the non-transitory machine readable medium of claim 16. Sikkink teaches wherein the instructions cause the machine to:
generate a first deployment script formatted according to first programming semantics of a first cloud computing platform, wherein the first deployment script is configured to deploy a first component of the service to the first cloud computing platform; and generate a second deployment script formatted according to second programming semantics of a second cloud computing platform, wherein the second deployment script is configured to deploy a second component of the service to the second cloud computing platform (¶ [0031], “As shown in FIG. 2, deployment manager 204 may be provisioned with one or more scripts 210-213 that automate deployment of software. As computing platforms 102 may use different commands, different names for resources, different APIs, etc., each script 210-213 may be customized or specific to an individual computing platform 102. For example, script 210 may be customized or specific to on-premise computing platform 110, script 211 may be customized or specific to cloud computing platform 111, script 212 may be customized or specific to cloud computing platform 112, and script 213 may be customized or specific to cloud computing platform 113. Deployment manager 204 may then run or execute the script 210-213 associated with the host computing platform 480 to automatically deploy the software 142.”).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Ganesan et al. (US Pub. No. 2021/0382798 A1) and Sharma et al. (US Patent No. 10,419,546 B2) teach assessing migration criteria for a service that is to be migrated across cloud computing platforms.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JOHN ROBERT DAKITA EWALD whose telephone number is (703)756-1845. The examiner can normally be reached Monday-Friday: 9:00-5:30 ET.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Lewis Bullock can be reached at (571)272-3759. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/J.D.E./Examiner, Art Unit 2199
/LEWIS A BULLOCK JR/Supervisory Patent Examiner, Art Unit 2199