Cloud Computing
(definition) The delivery of computing as a service over a network, whereby distributed resources are provided to the end user as a utility.
Cloud computing transforms IT from products to services and strives to eliminate up-front costs and ownership of IT resources. In cloud computing the client does not have to buy and own every aspect related to IT.
Requirements of Internet-scale systems
Ubiquity
being accessible from anywhere at any time, from a multitude of devices.
High-availability
the service must be “always up”. 99.999% (about 6 minutes a year) is a typical threshold for a high-availability service.
Low latency
fast and responsive access times.
Scalability
the ability to deal with seasonality and virality, which causes peaks and troughs in the traffic over long and short periods of time.
Cost effectiveness
an Internet-scale service requires much more infrastructure than a traditional application as well as better management. One way to streamline costs is by making services easier to manage, and reducing the number of administrators handling a service. Smaller services can afford to have a low service-to-admin ratio (e.g. 2:1, meaning a single administrator must maintain two services); however, to maintain profitability, services like Microsoft Bing must have high service-to-admin ratio (e.g. 2500:1, meaning a single administrator maintains 2500 services)
- Interoperability
many of these services are often used together and hence must provide an easy interface for reuse and support standardized mechanisms for importing and exporting data.
Enabling Technologies
Cloud computing has various enabling technologies, which include
networking
Modern networks make it possible for computers to communicate in a fast and reliable manner.
virtualization
allows managing the complexity of the cloud via abstracting and sharing its resources across users through multiple virtual machines.
resource management
.
utility computing
offers numerous charging structures for the leasing of compute resources.
programming models
give users the flexibility to express parallel programs as sequential computation units (e.g., functions as in MapReduce and vertices as in GraphLab). Such programming models' runtime systems typically parallelize, distribute, and schedule computational units, manage inter-unit communication, and tolerate failures.
parallel and distributed computing
allow distributed entities located at networked computers to communicate and coordinate their actions in order to solve certain problems, represented as parallel programs.
storage technologies.
Technologies such as large-scale storage systems, distributed file systems, as well as novel database architectures are crucial for managing and storing data in the cloud.
Cloud Building Blocks
infrastructure
- The infrastructure includes the physical resources in a data center.
- Compute resources, typically servers, which are computers designed for enterprise computing (as opposed to user workstations). They usually are rack mounted to utilize space efficiently.
- Storage resources maintain the cloud's data, and application storage use usually is charged in terms of capacity usage (e.g., per gigabyte or terabyte usage).
- Network resources enable communication between servers as well as servers and clients.
- Software that manages the compute, network and storage infrastructure.
resource sharing
- The resource sharing layer typically entails software and hardware techniques that allow the sharing of the physical resources while offering a certain level of isolation.
- Provide software, computation, network and storage services.
- Allow a shared environment whereby multiple hardware images (e.g., virtual machines) and system images (e.g., general-purpose OSs) can run side by side on a single infrastructure along with security, resource, and failure isolations. * These isolation properties are provided by a combination of hardware and software techniques.
- Consolidate physical servers into virtual servers that run on fewer physical servers.
- Deliver agility and elasticity to rapidly respond to users' resource and service demands.
- These ideas usually are addressed through virtualization,
development platforms
- The development platforms are utilized to develop cloud applications. Development platforms allows application developers to write application software in terms of a cloud's application programming interface (API). Development platforms typically provide specifications that developers can use for routines, data structures, object classes, libraries and variables.
application software
- Application software: normally is the system component that the end user utilizes.
Cloud Computing Services
Software as a service (SaaS)
SaaS is any application in which the end user has access to a software application over the network and pays based on a variety of business models some of which are free. -EX: office 365, Google Drive, Gmail, Dropbox
(definition) Software as a service (SaaS) is a software delivery model in which software and associated data are hosted on a cloud. SaaS applications typically are accessed by users using a thin client via a Web browser.
Use Cases for SaaS
- SaaS is a good model for certain types of applications, such as:
- Applications that are fairly standardized and do not require
custom solutions
. E-mail is a good example of a fairly standardized application.- Applications that have a significant need for remote/web/mobile access, such as mobile sales management software.
- Applications that have a short-term need, such as collaborative software for a particular project.
- Applications in which demand spikes significantly, such as tax or billing software that is used once a month.
- However, there are situations where SaaS may not be the right choice, such as:
- Applications that require offline access to data.
- Applications that require significant customization.
- Applications in which policies or regulations disallow data from being hosted externally.
- Applications in which existing in-house solutions satisfy all of the organization's needs.
A company is creating new algorithms for accurate face recognition software.
The company is interested in moving to the cloud for its application development needs.
Is software as a service the right model for this particular project?
Incorrect.
Because the company is creating its own algorithms for face recognition,
SaaS may not provide enough flexibility for the company to write software from scratch.
The company should consider PaaS or IaaS instead.
Platform as a service (PaaS)
PaaS is the offering of software development platforms as a service which are utilized to develop SaaS applications. -EX: Google App Engine
(definition) Platform as a service (PaaS) is a computing platform that allows for the creation of Web applications in a simplified manner without the complexity of purchasing and maintaining any of the underlying software and infrastructure.
PaaS is analogous to SaaS, except that, rather than software delivered over the Web, it is a platform for the creation of software that is delivered over the Web.
- PaaS is a good model for certain types of applications, such as:
- Rapid application development scenarios.
- Applications that require Web-based infrastructure to handle varying loads from users.
- Applications that may not need redeployment or migration to other platforms in the future.
- There are certain scenarios in which PaaS may not be ideal, such as:
- When the application needs to be highly portable in terms of where it is hosted because PaaS APIs can vary from one PaaS provider to another.
- When proprietary languages or APIs could impact the development process or cause trouble in the future due to vendor lock-in.
- When application performance requires customization of the underlying hardware and software.
Why:
"The applications deplyed on Google App Engine
have the same security, privacy, and data protection policies as that of Google's applications.
Hence, end users can take advantage of the reliability, performance, and security of Google's infrastructure." is true?
Ans:
PaaS has built-in scaling mechanisms of deployed software
that are automatically handled by the cloud provider with load-balancing and failover mechanisms.
Infrastructure as a service (IaaS)
IaaS is the leasing of virtualized infrastructure over the network. In this last model, the end user has the flexibility to install and use any software they please on the leased infrastructure. -EX: Amazon Elastic Compute Cloud (EC2) (definition) Infrastructure as a service (IaaS) is a cloud computing model in which cloud providers make computing resources available to clients, usually in the form of instances or virtual machines.
Use Cases for IaaS
- IaaS makes sense in a number of situations:
- When demand for computing resources is volatile. For example, e-commerce sites experience the most demand during holiday seasons.
- For new organizations that do not have the capital to invest in infrastructure on site.
- When organizations need to grow their IT resources rapidly, such as Internet startup companies.
- For temporary projects or temporary infrastructural needs (when organizations require a large amount of compute power for a limited amount of time).
- IaaS may not be the best option when:
- Regulatory compliance does not allow data to be offshored or outsourced.
- When applications have strict quality-of-service (QoS) requirements.
- When organizations have existing in-house customized infrastructure to meet their IT needs.
Types of Clouds
Public Cloud
The cloud infrastructure is owned by a cloud provider and is accessible to the public over the Internet.
Private Cloud
The cloud infrastructure is owned by an organization. The infrastructure is accessible to specific users via the organization's intranet.
Hybrid Cloud
A hybrid cloud is a combination of public and private clouds. The infrastructure includes an owned private cloud (owned by organization) and a leased public cloud (owned by cloud provider).