Building a scalable development cluster at Adyen

More Info
expand_more

Abstract

Software systems today are growing to incredible proportions. Software impacts everything in our society today, and its impact on the world keeps growing every day. However, developing large software systems is becoming an increasingly complex task, due to the immense complexity and size. For a software engineer to stay productive, it is vital they can work effectively on a system, being able to focus on the problem at hand. However, large software systems throw up a lot of roadblocks on the way, with complex and slow build processes impacting the developer's productivity to higher and higher degrees as the software system grows. To help developers stay productive, we need new, more powerful ways of assisting them during their activities.

In this thesis, we present our development cluster as a part of the solution to developing software at scale. The cluster provides a high-performance infrastructure that can be used by developers to build and deploy their applications during development. By moving these build and deploy processes to a cluster during development, we can benefit from more powerful computing resources which help developers work more effectively. We evaluate our development cluster in a number of different categories, comparing build speed, system startup and general developer workflows. Additionally, we evaluate how well our solution scales and what the impact on network load is for a company integrating with this system.

This move to cloud-based development brings along new challenges, but also many new possibilities in terms of tooling, developer collaboration and software engineering research. We are convinced our cluster can help scale software development efforts in industry, as well as bring new ways of doing research on software engineering.