Characterizing Microservice Architectures

Microservice architectures are the default method for building distributed applications in industry. Though the basic tenants of this architectural style are well known—they faciitate independence of development teams, increased deployment velocity, and...

Cloud Cost Optimizer

The goal of this project is to design and implement a scalable multi-cloud cost optimizer capable of calculating the best scheme for deploying a given arbitrary complex workload over a public (hybrid) cloud, thus reducing the involved monetary costs. As an input, the...

Advanced proactive caching for heterogeneous storage systems

This project targets improving the performance of distributed storage systems, such as Ceph and NooBaa, by developing novel caching frameworks that (1) take into account request heterogeneity, and (2) perform proactive caching decisions (a.k.a., speculative...

Automated detection of memory safety vulnerabilities in Rust

In comparison to C, the Rust language provides significant memory safety guarantees through its concept of lifetimes and its borrow-checker. However, Rust has an “unsafe” keyword which suspends some of the compiler’s safety checks within a specified code...