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