What is a legacy system?
A legacy system is a computing system that has been around for a very long period of time, tends to be difficult to maintain, is prone to issues such as lack of scalability and feature additions, usually centralised in operation and is still heavily utilised in a particular organisation.
What is a client-server / distributed system?
A distributed system is a decentralised networked cluster of computers (servers) that are able to scale according to peaks and troughs in usage (Manoj A. Thomas, 2009), is modular in the way components are reused and code is arranged as well as more maintainable by a team of developers that are trained in relevant new technologies.
Why would one want to move to a distributed system?
Distributed systems have many advantages over older, more brittle legacy systems in that they are:
- Easier to maintain and work on
- Have better overall security (Oracle, 2017)
- Are scalable to be able to handle larger volumes of transactions
- Are created in newer and improved technologies and programming languages
- Are able to make use of both on premises as well as cloud hosting solutions
- Code is reusable and modular
- Often has high testing coverage (Unit test, integration test, etc)
Potential problems that may arise in such a conversion
Albeit recommended to move to a distributed system there are many challenges that may arise while transitioning from a legacy system.
There are two distinct methods to a successful conversion:
- Rewrite the entire system using new tools and technologies
- May leave hidden features out
- Data migration could leave parts of the data inaccessible or corrupted
- Large amount of work
- Nuances in functionalities can be missed during product analysis
- Replace single components and swap out functional entities
- May not be able to fully integrate into a legacy system
- The core system may not be able to scale at the same rate
- Security holes may creep in due to a change in application flow
Solutions to these problems
It is highly recommended that when a legacy system gets into a state of disrepair or becomes unstable, fragile and difficult to manage and maintain, that a full evaluation is done and an architectural design be created to be able to show all moving parts within (IEEE, 2014).
This way when the organisation decides to recreate the software after a cost analysis is done, all parts are accounted for and it is possible for a development team to take a beneficial new stance on how to layout and reconstruct a more usable, scalable and favourable application for the organisation’s demands and requirements.
“Manoj A. Thomas, Richard T. Redmond, H. Roland Weistroffer” – “Moving To The Cloud: Transitioning From Client-Server To Service Architecture” (2009) – Available from: https://www.cluteinstitute.com/ojs/index.php/JSS/article/download/4286/4375 (Accessed on 15th July 2017)
“Benefits of the Client-Server Model” (n.d.) – Available from: https://docs.oracle.com/cd/A57673_01/DOC/server/doc/SD173/ch1.htm#toc012 (Accessed on 15th July 2017)
“Resource Allocation in a Client/Server System for Massive Multi-Player Online Games” (2014) – Available from: http://ieeexplore.ieee.org/document/6589578/?reload=true (Accessed on 16th July 2017)
“Chapter 4: Distributed and Parallel Computing” (n.d.) – Available from: http://wla.berkeley.edu/~cs61a/fa11/lectures/communication.html (Accessed on 16th July 2017)