Imagine that the power lines in your bathroom need rewiring. A craftsman comes in, removes the tiles, fixes the wiring, seals the wall, but then runs off with the tiles lying on the bathroom floor.

Not cool, right?

This is pretty much what happens when software libraries ship breaking changes. They take care of improving some internal wiring but the GDF application developers are left cleaning up the parts glued on top, meaning that developers have to manually update several applications.

For the teams using the library it’s painful but seen as an inevitable part of a developer’s life. Leading to different versions that have to be maintained, teams missing out on new capabilities, increasing efforts, decreasing velocity — in short a fragile and inefficient ecosystem.

Angular has the tool stack to help out here, turning updates of most applications into a one-liner. Which is what the Angular team provides for their core library.

These tool stacks are used within the Allianz Global Digital Factory to keep our ecosystem in sync. Our main asset is our user interface (UI) component library, that enables teams in Allianz to use ready-made UI components for building their apps.

The main techniques we use are Schematics and ng update. This is something already well established when using Angular itself and we want to share our journey of utilizing such a tool stack for our Allianz ecosystem.

 

At the GDF, we wanted to leverage this for our UI component library. Our library is used within Allianz for client facing and internal applications throughout hundreds of repositories. When moving to Angular 8 we had several breaking changes planned, for which we didn’t want to burden our library users with adapting to these changes manually. We wanted to provide the same experience as the Angular team for our UI component library.

To help with this, we can sketch a simple case, using rough numbers that reflect our experience. If we look at our last major update, we estimate the manual update effort to be about one workday (8 hours). If we assume that 100 applications are updated, we end up at an overall effort of 800 hours. With ng update we assume each update to take one hour, which leads to a saving of 700 hours. Writing the Schematics for our UI library, on the other hand, took us about 200 hours, including setting up the Schematics infrastructure. With this simple case, we get a more than 3-fold return on invest.

At scale and from a total cost perspective automating updates is saving money and this view doesn’t even factor in the additional benefits arising from a well synchronized ecosystem.

An important driver for GDF — besides cost reduction — was to shorten the time it takes the UI library team from a request we get, to the point where the respective change is productive in a real application.

One of the main problems was that it could take quite a while for teams to adopt a new updated version of an application if they were on an older major version.

Automating updates significantly reduces this time, improving our ability to ship changes faster into real applications. In addition, we can remove technical debt throughout a whole ecosystem without a big burden for the app teams.

This also shifts attention from individual application silos to the ecosystem as a whole. While the cost savings of automated updating are obviously greater in a large scale environment, this technique allows any library editor to decide how and if breaking changes are handled — if you want to clean up after you broke something. This opens a new door for library developers.

 

So what happened after the release? The release is now several months back and so far we have received only positive feedback. All Allianz teams reported an easy update to version 8, for both Angular and our UI library.

In most cases, the whole update was reported to have taken under one hour (instead of 8 hours). We also found out that many teams were still manually updating our library. In most cases, they didn’t know about the option to automating updates.  

Overall, we were really happy with the result.