2
2
2
Utility Computing, Elastic Computing, Ajax: asynchronous ‘rich’ interfaces, Mashups: User interface, Services
Virtualization Technology: Virtualization applications in enterprises, Pitfalls of virtualization Multitenant
software: Multi-entity support, Multi-schema approach, Multi-tenancy using cloud data stores.
UTILITY COMPUTING
Utility computing is a service provisioning model in which a service provider makes computing resources and
infrastructure management available to the customer as needed, and charges them for specific usage rather
than a flat rate. Like other types of on-demand computing (such as grid computing), the utility model seeks to
maximize the efficient use of resources and/or minimize associated costs.
The word utility is used to make an analogy to other services, such as electrical power, that seek to meet
fluctuating customer needs, and charge for the resources based on usage rather than on a flat-rate basis. This
approach, sometimes known as pay-per-use or metered services is becoming increasingly common in
enterprise computing and is sometimes used for the consumer market as well, for Internet service, Web site
access, file sharing, and other applications.
Another version of utility computing is carried out within an enterprise. In a shared pool utility model, an
enterprise centralizes its computing resources to serve a larger number of users without unnecessary
redundancy.
ELASTIC COMPUTING
Elastic computing is the ability to quickly expand or decrease computer processing, memory and storage
resources to meet changing demands without worrying about capacity planning and engineering for peak
usage.
Elastic computing is a concept in cloud computing in which computing resources can be scaled up and down
easily by the cloud service provider. Elastic computing is the ability of a cloud service provider to provision
flexible computing power when and wherever required. The elasticity of these resources can be in terms of
processing power, storage, bandwidth, etc.
Cloud computing is about provisioning on-demand computing resources with the simplicity of a mouse click.
The amount of resources which can be sourced through cloud computing incorporates almost all the facets of
computing from raw processing power to massive storage space.
Besides providing these services on demand basis, the resources are elastic in nature, i.e. they can be easily
scaled depending upon the underlying resource requirements on run time without even disrupting the
operations and this ability is known as elastic computing. On a small scale this is done manually, but for larger
installations, the scaling is automatic. For example, a larger provider of online video could setup a system so
that the number of web-servers online scaled during peak viewing hours.
Ajax uses XHTML for content, CSS for presentation, along with Document Object Model and JavaScript
for dynamic content display.
Conventional web applications transmit information to and from the sever using synchronous
requests. It means you fill out a form, hit submit, and get directed to a new page with new information
from the server.
With AJAX, when you hit submit, JavaScript will make a request to the server, interpret the results, and
update the current screen. In the purest sense, the user would never know that anything was even
transmitted to the server.
XML is commonly used as the format for receiving server data, although any format, including plain
text, can be used.
AJAX is a web browser technology independent of web server software.
A user can continue to use the application while the client program requests information from the
server in the background.
Intuitive and natural user interaction. Clicking is not required, mouse movement is a sufficient event
trigger.
Data-driven as opposed to page-driven.
Rich Internet Application Technology
AJAX is the most viable Rich Internet Application (RIA) technology so far. It is getting tremendous industry
momentum and several tool kit and frameworks are emerging. But at the same time, AJAX has browser
incompatibility and it is supported by JavaScript, which is hard to maintain and debug.
Business (or enterprise) mashups define applications that combine their own resources, application
and data, with other external Web services. They focus data into a single presentation and allow for
collaborative action among businesses and developers. This works well for an agile
development project, which requires collaboration between the developers and customer (or
customer proxy, typically a product manager) for defining and implementing the business
requirements. Enterprise mashups are secure, visually rich Web applications that expose actionable
information from diverse internal and external information sources.
Consumer mashups combine data from multiple public sources in the browser and organize it through
a simple browser user interface.
Data mashups, opposite to the consumer mashups, combine similar types of media and information
from multiple sources into a single representation. The combination of all these resources create a new
and distinct Web service that was not originally provided by either source.
Benefits of Virtualization
1. Security: During the process of virtualization security is one of the important concerns. The security
can be provided with the help of firewalls, which will help to prevent unauthorized access and will keep
the data confidential. Moreover, with the help of firewall and security, the data can protect from
harmful viruses malware and other cyber threats. Encryption process also takes place with protocols
which will protect the data from other threads. So, the customer can virtualize all the data store and
can create a backup on a server in which the data can store.
2. Flexible operations: With the help of a virtual network, the work of it professional is becoming more
efficient and agile. The network switch implement today is very easy to use, flexible and saves time.
With the help of virtualization in Cloud Computing, technical problems can solve in physical systems. It
eliminates the problem of recovering the data from crashed or corrupted devices and hence saves
time.
3. Economical: Virtualization in Cloud Computing, save the cost for a physical system such as hardware
and servers. It stores all the data in the virtual server, which are quite economical. It reduces the
wastage, decreases the electricity bills along with the maintenance cost. Due to this, the business can
run multiple operating system and apps in a particular server.
4. Eliminates the risk of system failure: While performing some task there are chances that the system
might crash down at the wrong time. This failure can cause damage to the company but the
virtualizations help you to perform the same task in multiple devices at the same time. The data can
store in the cloud it can retrieve anytime and with the help of any device. Moreover, there is two
working server side by side which makes the data accessible every time. Even if a server crashes with
the help of the second server the customer can access the data.
5. Flexible transfer of data: The data can transfer to the virtual server and retrieve anytime. The
customers or cloud provider don’t have to waste time finding out hard drives to find data. With the
help of virtualization, it will very easy to locate the required data and transfer them to the allotted
authorities. This transfer of data has no limit and can transfer to a long distance with the minimum
charge possible. Additional storage can also provide and the cost will be as low as possible.
MULTISCHEMA APPROACH
Each tenant's data is kept in a distinct database schema on a single database instance. There are 2 different
ways to define JDBC Connections here:
Connections could point specifically to each schema, as we saw with the Separate database approach.
This is an option provided that the driver supports naming the default schema in the connection URL or
if the pooling mechanism supports naming a schema to use for its Connections. Using this approach,
we would have a distinct JDBC Connection pool per-tenant where the pool to use would be selected
based on the “tenant identifier” associated with the currently logged in user.
Connections could point to the database itself (using some default schema) but the Connections would
be altered using the SQL SET SCHEMA (or similar) command. Using this approach, we would have a
single JDBC Connection pool for use to service all tenants, but before using the Connection it would be
altered to reference the schema named by the “tenant identifier” associated with the currently logged
in user.
Advantages of Multi-tenancy:
Multi-tenancy reduces cost by sharing same power resources and software across its clients. The software
requires licenses and support, and the cost for this will increase if you need to buy them for each
customer, as in the case of single-tenancy. Shared infrastructure will automatically lead to lower costs.
In a multi-tenant application, you’ll only have to monitor and provide administration for a single platform,
unlike single-tenant applications where you have to manage different sets for each client. This way a
multi-tenant SaaS provider can deliver more efficient and effective support, including problem resolution
and troubleshooting.
A multi-tenant architecture will make it easy for you to increase your capacity when more strength &
power is required. The total capacity of the entire system increases and becomes more scalable when you
bring in new hardware to the platform, not for merely a single client but all associated clients. Adding
features for a single client makes it available to other clients.
Upgrading the software version or system resources for multi-tenant applications are easy since there is a
single, centralized place for up gradation, installation and more.
Disadvantages of Multi-tenancy:
A multi-tenant app has lesser flexibility than a single-tenant app to set low-level configurations. This might
not be a problem for you, but if your application requires a lot of customization for each new tenant, then
a multi-tenant app might not be the best solution.
A multi-tenant app is more complex than an equivalent single-tenant app, whose configuration can
remain essentially static. In a single-tenant application, you don’t require any code to detect which tenant
a web request is intended for or to protect your clients from the leakage of data between tenants. The log
formats are simpler since logs are segregated with a separate instance of the application for each client.
Since a multi-tenant application is backed by a single database, running on a single server, it has lesser
areas prone to failure, but those failure points can prove a lot more disastrous. All tenants experience loss
of service when the database for a multitenant app is unavailable, unlike when a single-tenant application
instance breaks. It brings down a single tenant. Other instances continue unaffected.
Example of multi-tenancy
Multi-tenant clouds can be compared to the structure of an apartment building. Each resident has access to
their own apartment within the agreement of the entire building and only authorized individuals can enter the
specific units. However, the entire building shares resources such as water, electricity and common areas.
This is similar to a multi-tenant cloud in that the provider sets overarching quotas, rules and performance
expectations for customers but each individual customer has private access to their information.