How to migrate legacy applications to newer architectures
This is a well known challenge, faced by many organizations atleast once during the software lifecycle. It is faced by large organizations and startups alike. Mostly because when the software starts its life it is designed and developed as per the needs and tools of the day. This works fine and is enough to gain customer traction initially. In a few years, signs of architectural decay start to show up. Changes become tricky and costlier or the product doesn't scale well. Or the technology has become outdated and/or costly to maintain , deploy or operate.
Throughout my career have seen many large and professional organizations innovate and maintain their cutting edge by periodically upgrading or migration their stack/architectures. Example: Canon experimenting with newer WebServices to move away from COM based dlls (lirbaries) even when .NET was still in beta. SAP migrating SAP R/3 based system to SAP Netweaver stack to their latest now.
Companies which do not make such investments in newer tech are bound to overtaken by new age Agile startups using microservices, cloud native architectures.
Such architectural migrations need the architecture consider variety of facets like business models, impact of existing customers, ease of migrations, scalability, performance, retaining existing data with appropriate referential integrity, time and cost for migration and post migration operations, TCO, ROI etc. Simply deploying the monolith application in cloud may not work well and is not recommended in most cases. Multi-tenancy and datastore schemas also need to cater to this evolution.
In case you are faced with similar architectural challenge and want to migrate your application a proper domain analysis and careful approach evaluation along with a plan for PoC/MVP is necessary. Sometimes it requires greenfield approach with one toggle switch migration or sometimes a phased approach may work better. A good architect can save you lot of trouble and cost by make wise architectural decisions influenced by not just technology but business considerations discussed above. While a wise architect can study legacy system and can envision the entire migration plan with appropriate key progress indicators defined well in advance to make the whole journey easier. This is easier said than done and requires a diverse domain and technical experience from the chief architect to indulge in such an endeavor.
领英推荐