Yesterday I talked about blue/green deployments as one possible approach to conveying apps over without your new customers/users noticing. The advantage being the slow ramp-up allowing for you to work through any kinks that the end users may experience before fully cutting over at the expense of a much more complex data synchronization setup.

Today will cover another approach: strangulation. In the legacy migration world, the idea would be to setup an API gateway in front of your apps with a dedicated route going to the migrated apps and a catch-all going to your legacy implementation. Once everything has been migrated over, then you have “strangled” the life out of the old system and can retire it.

The setup would be along the lines of:

  1. Setup the interim API gateway to front the ecosystem and setup the catch-all to the old world.
  2. First “hard” cutover to the interim gateway
  3. Migrate each app into the new world and ecosystem. This would be the mini-cutover, but timed to the app and business readiness.
  4. Once all apps are cutover, remove the catch-all/interim gateway (should be the end of day 1 at the absolute latest)

The data piece can be timed to coincide with the app and reduces that level of complexity. Added bonus if you already have an API gateway in place that fronts your current apps, and then you can add in the conveyed apps without an additional interim infrastructure investment.

There will still be some downtime in this approach, but the impact is much smaller and for the apps being conveyed, the scale is also much smaller.

This is the biggest reason why this is one of the main tools in my toolbox regardless of whether it is breaking an app into multiple microservices, migrating services to the cloud, or conveying apps from a recently acquired company.

How have you conveyed your apps in the past? Would these have helped provide a different path for you?

cab