Accepted
- It has to be Kotlin/Java/Scala
- MVP developer has best experience in Kotlin
- Project is a small modular monolith
- Integration with a database and event bus will be needed
- API must be documented with Swagger
- Kotlin for a language
- Ktor for a framework
- Kotlin package as a module representation
Pros
- fast development in the beginning (Ktor is a simple framework, package structure is simple)
- there are libraries for Ktor to integrate with most common databases and message brokers
- full support for non-blocking asynchronous code (Kotlin coroutines)
- Relatively good support for functional programming
- Packages can be transformed into gradle modules in the future if needed
- Ktor is a number one server-side framework for Kotlin
- Ktor provides support application events (it can be used for in-memory event bus)
Cons
- data duplication
- Ktor lacks some out-of-the-box functionalities that Spring has (like Spring Data, Swagger integration)
- Ktor is less popular than Spring
- Kotlin is less popular than Java for server-side