Cloud computing refers to both the
applications delivered as services over the internet and the hardware and
systems software in the data centers that provide those services. Cloud
computing services have long been referred to as Software as a Service (SaaS),
Infrastructure as a Service (IaaS) and Platform as a Service (PaaS). From a
hardware stand point and pricing point of view, three aspects are new in cloud
computing. 1) The appearance of infinite computing resources available on
demand, quickly enough to eliminate the need for cloud computing users to plan
ahead for provisioning. 2) The elimination of an up-front commitment by cloud
users which allows companies to start small and increase in storage resources only
when there is a need. 3) The ability to pay for use of computing resources on a
short-term basis as needed and release them when needed. This allows for
rewarding conservation by letting machines and storage go when they are no
longer useful.
The construction and operation of
extremely large-scale, commodity-computer data centers at low-cost locations
was the key component of cloud computing. Other necessities that need to
decrease in cost are electricity, network bandwidth, operations, software and
hardware available at these very large economies of scale. There are 10
obstacles and opportunities for cloud computing to grow. These consist of:
availability/business continuity (use multiple cloud providers), data lock-in (
standardize APIs), data confidentiality and auditability (deploy encryption,
VLANsm firewalls), data transfer bottlenecks (FedExing disks, higher BW
switches), performance unpredictability (improved VM support, flash memory,
gang schedule VMs), scalable storage (invent scalable store), bugs in large
distributed systems (invent debugger that relies on distributed VMs), scaling
quickly (invent auto-scalar that relies on ML, snapshots for conservation),
reputation fate sharing ( offer reputation-guarding services like those for
email), software licensing (pay for use licenses). Cloud computing will
continue to grow tremendously, so developers should take it into account of
what techniques can be discovered and worked upon.