Making Existing Applications Cloud Enabled

Cloud Computing introduces a new architecture that might make it challenging for developers to migrate their existing applications. Intalio|Cloud solves this problem by making existing applications multi-tenant, elastic, and fault-tolerant, automatically.

By Ismael Chang Ghalimi, CEO, Intalio — June 2010

Download PDF

Packaging

Since Cloud Computing is still in its infancy, very few standards exist, and developers looking for ways to deploy their applications on a wide range of Cloud platforms usually have to support multiple virtualization technologies (Cf. On Multi-Tenancy) and multiple hypervisors like VMware vSphere, Microsoft Hyper-V, Linux KVM, and Citrix XenServer.

Applications deployed on Intalio's application server (Cf. Jetty) can be automatically packaged for deployment on the most popular hypervisors, as well as Amazon EC2, without having to make any changes to the application's code itself. Down the road, additional Public Clouds such as Google AppEngine, Rackspace, Savvis, Terremark, and VMforce will be supported as well.

Elasticity

While some enterprise applications offer clustering capabilities for load-balancing and scalability purposes, the vast majority do not, and very few can be considered as truly elastic, especially with respect to their back-end databases. Making the changes necessary to support clustering usually involve significant engineering efforts.

When using Intalio|IaaS, existing applications that do not support clustering can be made elastic transparently, at virtually no development costs. When used in combination, Intalio|Elastic Compute, Intalio|Elastic Storage, and Intalio|Elastic Database make for a perfectly elastic platform that can support the most demanding scalability requirements.

Failover

Similarly, few applications support proper failover for high availability, and when they do, they usually focus on failover of the application server tier, assuming that reliable storage and a reliable database are available on the back-end. Sometimes, they do, but in most cases, such an assumption cannot be made.

Intalio|Cloud addresses this issue by removing every single point of failure for all three tiers (compute, storage, and database), and implementing real-time failover capabilities across the board, with multiple levels of redundancy. While the failover services offered by Intalio|IaaS can be deployed on virtually any off-the-shelf hardware, Intalio also provides the Intalio|Cloud Appliance, which offers a top-of-the-line hardware configuration capable of supporting the highest level of Quality of Service.

Multi-Tenancy

The vast majority of applications currently in use have a single-tenant architecture, meaning that they can only be used by a single group of users, with a single configuration. Up until now, multi-tenancy, which is the ability to support multiple groups of users simultaneously while offering each group a secure environment, has required the development of new applications from scratch, or very significant re-engineering efforts.

When deployed on Intalio|Cloud, applications are transparently multi-tenant. This applies both to applications running on top of the Intalio|Jetty application server, as well as to applications directly deployed on top of the underlying hypervisor. Intalio|Cloud currently supports two levels of virtualization for the purpose of multi-tenancy (Hardware and App. Server, Cf. On Multi-Tenancy), while Intalio|Labs is working on adding support for KVM virtualization and JVM virtualization.

Provisioning

Multi-tenancy creates the need for tenant provisioning (also referred to as application instance provisioning), alongside classic user provisioning, which is usually offered by single-tenant applications. The Intalio|Cloud Controller provides an easy-to-use Web-based application that lets business users self-provision instances of the applications they need. The user management infrastructure offered by Intalio|PaaS also provides an API that can be used by multiple existing applications in order to provision users for them from a single interface. Similarly, Intalio|PaaS provides a unified security architecture for authentication and authorization, with support for Single Sign-On and Role-Based Access Control.

Metering, Billing, Chargeback

In a similar fashion, multi-tenancy also creates the need for metering, both at the infrastructure and application level. For the former, the Intalio|Cloud Controller meters how much CPU, memory, storage, and bandwidth is used by each tenant, on an hourly basis. For the latter, it tracks how many users are registered for every application, and which options are used. It also provides an API that can be connected to a chargeback system (for enterprise customers) or a billing system (for service providers).

Monitoring

Applications deployed on top of Intalio|Cloud directly benefit from its monitoring capabilities, which cover the end-to-end stack, including IaaS (compute, storage, database, networking), PaaS (transactions), and SaaS (applications). Monitoring interfaces are available through a Web-based application, a JMX API, and on-demand (through integration with New Relic — Learn More).

Data Backup

All data managed by applications deployed on top of Intalio|Cloud is automatically backed-up on the Intalio|Elastic Storage infrastructure, or a remote backup and archival system. Backups can be restricted to specific contents, and their frequency can be configured through a Web-based interface.

Maintenance

One of the main challenges of multi-tenant architectures is the maintenance of the underlying software stack. Depending on the level of virtualization selected (Cf. On Multi-Tenancy), more or less components can be shared across tenants, thereby simplifying the overall maintenance of the multi-tenant application. Hardware Virtualization leverages a "share nothing" model whereby an operating system, application server, and database server are deployed for every application instance (tenant). For its part, Application Server Virtualization adopts a "share everything model", whereby all three components can be shared by all applications instances. Kernel Virtualization and JVM Virtualization fall somewhere in between.

Whichever level of virtualization is adopted, Intalio|Cloud fully automates the maintenance of the overall software stack, applying software patches to operating systems, application servers, database servers, and application libraries across a virtually unlimited number of application systems. Furthermore, this updates can be done by cloud operators directly, or by Intalio remotely.

Supported Platforms

All the services described above are available for any applications developed using the Java, PHP, Python, and Ruby programming languages. Applications developed with the Microsoft .Net framework can be deployed on Intalio|IaaS using the Microsoft Windows operating system and can take advantage of the following services: Packaging, Multi-Tenancy, Provisioning, Monitoring, Billing, Chargeback, and Maintenance. Elasticity and Failover will be offered when Microsoft Windows Azure becomes available for on-premises deployment. Please contact Microsoft Corporation for more information.

Required Efforts for Migration

Using Intalio|Cloud, existing applications can be cloud enabled with minimum engineering efforts. Depending on the complexity of the application, the availability of documented APIs for user provisioning, and the technology used for database connectivity, typical migration projects require anywhere from a few person-days to a few person-weeks.

Benefits to Software Vendors

  • Support both on-demand and on-premises deployments with a single code-base
  • Support Public Cloud, Private Clouds, and Hybrid Cloud (Cf. Deployment Options)
  • Support multiple distribution channels
  • Reduce costs of integrating with the billing and provisioning systems of multiple cloud providers
  • Reduce developer re-training
  • Reduce time-to-cloud
  • Reduce application packaging and maintenance costs
  • Offer better Quality of Service (QoS) and a wider range of Service Level Agreements (SLA)

Benefits to Enterprise Customers

  • Support both on-demand and on-premises deployments with a single code-base
  • Support Public Cloud, Private Clouds, and Hybrid Cloud (Cf. Deployment Options)
  • Facilitate the migration of applications between Public and Private Clouds
  • Reduce costs of integrating with internal chargeback systems
  • Reduce developer re-training
  • Reduce time-to-cloud
  • Reduce application packaging and maintenance costs
  • Offer better Quality of Service (QoS)
  • Leverage existing investments in virtualization and datacenter consolidation