animation

uniQode tames a tangled backend

STORY BY
uniQode

Svensk Adressändring is a major integrator between several mail distributors in Sweden and is so well known to people that they are often mistaken for a government institution. When our consultant first encountered the client they had an aging backend system, an entire team of developers leaving and long overdue plans for a new website to sell their products.

Despite the departure of the entire development team, our consultant managed to quickly absorb the core competencies needed to maintain and develop the existing system and then distribute that knowledge onwards as a new team was slowly put together. The knowledge rescued by our consultant would be paramount in undertaking the next big task for the customer: building a new website.

The plans for the new website entailed a host of new requirements on the backend, meaning large parts of it would have to be repurposed. This presented a challenge because the new backend code would also have to maintain compatibility with other parts of the system. One example being the internally developed desktop client used by customer services to place new orders and handle customer complaints. Components were mainly integrated via a shared database and any inconsistencies in data between the new backend and the existing systems could lead to failure in delivering the purchased services, as well as errors in accounting.

The compatibility requirement threatened to compromise the quality of the new code, either by forcing it to adhere to an ill-adapted data model or by requiring the use of various synchronization calls riddled throughout the code. To solve this, our consultant gradually introduced the team to the concepts of DDD, CQRS and Event Sourcing, allowing them to cleanly separate the compatibility layer from the newly implemented domain logic while simultaneously giving them a reliable way to synchronize data with the old data model.

In addition, our consultant endeavored to improve the development processes employed by the team. By introducing a Continuous Delivery pipeline, they managed to not only lower the maintenance costs of developers manually executing deployment procedures, but to increase the reliability of releases too. Our consultant also spearheaded an effort to capture requirements using BDD and automated testing, an effort which has helped the team to not only make sense of their business but to also be assured that the code being written works without unintended consequences.

Today the customer looks to the future with a positive mindset, thanks in large part to the ideas and visions set forth by our consultant. While the team still hasn’t managed to liberate themselves from all parts of the old system, they now feel they have all the tools they need to get there in the long run.