Cloud computing is about hardware-based services (involving computing, network and storage capacities), where:
- Services are provided on-demand; customers can pay for them as they go, without the need to invest into a datacenter.
- Hardware management is abstracted from the customers.
- Infrastructure capacities are elastic and can easily scale up and down.
There is a powerful economic force behind this simple model: providing and consuming cloud computing services generally allows to have far more efficient resource utilization, compared to self-hosting and data center type of hosting.
Obviously, consuming raw hardware capacities may be too hardcore for some consumers that merely want to have a scalable storage. So it is natural that cloud computing services already got some diversity around them:
- Infrastructure as a Service (IaaS), where customer gets raw hardware resources (i.e.: virtual machines with OS of choice).
- Platform as a Service (PaaS), where service provider builds a platform to simplify solving some technological tasks.
- Software as a Service (SaaS). At this level everything is way more simple for the customers to consume, since they are provided with actual services generating business value to them. Service providers handle all the technological complexity and provide the support as needed.
From the development perspective, cloud computing is a brand new field (which is especially true for the .NET world).