대머리개발자

다시 한번 코루틴 적용해 보자. 본문

개발이야기/코틀린

다시 한번 코루틴 적용해 보자.

대머리개발자 2024. 10. 9. 13:30
728x90

when ?

동시에  병렬로 처리 하고 싶을때

 

-> 사실 API를 더 작은 기능으로 쪼개서 프론트-엔드에서 동시에를 쏘면 되겠다.

하지만 관리 포인트도 늘어나는 등 트레이드 오프 관계이기 때문에 서버 사이드도 적절하게 처리 할 수 있어야 한다. 

 

why ?

사용자에게 좋은 쾌적한 경험을 주기 위해서지 

 

두 작업이 병렬로 진행하지만 마무의리는 맞춰야 하는 경우와 그렇지 않는 경우가 있다.

 

예를들어 검색을 한다고 했을 때

1. 검색어 저장

2. 검색 결과 리턴

 

검색어 저장은 검색 결과 리턴하는데 영향도가 1도 없기 때문에

결과 리턴과 상관없이 각자도생하면 된다.

 

이력(History)를 쌓는 경우도 동일하게 처리하면 된다.

import kotlinx.coroutines.*

val scope = CoroutineScope(Dispatchers.IO)
fun search() {    
    scope.launch {
        // 검색어 저장 API
    }   
    scope.launch {
        // 히스토리 저장 API
    }  
    
    // 검색어 조회 API    
}

 

 

각각의 프로세스가 영향도가 있으면...

val scope = CoroutineScope(Dispatchers.IO)
val test1 = scope.async {
        val task1 = async {
            "api-1"
        }
        val task2 = async {
            "api-2"
        }
        task1.await() + task2.await()
    }

scope.launch {
    test1.await()
}

 

보통는 runBlocking { .. } 로 소개 되지만... 실제 코드에서는 지양한다고 한다.

 

지금도 모르지만 예전에도 모르고 주절리 했었네 ㅋ

https://hcnmy.tistory.com/185

 

코루틴 조으다!

절차지향적으로 진행하면 여러모로 편하다!!! 두말하면 잔소리다. 동시에 복잡하게.. 진행 되면 돌머리인 내가 팔로우 하기가 너무 힘들다 ㅠ 그리고 기본적으로 절차적으로 해결해도 크게 무리

hcnmy.tistory.com

 

728x90

'개발이야기 > 코틀린' 카테고리의 다른 글

armeria aop  (6) 2024.09.10
아르메리아 End-Point 설정  (0) 2024.08.23
시크릿 컬럼 추가에 대한 말도 안 되는 고민  (0) 2024.08.05
데이터 정규화  (1) 2024.05.17
[코틀린]null 처리 재미지다!  (0) 2024.04.02