As part of my third year at the University of Glasgow, four other students and I were tasked with creating a event-sourced financial platform for Avaloq. Our completed application - Autokrator - consists of many components: a central event bus; a microservice framework, the superclient; a backend gateway and a UI. It was required that our application contain a central event bus, three microservices and a small web application that demonstrates the system working. Further, it was required that events had consistency; that multiple instances of each service could run at once and work together; that events would be redelivered if a service crashed during processing; and that each service's ephemeral storage could be rebuilt from the event bus if destroyed.
In particular, I managed and led development on the event bus and the superclient. The event bus, written in Rust, is the central server that manages and persists events while ensuring consistency, correlation and that microservice clients can scale horizontally. The superclient, also written in Rust, is a framework for building clients in Lua with persistence and a REST API.
This involved working with the team to design and implement the various solutions that allowed the system to achieve the desired properties; to streamline and improve our development processes; and to mentor other team members in fixing bugs and building features when working with unfamiliar technologies.