본문 바로가기

Kotlin_study

[Kotlin] 동기와 비동기 살펴보기

코드를 짜면서 계속해서 나의 부족함에 대해 생각했다.

 

현재 너무 주먹구구식으로 코드를 작성하고 있고, 팀에 안드로이드 개발자가 혼자이다 보니 코드에 대한 피드백을 받을 수 없어 실력이 늘지 않는다는 생각을 했다. 이 문제를 해결하기 위해 개발과 병행하며 기초를 공부해야겠다는 생각을 하였고, 마침 오늘 Room DB 관련하여 코드를 작성하며 비동기 처리에 대해 살펴볼 기회가 있었다. 

 

동기, 비동기

동기란 이전 작업이 종료될 때까지 기다렸다가 다음 작업을 진행하는 것, 비동기란 이전 작업이 종료될 때까지 기다리지 않고 실행하는 것.

 

이렇게 보았을 때 비동기는 동시에 여러 작업을 처리할 수 있으니, 늘 비동기적으로 동작하도록 코드를 작성해야 하는 것인가? 라는 생각이 들었다. 내 생각은 우선 NO였다. 작업에 따라 이전 작업의 영향을 받는 경우와 독립적으로 동작하는 작업이 있을테니 이전 작업에 의존적인 경우 당연히 동기적으로 실행해야 한다고 생각하였다. 

 

비동기가 왜 필요한가?

Room DB관련 작업을 할 때 main thread에서 작업을 할 경우 시간이 오래 걸리면 다음 작업에 지장이 생기므로 문제가 된다. 이를 해결하기 위해 비동기적으로 작업을 실행할 필요가 있는 것이다.

 

뷰를 그릴 때에도 서버에서 데이터를 받아와서 화면에 뿌려야하는데 만약 서버에서 응답이 늦는다면? 그 사이 유저는 화면을 조작하려고 하여도 움직이지 않아 답답함을 느낄 것이다. 그렇기 때문에 메인 스레드에서 하지 않아도 되는 작업들은 별도의 스레드에서 작업하는 것이 필요한 것이다.

 

안드로이드 공식 개발자 문서에서 비동기처리를 위해 코루틴을 권장하고 있어서(light-weight, fewer memory leak과 같은 이유로) 이를 살펴보고 이번 프로젝트에서 적용해나갈 예정이다. 

 

사용자의 부정경험을 최소화하고 싶다는 생각을 늘 하면서 개발에 임했는데, 공부는 뒷전으로 미루고 모래성을 쌓아올리고 있는 것 같아 불안감을 갖고 있었는데, 지금이라도 기초를 다져서 내가 목표한 개발자가 되고 싶다.