Cloud computing allows users to access computing resources like programs and data through the internet. It has characteristics like self-service, universal access, resource pooling and elasticity. Modern infrastructure trends that led to cloud computing include computer productivity growth, multi-core systems, storage area networks, and data center consolidation. Virtualization is a key technology and involves partitioning resources and distributing them across virtual machines. Cloud computing provides infrastructure, platform and software as services and various deployment models.