The cloud – the online realm of our digital world – is becoming bigger and more important by the day. Allowing programmers and developers to work with that cloud is therefore also increasingly important. Yet, even though cloud programming has been around for a good 15 years, it has remained relatively inaccessible. Asterios Katsifodimos aims to change that: in the next five years he and his team want to democratize the development of scalable and consistent cloud applications. For this effort he has received a prestigious Vidi grant from NWO.
There are several reasons why creating and maintaining cloud applications is so difficult. First of all is complexity. As a software developer you have to combine different specialized fields such as database systems, distributed systems, and, of course, programming. Then there is the increasing amount of difficulties generated by ever-changing abstractions necessary to use established cloud providers – they dictate the rules.
Combine these two hurdles, and the result is a field of computer science that only a select amount of programmers have a solid grip of. “Only companies with enormous budgets, such as Amazon or Meta, are able to recruit these programmers,” summarizes Katsifodimos. “The result is that small companies are unable to develop scalable and consistent cloud Systems applications. I want to democratize the realm of cloud programming, making it accessible to everyone with easy to use, open source software.”
We are still living in the stone ages of cloud programming. Democratizing the use of scalable and consistent cloud applications can time-travel us “back” to the 21st centrury.
The root of the two main hurdles in cloud programming is fault tolerance: when writing code for the cloud, you are writing code for numerous different machines, operating under different circumstances at completely different geographical locations. At any given moment, you may expect one or several of these machines to fail, but the software needs to keep running nonetheless. “When code on your laptop fails, you can just reboot it and start again. But you can’t simply reboot a cloud application, so your code has to deal with those faults.”
“Frankly, that is an enormously interesting challenge for a software engineer like myself,” Katsifodimos admits, “if you look at average, state-of-the-art code dealing with cloud applications, a trained eye might notice that 90% of the code is cloud-infrastructure failure management. In other words, only 10% of the code is doing something actually useful. My ambition is to turn that around 180 degrees. So that developers in the future only have to dedicate 10% of their code to cloud-infrastructure, and can leave all the rest to making their product.”
One promising way of reaching this goal is to create a compiler – a program that translates code that is understandable for humans into code that is useful for computers – that will automatically deal with the parallelizing and fault tolerance of a cloud application. Katsifodimos: “I hope to make it possible that programming for the cloud will feel like programming for a laptop – only thousands of times faster and more scalable.”
“We are still living in the stone ages of cloud programming. Democratizing the use of scalable and consistent cloud applications can time-travel us “back” to the 21st centrury.” Katsifodimos concludes.