Friday, February 12, 2016

Modernizing Legacy Apps

Most companies who have been in for business for more than 5 years do have legacy applications. Once the company realizes the potential benefits of modernizing legacy applications for cloud, then it is up to the technology head (CTO / CIO / VP – Technology / Chief Architect etc...) to come up with a strategy to do the migration. Though this might look daunting luckily there are several proven strategies that can be leveraged on.

First and foremost understand why you need to migrate and what the benefit is. This is the first key step that needs to be done before anything. This would help in understanding whether you want to go for Hybrid cloud or Private cloud, Public cloud only. By critically looking at your current business model, existing system and future plans the shape of migration can be planned.
For example if your application has high sensitive data or is very chatty by nature then private cloud will be the best option, if you system is going to incorporate web fronts, social media integration etc... You may look at a hybrid solution or if your system is anyway light weight and your plans in the future do not include dealing with highly sensitive data you can look at just going with public cloud.

Next understand the architecture difference between monolithic all in one, Hybrid cloud and cloud architectures and see what fits best for your system. Is your system a large monolithic system which is difficult to decompose? Or are there parts in your system that can work independently and are light weight enough to be moved around? Or are you even planning on some new features that can be done as separate sub systems that can be used to glue into your existing system with glue code. In this phase you can identify what are potential candidates. Another area to analyze is the workload each area of the system does. Depending on the load you can decide which areas would need high scalability and plan accordingly your cloud migration.

Now that you have identified whether you want to move ahead with modernizing the existing system to cloud, let's look at some options you have in doing this safely.

Lift and Shift

This is the first step in moving to cloud, where simply the monolithic application can be taken and move in to a cloud environment as is. At this stage the early analysis that was done will become priceless. You would be able to understand whether you would need to have a private cloud or hybrid cloud solution where certain parts of the system with sensitive data or chatty behavior can be shifted and any area that is light weight and can reside in a public cloud. My recommendation is always go for a hybrid where your master database and core components in your monolithic system to be in a private cloud or dedicated servers and any customer facing web tier apps or disjointed parts of your system which can run on their own to be in public cloud. The key thing to understand is that, there is minimum or no change done to the systems architecture. This is the least expensive and fastest in terms moving to cloud however then you will not get the full benefit of cloud.

Partition or Incremental Replacement  

Next option or the natural progression from “lift and shift” is to start migrating parts of the system incrementally to cloud or partition the system and migrate. Here again the analysis done initially will be priceless as you can identify which areas will be easiest to migrate / replace or which areas of the system would benefit from a cloud migration. You would create a list of your systems functional / business domain units and put down a priority for cloud migration. You can look at what is the business value, how easy is it, what is the cost for each unit of your system for creating a priority list.

For example if your system has a web front where customers come into place orders, then that is an ideal candidate as that can be easily migrated to cloud with some effort, however by doing this you could leverage the elasticity of cloud. Also if your analysis revealed that this area of the system is what get's most of the hits seasonally then again this is an ideal candidate. You can even look at having the web front in public cloud whilst the database and even business tier apps still residing in private or dedicated environment initially.

Once you have the list prioritized you would go on either moving each part of the system to cloud by modernizing or replacing with another application / system. The cost in this phase / option is higher then lifts and shifts but you will be able to leverage befits of cloud more and you are now getting in to a true cloud system. Also this will be very less risky than doing a full blown cloud migration in one go and following an application migration list will mitigate risk.

Refactor and Cloudify


This is the most costly and up front time consuming option. Here you would look at your system with your analysis done and completely re-engineer your system with newer architecture and / or technology to move into cloud. There are methods of bringing your system architecture to cloud and those needs to be studied. You will need to invest upfront time and resourcing to start refactoring your system to be cloud ready and use cloud. For example you may go from a monolithic system to a SOA based or Microservice based architecture, you will go from one single database to multi-master database architecture, you may even have to change your technology stack to support cloud, you will need to change your delivery, deployment processes by leveraging orchestration tools etc.. However once done your system will be fully cloud compliant and will be able to reap the benefits of cloud including cost reductions, elasticity, high availability , safe deployments, continues deliveries etc...


So there you have it, three ways to modernize your current system to cloud. My personal opinion and what I have used for most is to go from “lift and shift” to "partitioning and incremental replacement" or refactoring. This will be less risky and will allow you to reap the benefits of cloud early as well as give you time to learn and absorb all that comes with a cloud based system. Let me know how your journey in to modernizing legacy apps to cloud go and I would like to here from you.

No comments:

Post a Comment