Utility computing can incorporate grid computing or on-demand computing. Both models are related yet distinct. Grid computing entails the virtualization of networked hardware to provide the relevant level of computational power required by the customer. Effectively, customers of grid-computing models do not know which part of the system actually provides the answer. The system is made up of separate hardware, working as a seamless and coherent unit for the purpose of computationally intensive problem solving.
Pay as you go. Customers purchase services only when they need it, on a metered basis, paying for resources in small increments and only when used. This strategy provides vendors with no information for capacity planning or assurance of longer-term sales, thus it commands a premium price as the vendor has to absorb the risks associated with demand fluctuations.
Variable utility. In the variable utility model, customers purchase a specific amount of compute capability to be used within a given amount of time. This purchase often includes an initial stop of setting up a "base presence," which includes establishing a VPN connection, configuring management nodes with software, and so on. In this case customers pay for capacity they reserve in advance; allowing vendors to provide better pricing than no commitment, pay-as-you- go models. However, customers often find it difficult to anticipate usage levels, which tends to push up cost per a cycle if they over estimate requirements or forces the purchase of extra cycles at pay-as-you-go rates if they underestimate.
Dedicated utility. This type of utility model typically involves long-term contracts, with 100% of specified physical resources dedicated to the customer’s workload. The customer spells out the details of the computer system, including software, storage, etc. Communication between the utility and customer sites is usually via a point-to-point dedicated network. This approach may be driven by constraints on available floor space, compute capacity, power, or other major issues. In the dedicated utility model, customers use the compute-intensive equipment as an extension of their IT infrastructures.
Cycles for money. A strict dollars-per-processor hour-based product with the vendor supplying the computing environment (i.e., servers, storage, systems management, power and cooling, etc.) and the customers supplying the software stack. In addition, customers are responsible for managing and running their workloads. In this case the customer assumes responsibility for all applications licenses and/or provides internally developed codes. Customers who wish to retain full control of their application environment may
prefer this model.
Applications development environment. In addition to raw cycles, the vendor provides the software middleware layers to allow customers to develop and implement applications on the providers’ systems. This model appeals to customers who need complete development environments, not just compute cycles.
Applications services. A service-based around providing access to a specific applications suite that is optimized for the service providers’ hardware. The goal in this model is to provide a turnkey solution to the end customer.
Multi-applications workload support. A service that provides an operational environment to match all or part of the customer’s environment with multiple applications supported. This model could apply to customers who are testing new markets, providing ease of entry and exit with minimal investment.
The reference levels provide points along a spectrum of services where vendors also have the ability to "mix and match" offerings from different parts of the spectrum. It is important to note that just as there are different models for providing utility computing resources, there are also alternative channels for providing them. Major system vendors are now offering utility computing services, but for various workloads these services could also come from independent software vendors, value-added resellers, selling partners, or standalone utility providers.
Dynamic Charging: Rather than post-processing resource usage records on a periodic basis to rectify project balances, accounts can be updated immediately at job completion.
Reservations: Before a job runs, a hold is placed against the account for the estimated number of resource credits, followed by an appropriate withdrawal at the moment the job completes, thereby preventing projects from using more resources than were allocated to them.
Flexible Charging: The system can track and charge for composite resource usage (memory, disk, CPU, etc). Custom charge multipliers can also be applied (Quality of Service, Node Type, Time of Day, etc).
Journaling: Distributed Exchange implements a journaling mechanism that preserves the indefinite historical state of all objects and records. This powerful mechanism allows historical bank statements to be generated, provides an undo/redo capability and allows commands to be run as if it were any arbitrary time in the past.
Familiar Banking Operations: Distributed Exchange supports familiar operations such as deposits, withdrawals, balance feedback, transfers and refunds.
Web Interface: Distributed Exchange features a powerful web-based GUI for easy remote access for users, managers and administrators.
Transparency: Distributed Exchange allows the establishment of default projects, machines and users. Additionally Distributed Exchange can allow user, machines and projects to be automatically created the first time they are seen by the resource management system. These features allow job submitters to use the system without even knowing it.
Credit and Debit Accounts: Accounts feature an optional credit limit allowing support for both debit and credit models. This feature can also be used to enable overdraft protection for specific accounts.