In some ways, SaaS is very similar to the old thin-client model of software provision, where clients, in this case usually web browsers, provide the point of access to software running on servers. SaaS is the most familiar form of cloud service for consumers. SaaS moves the task of managing software and its deployment to third-party services. Among the most familiar SaaS applications for business are customer relationship management applications like Salesforce, productivity software suites like Google Apps, and storage solutions brothers like Box and Dropbox.
Use of SaaS applications tends to reduce the cost of software ownership by removing the need for technical staff to manage install, manage, and upgrade software, as well as reduce the cost of licensing software. SaaS applications are usually provided on a subscription model.
PLATFORM AS A SERVICE
PaaS functions at a lower level than SaaS, typically providing a platform on which software can be developed and deployed. PaaS providers abstract much of the work of dealing with servers and give clients an environment in which the operating system and server software, as well as the underlying server hardware and network infrastructure are taken care of, leaving users free to focus on the business side of scalability, and the application development of their product or service.
As with most cloud services, PaaS is built on top of virtualization technology. Businesses can requisition resources as they need them, scaling as demand grows, rather than investing in hardware with redundant resources.
Examples of PaaS providers include Heroku, Google App Engine, and Red Hat’s OpenShift.
INFRASTRUCTURE AS A SERVICE
Moving down the stack, we get to the fundamental building blocks for cloud services. IaaS is comprised of highly automated and scalable compute resources, complemented by cloud storage and network capability which can be self-provisioned, metered, and available on-demand.
IaaS providers offer these cloud servers and their associated resources via dashboard and/or API. IaaS clients have direct access to their servers and storage, just as they would with traditional servers but gain access to a much higher order of scalability. Users of IaaS can outsource and build a “virtual data center” in the cloud and have access to many of the same technologies and resource capabilities of a traditional data center without having to invest in capacity planning or the physical maintenance and management of it.
IaaS is the most flexible cloud computing model and allows for automated deployment of servers, processing power, storage, and networking. IaaS clients have true control over their infrastructure than users of PaaS or SaaS services. The main uses of IaaS include the actual development and deployment of PaaS, SaaS, and web-scale applications.
There are a lot of providers offering Infrastructure as a Service such as Navisite, exoscale, and Softlayer reach with their own unique value proposition and service portfolio to choose from.
What is virtualization?
"Virtualization software makes it possible to run multiple operating systems and multiple applications on the same server at the same time," said Mike Adams, director of product marketing at VMware, a pioneer in virtualization and cloud software and services. "It enables businesses to reduce IT costs while increasing the efficiency, utilization and flexibility of their existing computer hardware."
Grid: Grid is defined as a large collection as machines connected by a private network and offers a set of services to users, it acts as a sort of supercomputer by sharing processing power across the machines. Source: Tenenbaum, Andrew.
Cluster: A cluster is different from those two. Clusters are two or more computers who share a network connection that acts as a heart-beat. Clusters are configurable in Active-Active or Active-Passive ways. Active-Active being that each computer runs it's own set of services (Say, one runs a SQL instance, the other runs a web server) and they share some resources such as storage. If one of the computers in a cluster goes down the service fails over to the other node and almost seamlessly starts running there. Active-Passive is similar, but only one machine runs these services and only takes over once there's a failure.
Load balancing can also happen without clustering when we have multiple independent servers that have same setup, but other than that, are unaware of each other. Then, we can use a load balancer to forward requests to either one server or other, but one server does not use the other server’s resources. Also, one resource does not share its state with other resources.
Each load balancer basically does following tasks:
Continuously check which servers are up.
When a new request is received, send it to one of the servers as per the load balancing policy.
When a request is received for a user who already has a session, send the user to the *same* server (This part is important, as otherwise user would keep going between different servers, but not able to really do any work). This part is not required for serving static pages, in that case, there are no user sessions.
Terminal Services provides the ability to host multiple, simultaneous client sessions on Microsoft Windows Server 2003. Terminal Server is capable of directly hosting compatible multi-user client desktops running on a variety of Windows-based and non Windows-based hardware. Standard Windows-based applications do not need modification to run on the Terminal Server, and all standard Windows Server 2003-based management infrastructure and technologies can be used to manage the client desktops.
Application service provider (ASP) An application service provider (ASP) is a company that offers individuals or enterprises access over the Internet to applications and related services that would otherwise have to be located in their own personal or enterprise computers. Sometimes referred to as "apps-on-tap," ASP services are expected to become an important alternative, not only for smaller companies with low budgets for information technology, but also for larger companies as a form of outsourcing and for many services for individuals as well. Early applications include:
Remote access serving for the users of an enterprise
An off-premises local area network to which mobile users can be connected, with a common file server
Specialized applications that would be expensive to install and maintain within your own company or on your own computer
Hewlett-Packard, SAP, and Qwest have formed one of the first major alliances for providing ASP services. They plan to make SAP's popular R/3 applications available at "cybercenters" that will serve the applications to other companies. Microsoft is allowing some companies to offer its BackOffice products, including SQL Server, Exchange and Windows NT Server on a rental, pay-as-you-use basis. Hypervisor A hypervisor is a function which abstracts -- isolates -- operating systems and applications from the underlying computer hardware. This abstraction allows the underlying host machine hardware to independently operate one or more virtual machines as guests, allowing multiple guest VMs to effectively share the system's physical compute resources, such as processor cycles, memory space, network bandwidth and so on. A hypervisor is sometimes also called a virtual machine monitor.
MULTI-TENANCY VS. MULTI-INSTANCE If you are unfamiliar with the terms, multi tenancy commingles the data and processing for multiple clients in a single application instance. By contrast, a multi instance architecture uses one application instance per client. With the multi-instance model, organizations must devote their time to efficiently creating and managing multiple application instances, whereas organizations that opt for multi-tenancy often need to invest in application code to prevent the exposure of data from one client to another. However, some providers, such as Apprenda, offer single-instance multi tenancy architecture as a standard platform service, guaranteeing security, streamlining the development cycle, and ensuring the efficient and high-quality utilization of resources. Hosted services Hosted services are outsourced information technology (IT) systems and functions. A hosted service provider owns and oversees infrastructure, software and administrative tasks and makes the system available to clients, usually over the Internet
The three main elements of hosted services are software as a service (SaaS), platform as a service (PaaS) and infrastructure as a service (IaaS). In combination, the three elements encompass software and network capacity as well as the equipment used to support operations, including storage, hardware, servers and networking components.
Private vs. Public Cloud: What’s the Difference?
If you’ve been researching cloud computing, you’re probably well aware of the private vs. public cloud debate. Before you decide which end of the debate you side with, it’s important to know the difference between the two.
A private cloud hosting solution, also known as an internal or enterprise cloud, resides on company’s intranet or hosted data center where all of your data is protected behind a firewall. This can be a great option for companies who already have expensive data centers because they can use their current infrastructure. However, the main drawback people see with a private cloud is that all management, maintenance and updating of data centers is the responsibility of the company. Over time, it’s expected that your servers will need to be replaced, which can get very expensive. On the other hand, private clouds offer an increased level of security and they share very few, if any, resources with other organizations.
The main differentiator between public and private clouds is that you aren’t responsible for any of the management of a public cloud hosting solution. Your data is stored in the provider’s data center and the provider is responsible for the management and maintenance of the data center. This type of cloud environment is appealing to many companies because it reduces lead times in testing and deploying new products. However, the drawback is that many companies feel security could be lacking with a public cloud. Even though you don’t control the security of a public cloud, all of your data remains separate from others and security breaches of public clouds are rare.
You can think of the OData service as a database exposed through an HTTP REST interface. When you work with a database you are working with records in a table. You perform one of four operations on the records: create, read, update, or delete. These operations are known as CRUD operations. OData shares this same concept of record manipulation.
An OData service has three basic components, entities (data model types), entity sets (collections), and OData operations. A collection (like a database table) contains instances (like database records) of a specific entity type. Entity types are data structures that are used by collections and have key properties whose values uniquely identify one instance from another. OData operations (like database stored procedures) are pieces of custom logic that you can call.
OData syntax in HTTP request headers
OData defines a few HTTP request headers that you can optionally set. You can use OData-specific values for the Accept header like application/json;odata.metadata=none to control the amount of metadata included in the response. The default is odata.metadata=minimal. For brevity, all examples in this document assume odata.metadata=none.
Another header you can set is OData-MaxVersion. The Azure Search Service API supports OData V4 so you should set OData-MaxVersion to "4.0". This tells the API to expect the OData V4 format in the request body, and to send responses in the OData V4 format. In the future as we add support for newer versions of the OData protocol, you may set this header to a different value. The Azure Search service API does not support versions of OData older than V4.