Most applications that are being deployed in the cloud today are “greenfield” applications: Web applications engineered specifically for deployment in the cloud on technologies intended for the cloud. Especially in the public platform-as-a-service arena, PaaS users typically deploy new projects that lack any constraints imposed by prior work and code.
However, one of the main reasons companies want to move to the cloud is to gain computing and resource efficiencies out of existing apps. If you’re not migrating your legacy apps, you’re missing most of that efficiency. Engineers end up spending precious development resources reengineering or rebuilding from scratch perfectly good applications so that they can be deployed on new cloud infrastructure.
Why reinvent the wheel when you already have apps in place that work well for your company? It just makes sense to port those applications to the cloud rather than create all-new programs.
Fortunately, there is a solution for porting applications to the cloud without the usual hassles and with minimal reengineering: use a private PaaS.
Public vs. private PaaS
Most commonly, a PaaS is an externally hosted and managed service outside of the corporate firewall. This is known as a public PaaS. However, there are security vulnerabilities inherent in the public cloud, which has the potential to aggregate a large quantity of confidential data in cloud data centers.
Often, there is little transparency in the public cloud provider’s security measures, and clients must simply trust the cloud provider to keep their data safe. In addition, cloud users rely heavily on browsers, which leave the public cloud potentially vulnerable to browser security failures. Moreover, most public PaaS providers use a “one size fits all” approach, and it doesn’t bend to accommodate the needs of existing applications.
On the other hand, a private PaaS lives inside the corporate firewall, and offers a simple and secure way to deploy and manage new and existing apps to a private cloud, including a virtualized toolbox for developers to build and deploy their own apps. By using a private PaaS, your company can simplify the porting of apps to the cloud.
The problems arise when porting an existing app to the cloud, as that is when an application often has to be reengineered to be deployed in the cloud.
That’s why, so far, the cloud has not been great for migrating legacy or existing enterprise apps to the cloud. Instead, companies have been investing time and resources to create new applications from scratch, or creating complex deployment scripts for each legacy application, which provisions an OS, installs the required stack, launches all the middleware and data services, and then gets around to installing and deploying the application itself.
Highly controlled vs. highly curated
Many organizations lack the IT resources necessary to support multiple technology stacks, so they often settle by standardizing on a single technology (such as Java/Spring apps only), which keeps things simple but restricts the developers. On the other hand, some companies have a variety of applications built using a wide range of languages, databases, frameworks and other technologies.
There are a couple of different ways to tackle the challenge of supporting a range of applications built on multiple different stacks and migrating them to the cloud: a highly controlled approach, and a highly curated one.
Custom-scripted application deployment using tools like Puppet or Chef give the system administrator a very high level of control over the provisioning choices of OS, middleware and configuration when deploying an existing application.
This highly controlled approach may minimize the need for reengineering the legacy application, but it still places the burden of creating and maintaining deployment scripts and enforcement of business policies on the shoulders of IT departments, slowing the time to market for applications to the cloud.
On the other hand, using a private PaaS takes the more highly curated approach, where the OS and middleware provisioning is automated and the service options can be customized to your organization’s needs. This also enables the applications to run in secure containers in compliance with today’s stricter security guidelines.
Taking a highly curated PaaS approach helps you modernize your legacy systems and get your applications running on the cloud faster by reducing the custom scripting burden. With a PaaS, your organization’s application-deployment environments become more consistent, reproducible and verifiable. This lowers IT development and deployment costs, which allows for leaner, more responsive systems for users.
Migrating your data to the cloud
However, to truly tap the power of the cloud, application migration is more than just deploying your application’s code to the cloud; the legacy data often must be moved to the cloud as well, or at the very least must be securely accessible from the cloud.
With a PaaS, the database services your application requires can be specified at the time your app is pushed to the server. With commands such as dbshell and run, this allows you to access the database service associated with each application, enabling you to initialize the database schemas, configure size limits, and use a data migration library such as South to move your data. To use an external database for your application deployed on a private cloud, you connect to it using the IP address and credentials you would typically use.
The advantage of using a private cloud over a public cloud is enhanced security within your own control. In a private cloud infrastructure, the organization’s IT resources are pooled and abstracted into logical building blocks composed of storage, network and server units, thereby creating “virtual data centers.”
Your virtual data centers. These resource containers are then dynamically allocated to the organization’s various applications, and governed by defined business rules and user demand, with all the security provided by your own managed environments.
Once you have a private infrastructure-as-a-service layer in place within your organization (using any hypervisor), deploying a PaaS on it allows you to securely provision, deploy, manage and monitor all your applications’ environments from a single entry point behind your corporate firewall on your own hardware. A private PaaS gives developers and IT professionals the freedom and flexibility to mix and match languages, databases, and caching and messaging components, without the need for additional servers or infrastructure. It does this by creating virtual “containers” on demand that contain the technology stack in which the application runs, and they can be accessed securely by users.
Self-healing, horizontal scaling
With a PaaS, your application’s components are highly decoupled and your entire application is distributed across multiple instances, while every component in your applications’ stack is protected by health checks and automated failover. A private PaaS allows you to create the scalable stack required to manage scaling the software apps your organization wants to deploy. These apps could be new, developed in-house, existing apps, or third-party packages—all of which may be built using different technologies.
Today’s PaaS offerings enable a wide range of technology stacks, allowing developers to utilize a variety of services, frameworks and databases that best fit the task at hand rather than limiting developers to a single stack. Trying to make an application work with the preordained stack because IT has deemed it too costly to support diverse technology ecosystems is now a thing of the past.
With the virtual developer toolbox provided by a private PaaS, companies can now quickly and easily migrate applications to the cloud, whether they are new purpose-built apps or existing enterprise-legacy applications. The private PaaS simplifies the process of provisioning, monitoring and managing all the different types of applications, finally freeing developers to use the best tool available for the job, without being confined by the limitations of a single stack. With the new flexibility presented by private PaaS, companies going forward must reevaluate their current strategy of creating new cloud applications from scratch.
Migration, rather than reengineering, should be your first priority. Make the application migration path to the cloud easier for your organization with a private PaaS. By migrating existing legacy apps to the cloud, enterprises save considerable time and money in app development, training and support.
Diane Mueller is director of enterprise product management at ActiveState, which sells software to help migrate applications to the cloud.