Welcome!

Security Authors: Greg Akers, Liz McMillan, Michelle Drolet, Richard Moulds, Peter Silva

Related Topics: Cloud Expo, SOA & WOA, Virtualization, Web 2.0, Security, Big Data Journal, SDN Journal, DevOps Journal

Cloud Expo: Article

Achieving Application Portability for DevOps

Highly productive DevOps environments will require access to self-service infrastructure and application provisioning

Enterprise applications are increasing in complexity, with multi-tier and distributed applications being the new standards for dealing with high-volume, high-scale requirements. In many development environments, the ideal scenario is to enable DevOps teams to manage dev/test environments in public clouds, with on-demand, usage based billing model - and to ultimately deploy these complex applications in on-premises clouds. Achieving application portability between heterogeneous cloud environments is critical to achieve the productivity goals of DevOps - yet often requires time-consuming workarounds. This article will present examples of approaches employed today, including newer options for model-driven cloud management platforms with their emphasis on automating application portability and approach to eliminating cloud lock-in.

Introduction: The Evolution of Cloud Development
The cloud model has evolved quickly over the course of the last few years from simple on-demand infrastructure (IaaS) services to richer environments that provide agile development capabilities for new applications. DevOps is a methodology that describes the integration and collaboration of software developers and IT professionals. The goal is more rapid software delivery, and it therefore ties in strongly to the agile development methodology that has been embraced by companies delivering software applications for virtual computing and the cloud.

The need for instant and on-demand server provisioning has been a main driving force behind the massive growth of cloud services. Public cloud services such as Amazon Web Services EC2, The Rackspace Cloud and others have become primary targets for application developers who need the rapid build up and tear down provided by these environments to enable rapid development, test and QA of new applications.

A key new requirement to make DevOps succeed for enterprise applications is portability between clouds. This provides DevOps with the freedom to select the optimal cloud environment to maximize developer productivity - yet preserve the option to deploy these apps in alternate public or private clouds when it's time for production operations that meet all IT mandated security, availability and compliance requirements.

Workload Portability for DevOps
The iterative process of making code changes and testing can be best performed in agile environments that provide fast provisioning, and low-cost. In many cases, public cloud environments are often the most productive application dev/test environments, but a private cloud may offer a better production deployment environment.

Therefore, for DevOps to succeed, an ideal world would enable total portability of application Workloads, to achieve two parallel goals:

  1. Allow developers to work in the most agile and cost-effective dev/test environment they choose
  2. Allow applications to run in the most secure, high-performance and reliable cloud available

These goals are often at odds, since a public cloud service may offer the key cost and agility advantages for DevOps, but a private cloud may achieve higher levels of security, performance and uptime.

Enterprise Apps Moving to the Cloud
Early cloud development was focused on simple apps - the obvious first candidates for deployment in this environment were web servers, content management systems (CMS), and simple databases. Many of these apps are simple software stacks hosted on single virtual servers, or perhaps a pair of active/passive servers for higher availability. While many of these apps can be considered important, and enablers for their businesses - in most cases they were not the mission-critical enterprise applications we so often refer to when discussing corporate operations such as ERP, accounting and manufacturing.

Some major online portals and social media providers have leapfrogged mainstream business IT by embracing cloud deployments for much more complex applications. With the need to serve many millions of users, for many of these companies, the cloud was the only answer to their level of expected scale. In truth - many built their own on-demand infrastructures to service their unique needs. But many others have indeed selected and deployed their entire scalable infrastructures in the world of household public cloud services such as Google and Amazon. The online world has demonstrated that indeed the cloud can deliver on its promise of scale and availability, and that the enterprise can leverage the cloud model - as long as cloud flexibility is preserved

Complexity Increases: Multi-Tier and Distributed Enterprise Applications
Modern enterprise data-center applications are inherently more complex than the simple server stacks deployed in the early stages of the cloud. They typically consist of multiple virtual servers and different application packages arranged into multiple server tiers or as a scale-out, distributed architecture. On top of their multi-server architectures, these applications require access to shared resources such as load balancers and firewalls for security.

These multi-tier applications also have complex relationships that must be carefully configured and managed each time the application is deployed. Such metadata describes the inter-dependencies and connections between the various application components, for example, the relationship between application servers and databases, or master and slave nodes, is pivotal to define and track - to maintain consistency of the application as a whole.

It's easy to see that deploying these multi-tier enterprise "Workloads" is a very different task than deploying simple web servers. Developers will frequently iterate on this process of standing up and then tearing down these complex Workloads - obviously a time-consuming and error-prone endeavor, that can impact the benefits and goal of the whole agile development process.

The need for simplified, automated application deployment and portability to help DevOps seems very clear, but most of today's environments make it difficult to achieve. Many cloud application environments create lock-in, specifically Platform-as-a-Service (PaaS) services often offer fixed development stacks that are functional only on the cloud provided by the service provider, completing eliminating portability.

Model-Driven Application Management Solutions for DevOps
This calls for solutions that can address the application lifecycle management problem of dynamically tracking application components as they evolve from dev/test to production. One such approach involves the use of standardized containers of software called server templates (or machine images in the parlance of some clouds). These describe a software stack consisting of an operating system, application packages and associated scripts. Server templates can be used to "instantiate" or provision a server in the cloud by laying down the desired software image. Since server templates are static - they can lock down a well-known version of a server, down to all its configuration details. In many cases, templates are specifically tied to the cloud they target - since they must contain a compatible OS image. Unless the template is specifically designed to be "multi-cloud" friendly, this can impact the portability of the overall application Workload to other clouds.

Another approach for accelerating DevOps is represented by Platform-as-a-Service (PaaS) offerings, which provide distinct advantages for DevOps including well-integrated developer tools, utilities and application libraries. As a service from a single vendor, however, the limitations often include limited support for external software stacks, and runtime support only for the integrated cloud provided by the PaaS vendor itself.

A newer class of solutions is emerging that leverage a data model-driven approach to automate the process of provisioning and managing Workloads, but also enabling portability across multiple clouds. With a goal of completely automating the process, a model-driven approach uses a process to capture and assemble a virtual representation of the entire application Workload. This virtual application data-model captures deep knowledge of all aspects of the Workload: the virtual servers, application packages (and dependent packages such as Java or PHP), configuration files, as well as the metadata describing the inter-dependencies between these elements.

These platforms use the data-model to maintain a consistent image of the entire Workload that can then be used to automatically deploy the Workload on to any cloud target. They perform software installations in "real-time" using the data model as a map - that instructs the system on what packages to download and install dynamically during the provisioning process. This provides not only simple deployment of complex Workloads, but intrinsically provides portability of Workloads across public to private clouds, or any combination of the two. This enables DevOps to preserve their freedom of choice by enabling development and test in a low-cost, agile public cloud environment such as AWS, but potentially deploy the production Workload into a secure, high-performance private cloud based on technologies such as Citrix CloudPlatform (Apache CloudStack), VMware vCloud Director or OpenStack.

Appcara's AppStack is an example of such an application model-driven platform. It provides a patent-pending Configuration Repository that is used to capture and assemble complex application Workloads in real-time, as the user defines them through an easy to use portal. It is also capable of dynamically tracking and reflecting changes in the relationships and dependencies of the application, and to do so automatically as users make changes through the Portal. AppStack provides complete application portability across more than a dozen public and private infrastructure clouds. This allows applications to be deployed as a "one-click" operation into a choice of public or private cloud targets, as required to deliver on the DevOps promise of agility and accelerated time-to-market.

Highly productive DevOps environments will require access to self-service infrastructure and application provisioning. The bad news is that this is highly challenging to accomplish with complex applications, where portability that preserves the essential metadata and complex interrelationships takes time to hand-code. The good news is that technology options are now available to remove previous manual effort, and vastly streamline application portability.

More Stories By Paul Speciale

Paul Speciale is chief marketing officer for Appcara, provider of a model-based cloud application platform. He has over 20 years of experience in assisting cloud, storage and data management technology companies as well as cloud service providers to address rapidly expanding Infrastructure-as-a-Service and Big Data sectors.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.