Dominik Meißner has received a Master diploma cum laude in Computer Science from Ulm University in 2017. They then joined the Institute of Distributed Systems and are currently employed as a research assistant.
- Distributed Computing
- Event processing
- Distribution and parallelization aspects
- Time & programming models
- Distributed systems & architectures
- Event-driven architectures
- Event sourcing & CQRS
- Retroaction in event-sourced systems
- Scalability of architectures
- Concurrency and parallelism
- Other Topics
- Web technologies & web architectures
- Programming languages and concepts
- Open data & open educational ressources
Stateful applications are based on the state they hold and how it changes over time. This history of state changes is usually discarded as the application progresses. By building on concepts from event processing and storing the application history, we envision a novel programming paradigm that supports retroaction. Retroactive computing introduces new opportunities for a developer to access and even modify an application timeline. By enabling the exploration of alternative scenarios, retroactive computing establishes powerful new ways to debug systems and introduces new approaches to solve problems. Initial work has shown the practicality and possibilities of this new programming paradigm and introduces further research questions and challenges.
Stream-based graph systems continuously ingest graph-changing events via an established input stream, performing the required computation on the corresponding graph. While there are various benchmarking and evaluation approaches for traditional, batch-oriented graph processing systems, there are no common procedures for evaluating stream-based graph systems. We, therefore, present GraphTides, a generic framework which includes the definition of an appropriate system model, an exploration of the parameter space, suitable workloads, and computations required for evaluating such systems. Furthermore, we propose a methodology and provide an architecture for running experimental evaluations. With our framework, we hope to systematically support system development, performance measurements, engineering, and comparisons of stream-based graph systems.
Event sourcing is increasingly used and implemented in event-based systems for maintaining the evolution of application state. However, unbounded event logs are impracticable for many systems, as it is difficult to align scalability requirements and long-term runtime behavior with the corresponding storage requirements. To this end, we explore the design space of log pruning approaches suitable for event-sourced systems. Furthermore, we survey specific log pruning mechanisms for event-sourced logs. In a brief evaluation, we point out the trade-offs when applying pruning to event logs and highlight the applicability of log pruning to event-sourced systems.
Distributed event-sourced systems adopt a fairly new architectural style for data-intensive applications that maintains the full history of the application state. However, the performance implications of such systems are not yet well explored, let alone how the performance of these systems can be improved. A central issue is the lack of systematic performance engineering approaches that take into account the specific characteristics of these systems. To address this problem, we suggest a methodology for performance engineering and performance analysis of distributed event-sourced systems based on specific measurements and subsequent, targeted optimizations. The methodology blends in well into existing software engineering processes and helps developers to identify bottlenecks and to resolve performance issues. Using our structured approach, we improved an existing event-sourced system prototype and increased its performance considerably.
State changes over time are inherent characteristics of stateful applications. So far, there are almost no attempts to make the past application history programmatically accessible or even modifiable. This is primarily due to the complexity of temporal changes and a difficult alignment with prevalent programming primitives and persistence strategies. Retroactive computing enables powerful capabilities though, including computations and predictions of alternate application timelines, post-hoc bug fixes, or retroactive state explorations. We propose an event-driven programming model that is oriented towards serverless computing and applies retroaction to the event sourcing paradigm. Our model is deliberately restrictive, but therefore keeps the complexity of retroactive operations in check. We then introduce retro-λ, a runtime platform that implements the model and provides retroactive capabilites to its applications. While retro-λ only shows negligible performance overheads compared to similar solutions for running regular applications, it enables its users to execute retroactive computations on the application histories as part of its programming model.
Several data-intensive applications take streams of events as a continuous input and internally map events onto a dynamic, graph-based data model which is then used for processing. The differences between event processing, graph computing, as well as batch processing and near-realtime processing yield a number of specific requirements for computing platforms that try to unify theses approaches. By combining an altered actor model, an event-sourced persistence layer, and a vertex-based, asynchronous programming model, we propose a distributed computing platform that supports event-driven, graph-based applications in a single platform. Our Chronograph platform concept enables online and offline computations on event-driven, history-aware graphs and supports different processing models on the evolving graph.
In large-scale disaster scenarios, efficient triage management is a major challenge for emergency services. Rescue forces traditionally respond to such incidents with a paper-based triage system, but technical solutions can potentially achieve improved usability and data availability. We develop a triage management system based on commodity hardware and software components to verify this claim. We use a single-hop, ad-hoc network architecture with multi-master replication, a tablet-based device setup and a mobile application for emergency services. We study our system in cooperation with regional emergency services and describe experiences from a field exercise. We show that state-of-the-art commodity technology provides the means necessary to implement a triage management system compatible with existing emergency service procedures, while introducing additional benefits. This work highlights that powerful real-world ad-hoc networking applications do not require unreasonable development effort, as existing tools from distributed systems, like replicating No-SQL databases, can be used successfully.
Student Theses and Individual Student Projects
The section lists open and finished topics for theses. More topics for Bachelor/Master theses are available on the thesis website of the institute.
I am also accepting own topics that relate to my fields of interests. Please get in touch for suggestions.
I provide a number of individual master projects that are related to my field of research. Several student thesis topics can also be worked on as part of a master project.
Most projects can be conducted as 8 LP or 16 LP projects, depending on the focus and extent of the topic.
For more details, please get in touch with me.
- Introduction to Computer Networks (GRN)
- Architectures for Distributed Internet Services (ADIS)
- Distributed Computing Platforms in Practice (VBP)
- Privacy in the Internet (PRIV)
- Selected Topics in Distributed Systems (ATVS)
- Research Trends in Distributed Systems (RTDS)
- Computer Networks and IT-Security (RNSEC)
- Introduction to Computer Networks (Grundlagen der Rechnernetze) [WiSe17,WiSe18,WiSe19]
- Advanced Concepts of Communication Networks (Fortgeschrittene Konzepte der Rechnernetze) [SoSe18]
- Distributed Computing Platforms in Practice (Verteilte Berechnungsplattformen in der Praxis) [SoSe19,SoSe20]
- Architectures for Distributed Internet Services (Architekturen für verteilte Internetdienste) [SoSe20]
Seminars and Student Projects
- Seminar: Privacy in the Internet (Privacy im Internet) [WiSe17,WiSe18,SoSe20]
- Seminar: Selected Topics in Distributed Systems (Ausgewählte Themen in Verteilten Systemen) [WiSe17, SoSe18,WiSe18,SoSe19,WiSe19,SoSe20]
- Seminar: Research Trends in Distributed Systems (Forschungstrends in Verteilten Systemen) [WiSe17, SoSe18,WiSe18,SoSe19,WiSe19,SoSe20]
- Project: Computer Networks and IT-Security (Rechnernetze und IT-Sicherheit) [multiple individual student projects]
- State of the Art of Web Application Security (Seminar ATVS/RTDS; Summer Term 2020)
- Trusted Execution Environments (Seminar ATVS/RTDS; Summer Term 2020)
- Doxxing als Angriff auf die Privacy (Proseminar PRIV; Summer Term 2020)
- Trusted Execution Environments (Seminar ATVS/RTDS; Winter Term 2019/2020)
- Serverless Computing (Seminar ATVS/RTDS; Summer Term 2019)
- Distributed Causality Tracking (Seminar ATVS/RTDS; Winter Term 2018/2019)
- GDPR: Theorie und Praxis (Proseminar PRIV; Winter Term 2018/2019)
- Machine Learning on Event Streams (Seminar ATVS; Summer Term 2018)
- Networking in Online Multiplayer Games (Seminar ATVS; Winter Term 2017/2018)
- Privacy in Instant Messaging Anwendungen (Proseminar PRIV; Winter Term 2017/2018)