Today a co-worker gave me the tip of watching Evans presentation on dealing with legacy systems. This is very relevant today when there are many legacy systems. The presentation provides good tips for how this can be handled. At my current assignment we have a legacy system where new functionality is added on regular basis.
Evans presents four different strategies for handling this problem:
- Bubble Context – Place your new functionality in a bubble and have repositories as an anti-corruption layer toward the legacy code and data.
- Autonomous Bubble – Start a new chapter OUTSIDE the legacy code with its own storage. Thous we need to synchronize ACL and similar information that you shares with the legacy system.
- Open Host Services in Published Language – Expose legacy assets through an open host service. Using an anti-corruption layer to convert the necessary information to the new system.
- Event Streams – The systems communicate trough events. The anti-corruption layer now publishes the event and monitor the state of the other system. The solution is similar to event sourcing.
The presentation can be found here: http://dddcommunity.org/library/evans_2011_2/.