Titulo Estágio
Creation of an Event Sourcing Framework
Áreas de especialidade
Engenharia de Software
Local do Estágio
DEI
Enquadramento
Event Sourcing (ES) is a state storage format that uses events as the source of truth in the system. Instead of storing only the current snapshot of the data, ES systems keep track of all the changes to the state. In other words, while most current systems use a database to keep data and the database only has the last and current state of data, the ES system keeps all the history of changes. While ES systems take a larger space and make queries slower, systems are auditable and can be rebuilt and changed on the fly. For example, if a component crashes due to some faulty event, one can correct the event and re-run the component to ensure that it reaches a correct state. For more information check Martin Fowler's blog: https://martinfowler.com/eaaDev/EventSourcing.html.
ES is particularly useful in banking systems. Banks need to keep the entire history of transactions, because the current balance is insufficient. Similarly, ES is also very useful in applications that need to keep client credits, like in telecommunication systems, where users buy and use telephone credits. Currently, in the interaction with Altice, in the context of the Power project, we have developed a sample application based on our own simple ES library. A more elaborate research is worthwhile pursuing to explore a number of other possibilities:
* Elaborate on the simple ES library, to produce a more complete and powerful one;
* use commercially available libraries, such as Axon, to compare their use with our own library;
* perform a deeper analysis of SAGAs and pursue their integration with the library. A SAGA is a business activity that encompasses multiple services and overcomes the lack of transactions;
* we would also like to explore the possibility of using an entirely different architecture, where the log (which keeps ES events) becomes the communication backbone, instead of hiding the events inside the different (micro)services.
* automate the snapshot mechanism that keeps internal state of services, such that the library/framework can support service data serialization, e.g., periodically, such that, should the service crash, it can resume from the snapshot instead of consuming the entire log from the beginning.
Objetivo
In this internship the student should evolve our sample ES prototype application in the context of the Power project. In the process, the student should create a library/framework capable of considerably simplifying the development of ES applications and automating certain steps, such as snapshot creation. As a positive side effect of this work, during the process of further exploring ES development techniques, this internship should bring expertise about these technologies and their interaction to the project.
Plano de Trabalhos - Semestre 1
- Gain insight on the existing application. (2 weeks).
- Study state-of-the-art frameworks and tools that can be used to build ES systems, including design pattern such as SAGAs (1 month).
- Define the prototype requirements (2 weeks).
- Define the library/framework requirements (1 month).
- Write intermediate report (1 month).
Plano de Trabalhos - Semestre 2
- Port the application to Axon (1 month)
- Create the library/framework (2 months)
- Port the application to the library (1 month)
- Write scientific paper extracting the lessons from the process (1 month)
- Write final report (1 month).
Condições
The work should take place at the Centre for Informatics and Systems of the University of Coimbra (CISUC) at the Department of Informatics Engineering of the University of Coimbra in the scope of the Power research project (https://www.cisuc.uc.pt/en/projects/power).
An 875,98 euros per month scholarship is foreseen for 6 months. The attribution of the scholarship is subject to a public application.
Orientador
Filipe Araújo
filipius@uc.pt 📩