- CPU: Intel Atom D510 2 cores 2 x 1.66 GHz
- RAM: 4GB RAM
- Storage: 64GB SSD + 500GB HDD
- Bandwidth: 150TB Bandwidth
- Port: 1 Gbps
- Linux / Windows OS
- Region: New York City Metro Data Center (US)
- Monthly Payment
We can envision the Web-based utility computing model INTEL ATOM D510 as a specialized distributed system with “transparency” being a major design objective. Under this model, a business can adjust the resource provisioning for its Internet applications dynamically based on user demand. For example, if an application suddenly becomes popular and receives a large number of user requests, the application service provider will allocate more servers for this application automatically to accommodate the surge in demand. Later, when the popularity of the application decreases, these servers can be re-purposed for other applications. Such a computing model INTEL ATOM D510 can achieve a much higher degree of efficiency in resource utilization than a traditional model where each application has its dedicated infrastructure. Moreover, the locations of the computing resources are transparent to the end users. In other words, a service provider can optimize its resource provisioning based on any criteria it considers important (e.g. load, proximity, pricing, fault-tolerance, etc.) as long as the end users are provided with a single image of reliable, uninterrupted service.
There are several issues that need to be addressed in developing a utility computing system for Web applications:
- Application distribution: How does the system distribute instances of the application across its network? Also, how does the system maintain the consistency of different replicas of an application?
- Resource isolation: Given that the platform runs multiple applications on a shared platform, how can the applications be isolated from affecting each other? For example, if one application becomes a victim to a denial of service attack, this should not affect other applications.
- Application placement: How much resources should be allocated to an application and where (i.e., in which nodes within the platform) should the application instances be placed? A variety of metrics can be considered here, including: user proximity, server load, billing, security, relocation cost, customer preferences, DNS caching effect^, etc..
- Request distribution: When a user sends a request, where should the system direct the request? A naive approach is to always distribute requests to the closest application servers. However, as we will see later, consideration of other factors is necessary for the stability of the system.