As you change technologies in the long-running project?

There is a management system in which all billing, customers, employees, third-party management services, reception of payments, etc. the System began to develop more than 10 years ago. To keep up with technology, we periodically introduce something new, but the old still is a load, so as to remake all unreal, but rework is often necessary in the old code. In the end, on the backend we have now 2 framework - CodeIgniter is ancient and not very new of Symfony, which was not quite appropriate for us. On frontend, a mixture of normal pages + jquery with a new interface in Angular 1.3. And 3 different designs. It all works, and works more or less good - there is a clear understanding of where that finished in case. But due to heaps of technology development is slower, besides some features are not used or are not used fully. I want to clear it all up, everything to be monotonous and the maximum is transparent and modern.
You have the experience of changing technologies in large projects? Tell us about your experience as you shoveled a bunch?
July 2nd 19 at 13:46
6 answers
July 2nd 19 at 13:48
1. Select the module in the system
2. It creates its copy on your new system/technology
3. Tweaked, adjusted, adapted to the main.
4. Old off, new is included in production.
5. GOTO 1.

PS: in Any case don't allocate microservices! This will break the integrity of adjacent architectures within the system! Change only the functional blocks that operate on a pre-defined and established scheme of the business process.
0. Cover all tests - marilyne_Roh commented on July 2nd 19 at 13:51
no. it's too much. paragraph 3 - sufficiently.
If there is not enough debugged - it is a problem already requirements for testing before switching to p. 3. - Kyleigh_Hills commented on July 2nd 19 at 13:54
no, not superfluous. If the system is covered by tests, to transition to new technology much easier. - Tess_Bogisich46 commented on July 2nd 19 at 13:57
The word "tweaked" - it means all the work needed to achieve the desired level of service before replacement. Thus, testing (if any) are already included in this item.
So, it turns out that here extra item - extra. - Kyleigh_Hills commented on July 2nd 19 at 14:00
July 2nd 19 at 13:50
The microservices start to allocate from the main application.
In the long term to support such a system would be simpler than the monolith.
July 2nd 19 at 13:52
the online store was written in joomla, then cms was replaced with codeigniter 1.x, then for codeigniter 2.x, now will be translated into frameworkless.
In fact, each shift usually took place from a pool of volume challenges, change design, implementation, admin, etc.
Created new tables, produced by the migration of old data into the new table structure. Create a list of the main pages and that should be how it should work, to check after the migration. Created a new sitemap was configured redirects from the old pages to the new.
July 2nd 19 at 13:54
You can only add that technology is changing the arbitrary decision of the project Manager.
At the same time, of course, the head must be an idea of how long it will take, what staff do, how will be loaded. Ie will have to juggle the implementation of new functions and the old correspondence.
Or agreements are reached to suspend the implementation of new features until it is ready the old functionality.

Until a decision is made about the necessity of transition and made some sort of transition plan that's all it will last.
Both how it turns out ordinary developers (who yesterday Junior) better understand technology than the project Manager? - marilyne_Roh commented on July 2nd 19 at 13:57
I think I just wrote that the decision taken by the head. The developers had nothing to do with it. - Kyleigh_Hills commented on July 2nd 19 at 14:00
July 2nd 19 at 13:56
It is important to register API for communication between modules. Sometimes you have to do a proxy layer, to change the technologies API.

Everything else is just.
Changing light module.
In particular it is suitable for microservices.
July 2nd 19 at 13:58
To change the technologies necessary 2 main resources: money and time. Moreover, time is also converted into money. In order to obtain these resources need:
1) Clearly understand the purpose for what you intend to do.
I want to clear it all up, everything to be monotonous and the maximum is transparent and modern.
is not the goal. A reasonable person under it will not allocate resources. All will remain as it is until you identify another goal. Examples of valid purposes in this case: a) Reduce the cost of product development b) Reduce the cost of quality (this is the case when the zoo technology can maintain quality at the proper level).
2) depending on the purpose, you will have to do rough calculations: to evaluate the expert way how many losses, due to old technology, you have per unit of time (day, week, month) in comparison with those, as if it was all already written in a new way. Losses can grow over time. Put on the timeline - get the schedule savings.
3) Calculate the investment required for the replacement project technologies: planning, rewriting, integration, testing, documentation, management, training, etc. Make a timetable of the project, including necessary funding.
4) Dock schedule savings from the date it is received schedule of cash flow investing. Provide risk analysis for cases of "remake" and "leave as is". Further, the project sponsors will conduct regular analysis of the investment attractiveness of the project and will tell you whether the game worth the candle.
5) If you do not give money - change approach to the modification and repeat the iteration from step 2.

Find more questions by tags Project managementProgramming