SAAS, SOA and Cloud computing
What is SaaS?
Why SaaS?
Service Oriented Architecture (SOA):
Before cloud computing options for computing power were:
1. You called up one of the big server manufacturers (HP, IBM, Dell, etc.) and ordered a server. When it arrived, you could either install it in your own data center or in colocation space that you had rented from somebody like Switch or Equinix. The responsibility was yours for acquisition, installation, and maintenance.
2. You called up a leasing company and told them you wanted to lease some equipment. You selected from among their stock and they delivered it to your door. Then, just as if you had purchased it yourself, you had the responsibility of installing and configuring it in your data center or colo facility.
3. You could rent a server from a managed service provider (Savvis, Rackspace, Terremark, etc.). The MSP would allocate you a server from their own internal stock, deploy it for you in their data center, and then turn over the keys for you to operate it. The line between the service provider responsibilities and your responsibilities was flexible. MSPs offered a variety of services (backup and “remote hands” being two popular ones) in addition to simple server rental.
Cloud Computing:
SIMPLE: It is sold on demand, typically by the bandwidth/time; it is elastic -- a user can have as much or as little of a service as they want at any given time; and the service is fully managed by the provider.
According to VMWare: "Cloud computing is an approach to computing that leverages the efficient pooling of on-demand, self-managed virtual infrastructure consumed as a service. Sometimes known as utility computing, clouds provide a set of typically virtualized computers which can provide users with the ability to start and stop servers or use compute cycles only when needed, often paying only upon usage."
- See more at: http://www.vmware.com/cloud-computing/public-cloud/faqs#sthash.NrxOVtq6.dpuf
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models. (The NIST Definition of Cloud Computing, SP800-145.pdf)
National Institute of Standards and Technology (NIST) defines cloud computing as having five “essential characteristics”. It is reasonable to assume that missing any one of these essential characteristics means a service or computing capability cannot be considered as Cloud Computing.
SaaS, PaaS, IaaS:
Some of the most popular IaaS providers are:
Some of the most popular PaaS providers:
NIST Defintion of Cloud Computing lists four deployment models:
Multi-Tenancy:
Multi-tenancy refers to a principle in Software Architecture where a single instance of the software runs on a server, serving multiple client-organizations.
Separate Databases
Same DB, separate schemas
Same DB, shared schema
Clustering:
Connecting two or more computers together in such a way that they behave like a single computer. Clustering is used for parallel processing, load balancing and fault tolerance.
Clustering is a popular strategy for implementing parallel processing applications because it enables companies to leverage the investment already made in PCs and workstations. In addition, it's relatively easy to add new CPUs simply by adding a new PC to the network.
Virtualization:
By means of Virtualization, you can separate the operating system from the hardware that is running it, this allows easy migration of the operating system to other hardware. VMWare is one of the vendors of the virtualization software.
Client Installed (ex. VMWare Fusion, Oracle VirtualBox) - lets you install one OS within another OS
Hypervisors (ex. VMWare, Xen, KVM ) - more powerful, used in cloud computing. Installed underneath the actual operating system and provides basic functionality to allow managing the actual OS for fault tolerance, replication, etc. Comes with management software that remotely manages the OS's on the hypervisors.
- Software as a service (SaaS; pronounced /sæs/ or /sɑːs/ ) is a software delivery model in which software and associated data are centrally hosted on the cloud by independent software vendors (ISVs) or application service providers (ASPs). (Wikipedia)
- A software in the cloud delivered over a thin client (browser)
Why SaaS?
- No need to install on the client machine
- One place for data hosting, easy to share
- Easy upgrade/troubleshooting/maintenance
- Reduces/Removes need for dedicated resources
- Price efficient for client - “pay as you go”
Service Oriented Architecture (SOA):
- All components are designed to be independent services
- Easy to troubleshoot/replace
- Downside: deeper software stack of network interfaces causes performance hit; partial failures can cause dependability problems
Before cloud computing options for computing power were:
1. You called up one of the big server manufacturers (HP, IBM, Dell, etc.) and ordered a server. When it arrived, you could either install it in your own data center or in colocation space that you had rented from somebody like Switch or Equinix. The responsibility was yours for acquisition, installation, and maintenance.
2. You called up a leasing company and told them you wanted to lease some equipment. You selected from among their stock and they delivered it to your door. Then, just as if you had purchased it yourself, you had the responsibility of installing and configuring it in your data center or colo facility.
3. You could rent a server from a managed service provider (Savvis, Rackspace, Terremark, etc.). The MSP would allocate you a server from their own internal stock, deploy it for you in their data center, and then turn over the keys for you to operate it. The line between the service provider responsibilities and your responsibilities was flexible. MSPs offered a variety of services (backup and “remote hands” being two popular ones) in addition to simple server rental.
Cloud Computing:
SIMPLE: It is sold on demand, typically by the bandwidth/time; it is elastic -- a user can have as much or as little of a service as they want at any given time; and the service is fully managed by the provider.
According to VMWare: "Cloud computing is an approach to computing that leverages the efficient pooling of on-demand, self-managed virtual infrastructure consumed as a service. Sometimes known as utility computing, clouds provide a set of typically virtualized computers which can provide users with the ability to start and stop servers or use compute cycles only when needed, often paying only upon usage."
- See more at: http://www.vmware.com/cloud-computing/public-cloud/faqs#sthash.NrxOVtq6.dpuf
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models. (The NIST Definition of Cloud Computing, SP800-145.pdf)
National Institute of Standards and Technology (NIST) defines cloud computing as having five “essential characteristics”. It is reasonable to assume that missing any one of these essential characteristics means a service or computing capability cannot be considered as Cloud Computing.
- On-demand self-service — Resources can be provided by the customer in a fully-automated fashion, without requiring human interaction at the service provider. The ultimate goal is a resource to be available “instantly,” whenever a customer requires it.
- Broad network access — Capabilities are available over the network and can be accessed by a variety of end-user terminal devices, including thick clients on desktop machines as well as thin clients on mobile devices (phones, tablets, laptops, etc.).
- Resource pooling — The service provider is expected to construct the physical infrastructure such that all resources are located in one or more common pools. Generally, customers are not able to specify or even know the exact physical location of the resources that are assigned to them from the pool. In practice, most providers offer some high-level location choices, such as a geographical region or data center (USA east coast vs. west coast, or USA vs. Europe, for example).
- Rapid elasticity — Users should be able to rapidly allocate and release capacity as required by applications. Ideally, users could request infinite elasticity on instantaneous timescales. The underlying physical reality prevents this (it still takes time to receive and configure new hardware), but with a large enough common resource pool serving numerous customers, the service can deliver this in practice for reasonable elastic requests. It’s important to note that elasticity is a two-way street — applications need to be able to allocate new resources as well as release them when they no longer need them.
- Measured service. Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Typically this is done on a pay-per-use or charge-per-use basis. Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.
SaaS, PaaS, IaaS:
- Software-as-a-service (SaaS) — These are high level applications delivered over the network as a complete service. Examples of SaaS include such things as Google GMail, Microsoft Office 365, Salesforce.com, and Intuit QuickBooks online.
- Platform-as-a-service (PaaS) — Platforms represent mid-level application functionality that can be used by programmers to build new applications. Examples are Amazon Web Service’s Relational Database Service (RDS), Google’s AppEngine, and Salesforce.com’s Force.com.
- Infrastructure-as-a-service (IaaS) — Infrastructure represents the lowest level of cloud service and provides users with a simple instance of a traditional operating system running “in the cloud.” Users can then install off-the-shelf or custom applications onto the instance as required. Typically, IaaS providers support a few dominant operating systems. Both Windows and Linux variants for x86 processors are common. Examples are Amazon Web Services, Rackspace, Savvis, Terremark, and your VMware-based private cloud.
Some of the most popular IaaS providers are:
- Amazon Web Services AWS
- Windows Azure
- Google Compute Engine
- Rackspace open cloud
- VMWare
Some of the most popular PaaS providers:
- Google Apps Engine
- Heroku
- Amazon Web Services AWS
- Windows Azure
NIST Defintion of Cloud Computing lists four deployment models:
- Private cloud. The cloud infrastructure is provisioned for exclusive use by a single organization comprising multiple consumers (e.g., business units). It may be owned, managed, and operated by the organization, a third party, or some combination of them, and it may exist on or off premises. More on Private Clouds.
- Community cloud. The cloud infrastructure is provisioned for exclusive use by a specific community of consumers from organizations that have shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be owned, managed, and operated by one or more of the organizations in the community, a third party, or some combination of them, and it may exist on or off premises. More onCommunity Clouds.
- Public cloud. The cloud infrastructure is provisioned for open use by the general public. It may be owned, managed, and operated by a business, academic, or government organization, or some combination of them. It exists on the premises of the cloud provider. More on Public Clouds.
- Hybrid cloud. The cloud infrastructure is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds). More on Hybrid Clouds.
Multi-Tenancy:
Multi-tenancy refers to a principle in Software Architecture where a single instance of the software runs on a server, serving multiple client-organizations.
Separate Databases
Same DB, separate schemas
Same DB, shared schema
Clustering:
Connecting two or more computers together in such a way that they behave like a single computer. Clustering is used for parallel processing, load balancing and fault tolerance.
Clustering is a popular strategy for implementing parallel processing applications because it enables companies to leverage the investment already made in PCs and workstations. In addition, it's relatively easy to add new CPUs simply by adding a new PC to the network.
Virtualization:
By means of Virtualization, you can separate the operating system from the hardware that is running it, this allows easy migration of the operating system to other hardware. VMWare is one of the vendors of the virtualization software.
Client Installed (ex. VMWare Fusion, Oracle VirtualBox) - lets you install one OS within another OS
Hypervisors (ex. VMWare, Xen, KVM ) - more powerful, used in cloud computing. Installed underneath the actual operating system and provides basic functionality to allow managing the actual OS for fault tolerance, replication, etc. Comes with management software that remotely manages the OS's on the hypervisors.
TEST YOURSELF:
- Platform as a Service (PaaS) and Infrastructure as a Service are two of the three main categories of cloud computing. What's the third category?
- What does SaaS stand for?
- What does SOA stand for?
- What does IaaS and PaaS stand for?
- What is the difference between IaaS and PaaS? Name an IaaS provider. Name PaaS provider
- Can you think of an example of an application that would need to be multi-tenant?
- In a ______ cloud, an organization might use a public cloud service, such as Amazon's Elastic Compute Cloud (EC2) for general computing but store customer data within its own data center.
- What is a private cloud?
- What is Cloud Computing replacing?
A.Corporate data centers
B.Expensive personal computer hardware
C.Expensive software upgrades
D.All of the above - What is the number one concern about cloud computing?
A.Too expensive
B.Security concerns
C.Too many platforms
D.Accessibility - Which of these companies is not a leader in cloud computing?
A.Google
B.Amazon
C.Blackboard
D.Microsoft - Google Docs is a type of cloud computing.
A.True
B.False - Which of these is not a major type of cloud computing usage?
A.Hardware as a Service
B.Platform as a Service
C.Software as a Service
D.Infrastructure as a Service - True or False? An Internet connection is necessary for cloud computing interaction.
- Which of these should a company consider before implementing cloud computing technology?
A.Employee satisfaction
B.Potential cost reduction
C.Information sensitivity
D.All of the above - True or False? In order to participate in cloud-computing, you have to install software.
- True or False? You need a specific OS in order to participate in cloud computing
References in this section:
http://blog.softwareadvice.com/articles/enterprise/saas-faqs-1072811/
Engineering Software as a Service: An Agile Approach Using Cloud Computing by Armando Fox , David Patterson
Wikipedia: http://en.wikipedia.org/wiki/
http://www.rackspace.com/knowledge_center/whitepaper/understanding-the-cloud-computing-stack-saas-paas-iaas
http://leverhawk.com/what-is-cloud-computing-tutorial-2012120519
http://leverhawk.com/what-is-a-private-cloud-tutorial-20130423252
http://www.service-architecture.com/articles/cloud-computing/index.html
http://www.webopedia.com/TERM/C/clustering.html