Chapter 5. Refactoring, Redesigning, and Rebuilding Applications

Many custom-built applications will move to the cloud without modification, others will require reengineering of some kind, and some will need to be scrapped and rebuilt from scratch.

To reengineer software without changing its design or adding new external functions is to refactor it. Refactoring aims to improve the performance, reliability, security, etc., of software. Analogically, refactoring is akin to replacing a set of lower-quality car parts from a suspect manufacturer with better-quality parts from a trusted manufacturer. You might “refactor” your car when you replace its stock suspension with a stiffer performance suspension; the design of the car itself does not change, but the driving experience itself might become better, more enjoyable, for the driver.

Software cannot always be refactored, however. It might be written in a language that is obsolete or little-used or that poses a greater security risk (given the application for which it is designed, the performance that is required of it, etc.) than higher-level languages. It might exploit frameworks, runtime environments, etc., that are obsolete or which—because of concerns about reliability, performance, and security—the organization is loath to replicate in the cloud. Lastly, it might just be poorly designed—or, rather, designed in accord with ideas or patterns in software architecture that have been discredited. (Cargo-cult thinking is as common ...

Get Migrating Applications to the Cloud now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.