A method for dynamic reservation of cloud and on premises resources for
software execution is disclosed. The method may be comprised of: receiving the specification for the resources needed for the
software, evaluating the availability of resources and reserving the resources for the
software. The method may include a protocol to discover, evaluate availability, negotiate terms and create a reservation contract for
software execution resources based on the required specification. This can be implemented using resource agent modules that represent available
software execution resources (e.g.: CPU, memory, storage, network . . . ) and reservation agent modules that are used for communicating with the resource agent modules for reserving
software execution resources. In addition, monitoring agent modules are used to monitor the actual software execution reservation contract.In another embodiment, a method for dynamic reservation of cloud and on premises resources for software execution may include a
system for dynamic optimized reservation of software execution resources across cloud and on premises resources based on excess and demand which may include the above method with one or more contract aggregation modules that holds one or more reservation contracts for software execution resources and one or more re-negotiation reservation agent modules that continuously re-negotiates software reservation contracts based on up to date information. The contract aggregation module can also be a resource agent module representing reservation contracts that have not yet been fully fulfilled and thus can still be re-negotiated. The re-negotiation reservation agent module can re-negotiate a reservation contract for software execution resources that are required in the immediate timeframe or in the future. The re-negotiation reservation agent can use but is not limited to the following information when re negotiating software execution resources contracts:
Software execution requirement, price, monitoring information, contract cancellation information, migration cost (in case the software is already running),
scalability, security and compliance changes and availability of resources.