Distributed application optimization in Julia

Problem description 

Distributed applications consists of several communicating components that run on different servers in different places. The performance of each component and how much the components communicate with others depend on the application's execution context like the number of application users, the time of the day, promotional campaigns, external event, battery levels, and so forth. The application should therefore adapt and reconfigure when the context changes enough for the current application deployment becoming infeasible.  

The new configuration of the application should be optimal for the current context, and one way to find the best deployment is to solve a mathematical optimization problem to find the application configuration that maximises the application's utility function. Such optimization problems can be described well in A Mathematical Programming Language (AMPL), which is a domain specific language (DSL). However, AMPL is neither object oriented nor general purpose. This makes it more difficult to integrate such problem descriptions into general purpose application management platforms and middleware automatically reconfiguring the applications when it is necessary. 

Here the programming language Julia comes as a proven alternative as it has established ways to work with mathematical optimisation problems as an integrated part of the language. This makes it easier to build the whole application management middleware in Julia. However, for a full system and middleware there are also other aspects to consider beyond solving just the optimization problem like efficiency, multi-threading, communication mechanisms, and multi-platform execution.  

Research questions 

  • Does Julia have sufficient features to fully replace the domain specific language AMPL for this kind of Optimization problems? 

  • Is it possible to integrate Julia defined optimization problems as components of a middleware platform interfacing with other programming languages like Java and C++? 

  • How does a Julia implementation compare with other programming languages with respect to ease-of-use, support, libraries, interfaces, and performance? 

What you will learn 

  • Formulating mathematical optimisation problems using various DSLs. 

  • Good understanding of the Julia programming language. 

  • Good understanding of how to integrate mathematical optimisation in software systems. 

  • Aspects to look at when deciding which programming language to use for solving a problem. 

References 

Published Oct. 3, 2024 4:48 PM - Last modified Oct. 3, 2024 4:48 PM

Supervisor(s)

Scope (credits)

60