Large projects, with a long history - rooted in the 90s, in most cases are based on a monolithic architecture (not for the web - the roots go even deeper). In my work, I often encounter similar systems and they all have practically the same problems, I would like to talk about this now.
Main problem
When creating, it does not imply an increase in functionality. It is created “once and for all” - any “new blood” - of the wrong group and causes rejection. Any surgical intervention sooner or later leads to the appearance of "Frankenstein" - the essence of the Set - united by synthetic bonds. Over time, in any project there comes a stage when the basic functionality is not enough. Based on the first thesis, there are several solutions:Injections
“—I don’t know how it works - I’ll do it on top”
Since the System has a lot of dads (mothers) - its new parents, often save their time and nerves - do not try to figure out pieces of someone else's "heritage" and simply work "on top" of what is. Many are familiar with the symptoms of this relationship: or preventive code injections replace after generation. The main problem, if the project is supposed to be 10+ years old, then such "methods" are layered on top of each other.Kernel changes
The above problems are peculiar, but at a “lower” level. Entire segments of the system are cut out and new, independent, with broken synthetic links are embedded, which in general entails splitting into independent subsystems (a kind of perverted semblance of modularity), sparseness and complexity of the architecture.Clear sheet
Creating a new system implies a tremendous amount of time and money - which only multiply with each day of the current "version". Since during this time there is its development (building functionality) in other ways. A complete shutdown of the system during the creation of a new one, in most cases, is impossible, since it leads to a loss of potential profit. ... I decided to publish only the very beginning. In order to find out how much the Habr public is interested in this problem. Interesting? - to be continued.