In the post “The Business Case Justification for PaaS” we looked at the benefits and a business case for PaaS. In this blog we will look at the steps to create a migration strategy to PaaS including re-platforming legacy applications.
Re-platforming applications includes lift-and-shift (containerizing) applications with minor changes, refactoring applications to adhere to twelve factor app guidelines and complete application rewrites to best leverage native cloud and DevOps. Optimizing applications for PaaS often includes changes to improve horizontal scalability, a move from commercial to open-source software, and leveraging application services like database, caching and logging.
Most large companies have built a portfolio of applications over many years that includes custom and commercial-off-the-shelf (COTS) software. It is not possible, or desirable, to migrate the entire portfolio to PaaS. Not all applications will be appropriate for PaaS and the benefits of migrating applications will vary across applications.
Large-scale application migrations require an inventory of applications, a categorization and prioritization of those applications and a prescribed migration plan. Most companies will need formal IT budgets and timelines that may span multiple years.
When looking at the application portfolio holistically, most large companies will find applications that are outdated and have duplicated business capabilities across systems. Many of these applications can be migrated to SaaS, consolidated within packaged applications or deprecated altogether. It is important to reduce the size of the application footprint considered for migration and to determine the level of effort justified to spend on optimizing each application.
From a business perspective, it is best to invest in systems that have the greatest business impact in terms of revenue, cost and customer experience. Application migrations are often tied to a larger business-level, digital-transformation strategy. In the strategic view, a migration road map aligns business goals and the desired customer outcomes with systems plans and activities that provides incremental business value for each application migrated. By starting with high-value applications business value can be delivered early in the migration. This most often translates to migrating customer-facing applications first.
From an IT perspective, it is necessary to analyze and model the as-is state of the application portfolio and categorize systems in terms of complexity, risk, dependencies and business capabilities. In the IT view, application migrations to PaaS may be a part of a larger cloud-first strategy. The business and IT views then must be aligned to create a comprehensive transformation road map. The road map should also address IT capabilities (e.g. DevOps) and platform readiness – people, process and platform. Budgets, timelines and application transition diagrams can be created based on the higher-level road map.
The first step is to inventory and categorize the candidate applications for migration. During the inventory use a template to capture application details (such as, contacts, business domain, user counts, programming language, etc.). Some applications may be eliminated or postponed from the migration list based on technology fit, lack of use, etc.
The remaining candidate applications should be prioritized based on a set of evaluation criteria such as the following:
• Business Domain
• Strategic focus / investment themes
• Operational effectiveness
• Revenue generation
• Usage / user count
• Relative User experience
• Support costs
• Data and integration quality
• Architecture alignment
• Code quality
Next, you can categorize the migration strategy for each application for example as follows:
• Migrate to SaaS
• Migrate to PaaS
• Lift-and-shift to IaaS
• Re-architect, refactor / rewrite
• Leave on-premises
Then, applications that have been selected for PaaS migration need to be assessed for an application level migration plan.
At this point automated tools can be used to gather application run-time details, code analysis and supplemented with interviews to collect the following information:
• Application profile – workload characteristics, application architecture
• Non-functional and disaster recovery requirements
• Programming language and framework support
• Application native OS dependencies
• External dependencies and integrations
• Application services requirements – database, logging, session management, etc.
• Build and deploy requirements
• QA lifecycle – test cases, automations, dependencies, etc.
• Level-of-effort estimates and environment sizing
Once you have a solid migration plan here are some tips to get started with your migration:
• Select and adopt the right tools for your environment and culture
• Start with a proof of technology and be prepared to make changes
• Set up the tooling environment, lightweight architecture guidelines and best practices
• Limit the initial scope (start small), measure and gauge effectiveness
• Adjust and incorporate emergent patterns and best practices
Perficient has teams of highly experienced strategists, PaaS developers, DevOps and change management experts should you need any help with your migration. We have invested in training experienced individuals on the latest development approaches including native cloud development, PaaS, DevOps, microservices and re-platforming.