Virtualization, service-oriented architecture, grid computing, and utility computing are key technologies that enable cloud computing. Virtualization allows a single application or resource to be shared among multiple organizations by assigning it a logical name. Service-oriented architecture allows applications to be used as services by other applications regardless of vendor or technology. Grid computing connects geographically dispersed computers to achieve common objectives by breaking tasks into smaller pieces distributed across the network. Utility computing offers computational resources on demand in a pay-per-use model, which cloud, grid, and managed IT services are based on.