ColdFusion Alive

134 ColdFusion Legacy app – Is a Refactor Better than a Rewrite? with Denny Springle

Denny Springle talks about “ColdFusion Legacy app - Is a Refactor Better than a Rewrite?” in this episode of ColdFusion Alive Podcast with host Michaela Light. “Refactoring is a way of taking in modernizing code that already exists, and bring it up to speed with generally modern best development practices. So you know, some object orientation, data modeling type of thing, as well as you know, either using a framework or building an application framework yourself, that hits all of the major obstacles that are that a framework will do for you generally”. https://youtu.be/_assa85CJQc Show notes Why is refactoring vs rewriting important today? vs 3rd option - leave the legacy app unchanged… Risks and rewards for each, best approaches Security, hacking risk and biz reputation Dev elegy to spaghetti Old style code with CF tags (vs CFscript Tech debt Urge to rewrite What does refactoring mean? Modernize existing code in place in production app Adding/improving framework Improving datamodel Incremental improvement that is always working Opportunity to get into the depths of the code and business logic Reuse Security Performance Feature flags New Ben Nadel book on this coming out soon House in dark analogy What does rewriting mean (really)? Understanding all the business logic and intelligence up front (and documented!) What really is the biz problem being solved No original devs or business users left May be to a new language, platform, database, OS/Cloud provider Or may be the same language, new version/upgrade. Recreate data model What are the risks and disasters of rewriting that you have seen? He was the “rewrite kid” in younger days Underestimate analysis time for understanding business logic Underestimate time for coding and testing Risk of project failure Users don’t accept the radically changed system or UX Now is is the “refactor” man He as seen 1 successful rewrite out of 5 Worse odds than Russian roulette! Always 90% done After 6 mos “we are 90% done boss” After another 6 mos “we are 90% done boss” Rewrite tips Extensive testing period, including beta testers (actual users) Only do when simple biz logic or well documented biz logic or big changes in business (merger or regulation change) Allow long shake down period after release If possible do slow rollout (how good SaaS work) Walk us through your ColdFusion refactor process? Agile sprint Reusability (and maintainable) A data model Move to Common code, objects Remove Deadwood code, tables, indices, and data Move to a MVC framework Why - code organization to Model, View and Controller parts of your code MVC is a standard in most modern languages Separating View code lets Switch out front ends - web vs mobile Easier for UX coders to edit the View code without messing up the CFML code logic or SQL queries Readability FW/1 - lightweight ColdBox - more features and ecosystem CFWheels Legacy non-maintained CF frameworks Fusebox Model Glue REST API REST API is a modern programming pattern Many 3rd party REST API All modern web programming languages use them CF makes consuming or providing REST API incredible easy One parameter in your CFC object! Encapsulation of data model and business logic Different front ends, same API Not a microservices fan any more Can become clunky and numerous Cloud resources and cost go through the roof Documentation may be lacking Amazon Prime case study of moving away from microservices Is Amazon moving away from microservices? The migration of the Audio-Video Monitoring Service from Microservices to Monolith was a significant change in Amazon Prime Video's architecture.