In this post I am going to tell you all about the different strategies which are required to migrate an application to the Cloud. 🙂
Before starting with the actual strategies, firstly you must know about IAAS , SAAS and PAAS Concepts :
SaaS: Software as a Service (SaaS) It is on-demand software delivery model in which software and its associated data are hosted centrally on a cloud and are typically accessed by users using a client, normally using a web browser over the Internet.
PaaS: Platform as a Service (PaaS) is the platform which provides a solution stack as a service. PaaS also facilitates deployment of applications without the cost and complexity of buying and managing the underlying hardware and software and even the provisioning hosting capabilities, providing all of the facilities required to support the complete life cycle of building and delivering web applications and services which are entirely available from the Internet.
IaaS: Infrastructure as a Service (IaaS) is a provision model in which an organization outsources the equipment used to support operations, including storage, hardware, servers and networking components. The service provider owns the equipment and is responsible for housing, running and maintaining it. The client typically pays on a per-use basis. So client saves his money as the payment is only based on how much you use only.
Most of the People get confused between Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). This is an excellent question that the cloud computing vendors do little to help clarify. Following the difference between the two methods. 😛
In IaaS, As the name suggests, Infrastructure delivered as a service is provided. This includes hardware (Servers, Networks etc) and software (operating systems, databases, application servers etc). I think that Amazon AWS is the largest provider and have variety of hardware and software combinations to choose from. 🙂
In PaaS, As the name suggests, Platform as a service is provided. This includes hardware such as Servers, Networks, Load balancers etc and softwares like Operating systems, Databases, Application servers etc. There are a number of PaaS providers which includes Microsoft Azure, Google App Engine and Salesforce.com =>Force.com. 🙂
If the difference is still not clear to you all, Lets take a simple example of Microsoft Azure. Using the Microsoft Azure, the user has no control over the Security Features , Operating system or the ability to install software applications. which are other than your own applications developed specifically for Azure.
With IaaS, the user selects a configuration which defines application software, operating system and server size etc.If you want to install a new application or a database – feel free, its your server responsibility and if an operating system upgrade is required or a security patch is required then its user’s responsibility. 🙂
Strategies which I came across few days ago are as follows:
Rehost means to redeploy applications to a different hardware environment and change the application’s infrastructure configuration. Rehosting an application without making changes to its architecture can provide a fast cloud migration solution.
However, the primary advantage of IaaS, that – teams can migrate systems quickly, without modifying their architecture – can be its primary disadvantage as benefits from the cloud characteristics of the infrastructure, such as scalability, will be missed.
Refactor means to run applications on a cloud provider’s infrastructure. The primary advantage is blending familiarity with innovation as “backward-compatible”. PaaS means developers can reuse languages, frameworks, and containers they have invested in, thus leveraging code the organization considers strategic.
Disadvantages include missing capabilities, transitive risk, and framework lock-in. At this early stage in the PaaS market, some of the capabilities developers depend on with existing platforms can be missing from PaaS offerings.
Revise means to modify or extend the existing code base to support legacy modernization requirements, then use rehost or refactor options to deploy to cloud. This option allows organizations to optimize the application to leverage the cloud characteristics of providers’ infrastructure.
The downside is that kicking off a (possibly major) development project will require upfront expenses to mobilize a development team. Depending on the scale of the revision, revise is the option likely to take most time to deliver its capabilities.
Rebuild the solution on PaaS, discard code for an existing application and re-architect the application. Although rebuilding requires losing the familiarity of existing code and frameworks, the advantage of rebuilding an application is access to innovative features in the provider’s platform.
They improve developer productivity, such as tools that allow application templates and data models to be customized, metadata-driven engines, and communities that supply pre-built components. However, lock-in is the primary disadvantage so if the provider makes a pricing or technical change that the consumer cannot accept, breaches service level agreements (SLAs), or fails, the consumer is forced to switch, potentially abandoning some or all of its application assets.
Replace means discarding an existing application (or set of applications) and use commercial software delivered as a service. This option avoids investment in mobilizing a development team when requirements for a business function change quickly. Disadvantages can include inconsistent data semantics, data access issues, and vendor lock-in.
I have taken and came to know about these Strategies from -> http://bit.ly/j6kkhc
I know this is very much technical and that too a Server Part mostly, 😛 but I hope you find it useful as a concept 🙂