We struggle with good functional design for about 50 years meanwhile, and we haven’t solved the problem by far. But while in the past bad design only meant a hard to maintain codebase, in times of microservices, cloud native, API first and more, bad design also means brittle and poorly scalable systems at runtime. So, good functional design is needed more desperately than ever. But, how can we create it? In this session, first we will examine, how functional design affects the properties of a system. Then, after revisiting some timeless design foundations, we will apply the concepts learned to our challenges. Finally, we will look at the trade-offs of our approach and some alternative options. After this session, you will have gained a better understanding of modern system design.