In recent years, microservice architecture has become an extremely popular way of delivering server side features. Microservices provide the ability to deploy isolated changes reducing the fear of undesirable side effects or bugs. Another benefit to this that they allow new teams to confidently make changes to code they fully understand. This has been observed numerous times in Poppulo where we’ve had many new starts deploy code to production within hours of starting.
However the same cannot be said for the UI. The UI, is a semi monolith that is growing. With this, comes a fear of code change along with other negatives associated with monolith like code bases. Many companies have made attempts to allow isolated UI features to be deployed with varying degrees of success. Most of these companies invest large infrastructure and capital to be able to do this. While most of these issues are likely to be eventually solved by a webcomponent based architecture, it isn’t easily achievable now.
This talk aims to discuss the problems Poppulo has encountered while delivering UIs for our features and the journey we took to move to a modular UI design.
David: I am currently a Tech Lead with the Optimus team at Poppulo. I’ve been with Poppulo for about 3 years and spent a year and a half at Tech Lead. Before that, I was in Digisoft for the best part of 5 years, also as a Tech lead. And prior to that I was with Fidessa in Belfast, working on trading platforms.
Right now, I am working on a management tool for internal communications, and more specifically Poppulo Campaigns. Campaigns are about planning efficient communications to employees over a period of time. As part of this, we are building a tool called Outcome Surveys, which is allows internal communicators to measure change over a period of time.
David: Currently in Poppulo we’ve got 6 product development teams. When I started 3 years ago, we were only starting the 3rd team. As multiple teams started building more features independently, we started facing inconsistencies between the different UIs. The entire platform was meant to be a coherent user experience, but as more teams started contributing, we found the UIs were getting less and less consistent.
I started looking at how we could bring these UIs together while keeping the scalability of each team having their own codebase. This talk is about our journey around this and how we brought that to life during our innovation week: the pros and cons of what we came up with, how we got around some difficulties and the overall results.
David: Innovation Week is a new concept we have in Poppulo. What we wanted to do is to bring ideas that each teams had and gave them the opportunity to work on them for a week. It was done in partnership with the rest of the company, who gave the input on the ideas and helped bring them into life in the space of a week. This was the opportunity to trial this consistent UI framework, so that teams could have a coherent platform to build their ideas on.
David: This talks is meant for large development departments (as opposed to single teams) who contribute to a single UI. Netflix and Spotify do this on a grand scale, but there is somewhere between them and startup companies, where we find ourselves now: a mid-range company who has a large enough UI and large number of teams, making it difficult to scale the contribution to UIs without either conflicting with each other or lose consistency.
David: We’ve built this out on Angular but it’s not to say the pattern wouldn’t work with any other framework. We picked Angular because it’s a tech we already work with and know at Poppulo. The Angular CLI was also a very powerful tool, as we didn’t want to spend time with complicated build scripts, linting tools, etc.
Angular knowledge isn’t a prerequisite for this talk though, as I’m focusing very much about how we brought this platform to life, the reasons behind it and the overall framework.
David: I’d like people to think about what it means to deconstruct a UI to modular concepts. We need to be able to remove coupling: UIs don’t need to be monolithic applications. We should think in terms of vertical slices and see how we can split user interfaces. The goal of my talk is to show that we started from this “holy grail” idea of modular UI and how we incrementally applied it to start deconstructing a monolithic application while keeping the UI consistent.