Cloud computing concepts have existed for many years in technologies like mainframe computing and utility computing. While cloud computing is commonly associated with 21st century applications and services, its foundations can be traced back to earlier distributed computing models. Cloud computing abstracts hardware and software resources that are shared dynamically via virtualization and accessed over a network.