I participate in a project maintenance plan that includes either major refactoring or a complete redesign. We have a very complex existing technology stack that has been developing organically for five years. I myself joined three years ago and was “caught up” by madness. This stack has been compiled based on the growing needs of the customer and is quickly becoming an uncontrollable hippo consisting of many technologies and uncontrolled data collection.
Our main goal is to make the stack more efficient and manageable and to create a more efficient system for managing data in the future. We would like to transform the tightly integrated Business Model and REST Controller, written primarily in PHP, into a single REST API.
Our PHP business model is based on the XML eXist database, which contains most of the data, and MySQL, which supports 2 of our sub-application data. We have a SQL and XQuery source code library for dynamically managing data in data warehouses. There are also parts of the business model that rely on Java code using the PHP-Java Bridge and SAXON and FOP to create PDF fax documents stored in an XML database. Since this is a web application, we use a combination of PHPTAL, XSLT, CSS, XHTML and JavaScript to facilitate the user interface of the client. Finally, we have a bunch of home scripts that control PHP, Apache, Perl functions that are controlled by Ant tasks.
The main functions of the stack are to simplify electronic forms for various user models. The simple philosophy underlying the application has been undermined over the years by a combination of client game, excessive use of hands by the end user, lack of system analysis, poor testing methodology and lack of future goals and a clearly defined area of the project.
Currently, we plan to stop any further development, better describe a system that may or may not include the best unit test plans, and create the basis for the API using the same technological components. My reaction to the guitar is to come up with a solid volume and redesign the system using a well-supported programming language and framework that is well suited for writing a web API, perhaps some functions, but retaining the functionality that matters most. I would also recommend migrating existing data to a separate read-only platform.
My question for those who have been in similar situations:
- How did you get out of this situation?
- What planning steps will be useful for use in such situations?
- Are there source control methods for these types of stacks? what am i looking for? - search keywords
I understand that there are no perfect solutions, and in order to answer these questions, I will need to clarify our projects. I cannot do this for various reasons. I have problems finding useful resources to help me approach this issue, and I would appreciate advice on how to proceed.