By: Artur Nowakowski
1. Introduction
With the growing popularity of the hosted service models, more and more application providers and data center executives start considering entering the SaaS market. However, many different aspects need to be analyzed before such a key decision can be made. The business aspects for application providers and application service providers (ASPs) have been described in the whitepaper "Business as
a Service – SaaS Billing and Business Models" (http://www.veraxsystems.com/en/download/pubfiles/
verax-saas-billing-and-business-models.pdf/get). However, in order to set up a successful ASP or SaaS business, the top-level commercial decisions and growth strategy must be coupled with architecture considerations.
1.1. Aim and scope
The aim of this document is to outline the most common technical approaches to SaaS applications and their provisioning platforms. By presenting the various solutions with their major advantages and drawbacks, the products offered by the market and side-by-side comparisons for some sample real-life applications and scenarios, its intent is to trigger analysis of the possible way to be taken in order to build a suitable on-demand application provisioning platform and enter the ASP / SaaS market.
1.2. Intended audience
CIOs, CTOs and high level technical engineers willing to launch basic ASP / SaaS and grow it over time or become customers for these services.
1.3. Definitions
Cloud computing – A sales model based on SaaS (and other similar models) where users pay only for usage of requested functionality. This model bases on the Internet and users are isolated from any technical details or licensing trouble.
Clustering/Failover Clustering – A hypervisor's ability to treat many physical machines as one logical virtualization server. A critical aspect of High Availability.
Dynamic Resource Management – Hypervisor's ability to automatically adjust the amount of allocated CPU/memory resources in response to dynamically changing workload of virtual machines.
Guest OS –An operating system running within a virtual machine.
High Availability –A solution ensuring certain level of operation continuity. For hypervisors, a functional ability essential to provide high level of operation continuity for virtual machines by using hardware redundancy and clustering. In virtualization practice, this term is equivalent to Failover Clustering. All legal aspects are regulated by SLA agreements between parties.
Hypervisor – A Virtual Machine Monitor, hardware or software solution enabling platform virtualization – it allows many operating systems (virtual machines) to run on the same physical server at the same time and concurrently use the same hardware.
Live Memory Management – An ability of a hypervisor to dynamically adjust the amount of memory allocated to a particular virtual machine without stopping it.
Live Migration – A hypervisor's ability to move a running virtual machine from one physical host machine to another without stopping it nor breaking any network connections between this virtual machine and remote clients.
Memory Over-Commit – A hypervisor's ability to allocate more total memory to all virtual machines than is available on a physical server.
Multi-tenancy – An architectural concept of hosted applications, where the customers share a single instance of the application with built-in data and configuration partitioning.
SaaS – Software as a Service, an on-demand software application sales and provisioning model. The applications are hosted by the provider (Application Service Provider) and users pay for remote usage.
Server consolidation – A business tendency to reduce the number of physical servers and use the platform virtualization and virtual servers instead.
SLA – Service Level Agreement – A contract detailing the service availability and reaction times in case of a failure.
Virtual machine – A virtual, simulated computer (platform virtualization) appearing to its users as a fully equipped machine with its own operating system (guest OS).
Virtualization – A set of technology solutions allowing simulation of computers and other physical devices.
2. Provider-side architecture
The choice of the architecture to be used for providing application services is critical for the business model and as such, it must be made in-line with the commercial decisions. The tight coupling between the two aspects is not just related to the obvious capital expenditure (CAPEX) required to get going.
The initial choice of the application and platform architectures must reflect the strategic future plans of the ASP, as switching from one model to another can be very expensive and technically challenging.
The main question to be answered by each and every ASP is how to draw the separation line between the customers, their service and data in particular. The application users must be ensured security, availability and performance. They may be using various services and many kinds of licenses. Some of them may negotiate strict SLAs, while others will be satisfied by the basic levels. Efficient handling of update subscriptions, resource demands, backup policies and other unique customer requirements depends on the application and platform architecture used, so the link between the commercial offering and the solution deployed is self explanatory.
The separation line can be drawn on multiple levels – from hardware, operating system or connectivity through the application business logic to the database or file system storage level. The provider-side architectures presented below are the two most common, but contrary models. Both have their significant advantages, but also major drawbacks, which can make them unacceptable in certain circumstances or solutions. It must be therefore mentioned, that they can be used in mixed deployments, with the separation applied in a way that makes the overall application service providing the most effective technically and beneficial business-wise. The combinations will vary with each ASP, the multitude services they offer and their customer profiles.
2.1. Multi-tenancy architecture
The simplest way to provide basic application services seems to be implementation of the separation logic within the application itself. In this approach, called multi-tenancy, a single application and database instance is shared by many customers, and their data and configuration are carefully partitioned by the application logic.
The most important feature of a multi-tenant application is the security and robustness of the data isolation mechanism. Another important requirement is to provide a high degree of customization to support the customers' needs – be it workflow configuration, user roles or "look & feel" flexibility to support branding.
The main benefit of a multi-tenancy architecture is that there is no need of setting up an expensive multi server environment platform on the ASP side and easier configuration management. However, as the customers share the hardware, storage mechanisms and the application instance, all of them may equally suffer from failures or increased load caused by a single organization.
Because of the difficulty in providing the necessary performance and organizational issues, this approach alone is usually limited only to ASPs with a low amount of non time-critical services.
2.2. Multi-instance architecture
A multi-instance architecture represents a philosophy opposite to multi-tenancy. In this approach, also referred to as single-tenancy, every customer is assigned a dedicated instance of the application with the underlying hardware, connectivity and storage resources. In other words, every customer uses their own application instance and resources fully isolated from other customers.
As a natural consequence, this model makes it easier to ensure the required security and performance parameters. Scalability can be easily achieved and targeted by changing the amount of resources available to a particular customer instance.
On the other hand, providing applications in this model is only possible with a server farm and a suitable platform for the provisioning of new customer accounts, both of which are a significant cost to ASPs.
The key word which appears in this approach is virtualization - the only way to keep the multi server environment scalability costs at a reasonable level. It is described in the following section.
Virtualization
Virtualization has been one of IT's hot topics over the recent years. Large enterprises and technology-oriented companies consolidate their servers and re-design their approach to infrastructure management. It is a concept of dividing the resources of a computer into a number of isolated environments by applying various forms of separation, e.g. memory or storage partitioning, time sharing, emulation, etc
The early-age issues faced by virtualization, such as low hardware performance, lack of OS support or unreliable management software lacking important functionality are history now. With the mature existing technology, the benefits of virtualization are clear to the market and include:
• Server consolidation and maximized utilization – several underutilized servers can be migrated into one machine
• Better reliability and business continuity – easy migrations, failovers, disaster recovery, reduced maintenance downtimes
• Flexibility – decoupling business from hardware allows better reactions to on-demand resource needs.
• Portability – environments can be easily relocated or moved to other hardware
• Reduced administration and hardware costs – replicating environments, lower desktop hardware needs
• Security – sandboxes for untrusted applications, easy recovery, centralized access control, etc.
A wide range of needs, increasing numbers of platforms and applications, as well as various implementation approaches result in existence of many types of virtualization, which can be used by ASPs depending on their business model. The following are the most popular types of virtualization:
• Platform virtualization – Virtualization of computers. In this model one big machine is used as
a host for many virtual computers used as servers for the applications. Every simulated computer is appears to users as fully equipped machine. Examples: VMware ESX Server, Citrix XenServer.
• Operating system virtualization – In this model the virtualized part is the operating system. One OS kernel is cloned and used by many OS instances. From the user perspective such structure looks like separated yet identical machines. Examples: Linux jails, Sun Solaris containers, Microsoft Virtualization Server, FreeVPS.
• Desktop virtualization (Virtual Desktop Infrastructure, VDI) – A virtualization of a desktop session on a remote computer. It offers users a possibility to run the applications on a remote computer and interact with them in the same manner as with locally installed versions. Multiple and independent users are supported. Examples: Microsoft Terminal Services, VMware Virtual Desktop, Citrix XenDesktop.
3. Client architecture
While it is obvious that the provider-side architecture is critical in terms of the business strategy and vastly affects expenditure on infrastructure, application development and support and maintenance services, there is a risk that the choice of the client-side approach can be easily made without much thought. However a poorly designed server side architecture causing enormous costs to the providers may not necessarily be a huge problem for the customers, but an unsatisfactory user experience on the client side can make all the sales and customer loyalty difference, so essential for the business in the competitive market. The choice of the appropriate solution may also vastly depend on the strategy and future plans, e.g. when multiple integrated services are to be offered following just a single application in the start-up phase.
This means a right balance between a particular application's UI friendliness and the entire service providing means must be found. The key factors can be usability, responsiveness, infrastructure requirements (such as desktop computing power or network connectivity), overall performance, security policies or administrative effort required from the customer to handle the service, to name a few.
There are many ways the user interface for SaaS applications can be provided. The following subsections present a few of the most popular solutions.
3.1. Web-based clients
One of the most obvious choices for hosted applications is providing the user interface through a web browser. This popular solution seems to be a good balance between user-friendly front-ends and using light, thin clients without much need for special installations or additional requirements.
Due to a rapid development of web-based technologies and depending on the required level of user interaction, the types of user interfaces can range from the most static "good old" simple synchronous request-response applications, through more dynamic ones with asynchronous communication features (e.g. AJAX-based search phrase suggestions, partial refreshes, etc.) to extended visual interfaces based on third party frameworks, such as Adobe Flex or Microsoft Silverlight, which guarantee a level of interaction comparable to desktop applications.
Obviously, the differences are not just limited to the user experience. The use of the various solutions may be restricted due to the available network bandwidth, browser incompatibility, platform constraints (e.g. Microsoft Silverlight or Active Server Pages) or the need to install additional frameworks or plugins in order to be able to use the application.
3.2. Virtual desktops
A very convenient way to provide access to serviced applications is use of Virtual Desktop Infrastructure (VDI). A virtual desktop is a remote graphical access to a user session on another machine. In other words, the users are able to see and use a remote computer's desktop as a window on their desktop.
It can be configured to allow access to an entire desktop or just particular applications.
A major problem with graphic terminal access for ASPs is a requirement of setting up a server dedicated for hosting user sessions (terminal server). Such server applications require allocation of additional resources and they are usually not free. Moreover, in some cases they require purchase of Terminal Client Access Licenses (e.g. TCALs for Microsoft Terminal Services®) which can constitute an essential proportion of the general expenditure.
On the client side, the use of virtual desktops usually requires higher network capacities, as the load generated by terminal access connections is usually higher than for web based clients. On the other hand, the virtualization of the client side may be beneficial for the customers by reducing the hardware requirements of the desktop machines. This is especially vital for businesses with a large number of terminals, e.g. call centers.
When using the virtual desktop approach, no client programs are installed on the user machines. The only requirement is installation of client software providing the terminal access. An add
No comments:
Post a Comment