The US National Institute of Standards and Technology (NIST) has identified five essential characteristics of cloud computing such as on-demand self service, broad network access, resource pooling, rapid elasticity and measured services. There are also additional characteristics such as performance, reliability, multi-tenancy etc.
On-demand self service
Resources should be provisioned on-demand by the users, with maximum automation and minimum manual effort.
Broad network access
Resources should be accessed over the network with standard access mechanisms.
Resources should be pooled to service multiple clients through multi-tenancy, so that multiple users can be served using the same physical server.
Resources should be rapidly scaled up or down based on demand.
Horizontal scaling or scaling out involves adding additional server resources to scale the application. Adding more servers is scaling out.
Vertical scaling or scaling up involves increasing the computing capacity of current server resources. Increasing the CPU or RAM of an existing system is scaling up, but this might be limited to certain limits.
Resources should be provided on a pay-per-use model.
Should allow multiple users to make use of same shared resources.
Multi-tenancy can be of different types: virtual multi-tenancy and organic multi-tenancy. Virtual multi-tenancy involves sharing of underlying computing and storage resources, but having separate virtual machines for each client. Organic multi-tenancy involves sharing all resources by multiple users through explicit multi-tenant capabilities coded into the application.
Cloud computing allows companies and users to outsource areas of non primary concern like IT infrastructure etc. to external cloud providers.
Performance, Reliability, Reduced costs
Scaling as per demand results in better performance, improved reliability and reduced costs.
Book: Cloud Computing A Hands On Approach by Arshdeep Bahgya and Vijay Madisetti