kotlin-serverside-study / kitchen-force

0 stars 3 forks source link

[delivery] coroutine 사용의 건 #50

Open ohohoh3275 opened 2 years ago

ohohoh3275 commented 2 years ago

참고 예정: https://github.com/gaaon/kotlin-coroutines-examples

humanitas03 commented 2 years ago

참고주신 깃헙의 예시는 코루틴 적용의 적당한 유스케이스 인것 같습니다. 직접 구현해보면서 코루틴의 동작원리를 학습한다는 부분에 초점을 맞추고, 실무적으로 응용가능한지 부분은 조금더 생각해볼 것들이 몇가지가 있어요.

첫번째로, 저희 플랫폼(Spring)이 리액티브 기반이 아니기 때문에 실제로 성능상의 이점이 크지 않을 수 있으니 참고부탁드립니다. Servlet vs Webflux 참고 : https://madplay.github.io/post/spring-webflux-references-overview

두번째로, 만약 구현하는 코루틴에서 DB CRUD 기능을 사용하신다고 하면 코루틴 적용을 추천드리지는 않습니다. 현재 저희가 적용한 Spirng-data-jpa의 ORM API들은 Blocking I/O 기반이라, 비즈니스로직에서 논블로킹 비동기 처리를한다 해도 Repository 영역에서 병목이 생기기 때문에 크게 효용이 없습니다. 물론 Non-Blocking I/O 기반으로 JDBC를 커스터마이징 해서 사용할 수 있으나, 이부분은 많이 번거롭고 학습할 내용도 많아서 지금 적용하는데 어려움이 있어 참고만 해주시면 될 것 같습니다.

참고 : https://itstory.tk/entry/Spring-Webflux-JDBC%ED%98%B9%EC%9D%80-blocking-call-%ED%95%B8%EB%93%A4%EB%A7%81-%EB%B0%A9%EB%B2%95

humanitas03 commented 2 years ago

@ohjiyeon3275 아, 추가 의견을 좀 드리자면, 바로 Coroutine을 비즈니스 로직에 적용하는 게 어려울수도 있으니, 관련 자료같은걸 리서치 해서 Markdown, Notion, PPT 같은 걸루 정리해서 간단한 발표 정도를 먼저 준비해보시는건 어떨까 조심스레 의견을 드립니다.ㅎㅎ

저도 공부도 하고 그러게요