Virtualization, in computing, is the creation of a virtual version of something, such as a hardware platform, operating system, a storage device, or network resources. Virtualization technologies promise great opportunist for reducing energy and hardware costs through server consolidation. Moreover, virtualization can optimize resource sharing among applications hosted in different virtual machines to better meet their resource needs. As a result, increasingly computing can be conducted in shared resource pools that act as private and public clouds. With the rapid development of processing and storage technologies and the success of internet, computing resources have become cheaper, more powerful, and more ubiquitously available than ever before. This technological trend has enabled the realization of a new computing model called cloud computing, in which resources are provided as general utilities that can be leased and released by users through the internet in an on-demand fashion. In this paper, we first discuss about cloud computing, its advantages and compare cloud computing with the other existing technologies in tech world. In the second half of the paper, we have explained the different models or architecture of cloud computing.