Application development using cloud-based resources, such as PaaS and IaaS providers, is typically a change for the good. For instance, the results of the Evans Data Cloud Development Survey, conducted in December of 2012, found that cloud platforms reduce overall development time by an average of 11.6%.
The trend is actually getting better. Most enterprises I speak with, who chose to migrate specific applications to the cloud, are happy with the results.
These better productivity numbers resulted from better tools and the ability to empower developers to provision the resources they required, as needed. All without having to wait for hardware and software to show up at the shipping dock. Moreover, they have the ability to take advantage of “cloud native” resources, such as auto- and self-provisioning, elastic scaling, and even access to core services such as middleware and databases.
However, enterprises must be careful in how they plan for the arrival of cloud-based development, and make sure there is a smooth transition. Application development shops with more modern development tools will find the use of cloud-based resources to be an easy shift. Shops that are a few years behind the curve will find an all-at-once use of cloud computing is too great a leap, and a longer plan should be leveraged.
The reason we migrate applications to cloud vary a great deal from application-to-application, and enterprise-to-enterprise. The features and resulting benefits that most enterprises are going for consist of:
Self- or auto-provisioning of resources. This is the ability for the application to allocate and access resources, such as storage and compute services, without having to engage humans. Storage or compute resources may be allocated as needed directly from the application. Perhaps an application will spin up a large amount of storage to deal with data analysis tasks, and then return those storage resources back to the pool once the task is complete.
The enterprise is only charged for the resources leveraged, and for the time they are leveraged. The benefit of this approach is that this process is completely automated, thus the application functions automatously with the efficient use of resources handled by the application, and not the application administrators. That savings can be thousands of dollars a year.
The ability to auto-scale. Auto-scale features take advantage of the elasticity of cloud computing resources which allow the application to allocate resources as needed to support increasing and decreasing processes. While this is related to the previous feature/benefit of self- and auto-provisioning, elastic scalability that is automated by the application removes the enterprise from having to deal with constantly changing needs. As the loading on the application grows, it simply requests more resources from the platform, and they are provided on-demand.
The ability to manage through failures auto-magically. Most cloud-based applications can take advantage of the resiliency features that most cloud providers build into their offering. When outages occur, the cloud platform itself should be able to take corrective action, such as instantly moving processing from one region to another, typically without interrupting service or even having the user know that the outage occurred.
The core issue around these features is that the application has to be made “cloud native,” or, repurposed to leverage the native capabilities of the cloud-based platform. For some applications, this is a pretty straightforward process of redefining the interfaces to the platform to talk directly to the native cloud APIs for certain functions such as auto-provisioning, auto-scaling, and auto-resiliency.
While some applications may only take a few weeks to re-platform on PaaS or IaaS cloud-based systems, many will require a significant re-write and testing process that could make the benefit of leveraging cloud not as attractive.
The path is very clear for most enterprises. They need to study the issues before making the move. The steps that make the most sense, include:
- Catalog most of the applications leveraged by the enterprise. Understand what they are, what they do, how they work, and who owns them. Many enterprises have thousands of applications under management. However, only a small percentage of those applications take up a large percentage of IT resources. Those are typically the applications that are business critical.
- Determine the applications that are the right candidates for migration to cloud-based platforms. You should create categories and priorities that define which applications should be migrated, and in what order, that provide the business with the most benefit.
- Create a migration plan. Continuing from step 2, make sure you have a very detailed plan to port, alter, test, and deploy the right application in the right order. This should include all resources required to accomplish the task, human and technology.
The great migration has begun. Most enterprises face years of migration to get their applications to cloud-based platforms. There is a right, and a wrong way to accomplish this Herculean task. You need to create your strategy now, before things get too busy.