Identification of refactoring opportunities
Key role(s)
Objectives
Benefits
The prioritization of investigations can begin as soon as we have reporting in place on the consumption of applications. When it's not just a matter of optimizing the infrastructure or code to deal with over-consumption, we can embark on a more in-depth study of refactoring opportunities. For example, based on :
- The new services available from the Cloud provider(s)
- New technologies available (and relevant) on the market
- The proposal of several refactoring scenarios, partial or total. (One can for example decide to focus exclusively on the management of the "message queuing", or on data sharing).
Then, it is necessary to be able to present the refactoring opportunities in the form of a business case (even high-level), for which we will present :
- The estimated costs of implementation
- Expected monthly gains over current costs
- Return on investment and the break-even point
- And the other benefits expected, whether in terms of technical performance, flexibility, reliability, technical debt management, etc., are not yet known.
This business case vision is important because one may be tempted to rewrite an application to finally realize that the "payback" is more than a year… But maybe also that the other expected benefits totally justify this investment!
Optimizing application code
It should not be forgotten that optimizing the application code reduces the use of the underlying infrastructure.
Code optimization
Code factorization, caching and even the choice of programming language can drastically impact execution time.
Choice of libraries
Whether converting images or parsing regular expressions or JSON files, choosing one library over another can cut execution time by a factor of 20.
Parallelization
Vectoring the code and parallelizing operations as much as possible allows for economies of scale in execution.
Compression
Choosing the right data compression format can have a significant impact on stored volumes. You need to know how to balance runtime and storage cost according to your needs.