In this presentation, I will show what might be taken into consideration when writing a modern JVM application. What are the differences between green threads and fibers? What kind of thread pools and how many of them should be used? Can we have a non-blocking communication with relational databases? Can we decouple our domain logic from asynchrony? Is it possible to have a reasonable stack-trace in asynchronous code? These are the main questions I’d like to address in the presentation.