Documente Academic
Documente Profesional
Documente Cultură
Introduction
In the short history of computing, there have been a few ideas that
have changed the focus of software engineering. The shift from mainframebased computing to desktop-based computing was one such idea. The
computer began to be seen as an individual device, storing personal data
and work, rather than an exclusively workplace-tool. Programming started to
focus on user-interfaces, smaller disks, less cpu power and personalized tools
for individuals, and families. The move towards mobile-based applications is,
to some extent, an extension of the personalization idea. However, the idea
of cloud computing, also known as utilitybased computing, is prompting a
move back towards enterprise-scale computing. Combining ideas of
virtualization and data centers, cloud computing promises a near-infinite
amount of computing power, storage and bandwidth. All of this at costs that
are within the reach of small enterprises, and even individuals. One of the
major selling-points of the cloud is the payper-use model of revenue
generation. In this model, much like public utilities of electricity and water
(and hence the name), customers pay for the amount of computing services
they actually use. This allows customers, especially small and medium-scale
enterprises, to cut back on capital expenditure, and focus only on operational
expenditure. From the computational perspective, a big benefit of such an
infrastructure is that an application can scale up, to serve millions of
customers around the world, without significant effort on the applications
part. On the other hand, when demand goes down, the application can
release the computational power that it no longer needs. This flexibility in
cost, however, has a downside. Although the cloud providers make available
large amounts of computing power and storage, they make no guarantees
about the quality-of-service(QoS) attributes of the services being provided by
them. By QoS attributes, we refer to qualities like reliability, availability,
performance, security and other non-functional requirements which need to
be provided, maintained, evolved and monitored at runtime. These qualities
are fundamental to the users satisfaction with the application. In fact, even
if an application performs its function correctly, the absence of the requisite
QoS can lead to significant contractual losses. Consider a news-ticker
service, that is used by banks and other financial institutions. If the newsticker service is required by its contract to provide updated data every 10ms,
then regardless of the correctness of the data, the service would be liable to pay a
penalty to its customers, if it is unable to meet its performance target.
Cloud Computing
Advances in networking, storage and processing technologies have
given us software that is mind-boggling in size and complexity of structure.
Enterprises routinely deploy applications that span continents (e.g. through
Grids, WANs, Internet), are composed of computing elements that are
heterogeneous, and connected in complex topologies. In the wake of
organizational change, economic downturn and a demand for tightening the
belt on IT costs, there is a trend toward moving large applications to the
cloud [10]. Organizations such as IBM [48] and Gartner [11] advocate cloud
computing as a potential cost-saver as well as provider of higher service
quality.
2.
3.
show the static structure of the system through package, component and
class diagrams. We show agent-interaction using Agent-UML (AUML). We
envision our mechanism as a middleware, between service-based
applications and multiple SaaS clouds. In Figure 3, we show clobmas as a
middleware between two OpenStack-based clouds and SOA-based
applications. Note that OpenStack1 is currently an IaaS cloud solution. We
envision the addition of a UDDI-based Service Registry communicating with
the Cloud Controller, to enable OpenStack to serve services as well.