This talk elaborates our awesome journey migrate all our micro services from Java to Kotlin.
We will take a closer look at the challenges we faced as a team and the impact on our day to day work in an agile environment and how we overcame technical hurdles integrating with Spring Boot and introducing async workflows with Kotlin coroutines.
Finally we discuss at the actual benefits that we gained by moving all our micro services to Kotlin and do a critical review of our journey and an outlook at things to come.
8. Why we migrated from Java to Kotlin
▪ Self-perception as driver in technology
▪ Controversial design of Java
▪ Kotlin as officially supported language for Android
8
9. How we migrated
▪ Partially migrated classes
▪ Kotlin and Java side by side
▪ Migrated corresponding tests
▪ Migration of libraries
9
10. Migrating to native libraries
10
▪ No need to force migration
▪ Less matured
▪ Less documented
▪ KTOR – asynchronous Web framework
▪ Spring Boot as an established and reliable framework
29. Kotlin's Coroutines
▪ Based on suspending functions
▪ Dispatched using launch wrapper
▪ Async functions returning deferred result when calling await()
31. Emulating a sync endpoint using coroutines
32
▪ Remove redundant codebase
▪ Remove old synchronous service
▪ Reuse existing codebase
32.
33.
34.
35.
36. Migration Challenges
37
▪ First team to introduce Kotlin
▪ Learning a new language’s concepts
▪ Introducing native Kotlin frameworks
37. Ongoing Challenges
38
▪ Java is the most popular backend language
▪ Little documentation for native frameworks
▪ Find new developers open to learn new technologies
▪ Sharing our experience with others
39. Review
40
▪ Migrating was worth the effort
▪ Kotlin will stay
▪ Number of new features can be overwhelming
▪ Coroutines are a more complex feature of Kotlin
40. Outlook
41
▪ RabbitMQ as queueing solution
▪ Spiking Blockchain as possible Storage Solution
▪ Automated Service Setup using Ansible / Puppet
▪ Share our experience with others