New

Asynchronous Operation

lshjju 2025. 9. 28. 21:06

Asynchronous Operation



'비동기 작업'이라는 용어는 다소 생소하게 들릴 수 있으나, 일상생활 속 비유를 통해 설명해 드리면 훨씬 명확하게 와닿으실 것입니다.


[ 비유적 설명 ]

가장 흔한 비유는 레스토랑에서의 음식 주문입니다.



동기 방식 (Synchronous): 

 

상상해 보세요. 

손님이 주방에 스파게티를 주문합니다. 

주방장은 스파게티가 완성될 때까지 다른 주문을 일절 받지 않고, 오직 스파게티만 만듭니다. 

스파게티가 다 만들어져서 손님에게 나가고 나서야 다음 주문을 받기 시작합니다. 

이 방식은 한 번에 하나의 일만 처리하기 때문에 순서는 명확하지만, 스파게티를 만드는 동안 다른 손님들이 계속 기다려야 하는 단점이 있습니다. 

이처럼 하나의 작업이 완료될 때까지 다음 작업을 시작하지 않고 기다리는 방식을 '동기(同期) 작업'이라고 합니다.



비동기 방식 (Asynchronous): 

 

이번에는 똑같이 스파게티를 주문했지만, 주방장은 스파게티를 만들기 시작하면서 동시에 다른 주문도 받아서 샐러드를 만들거나 음료를 준비하는 등 여러 작업을 동시에 진행합니다. 

스파게티는 스파게티대로 요리하고, 그동안 다른 간단한 요청들은 즉시 처리하는 것입니다. 

스파게티가 완성되면 서빙 직원이 손님에게 가져다줄 것입니다. 이처럼 오래 걸리는 작업이 시작되더라도 그 작업이 완료될 때까지 기다리지 않고, 다른 작업을 먼저 처리하거나 동시에 진행하는 방식을 '비동기(非同期) 작업'이라고 합니다. 

오래 걸리는 작업이 끝나면, 미리 정해놓은 방식(예: 콜백 함수)으로 결과를 통보받거나 처리하게 됩니다.


[ 왜 비동기 작업을 사용할까요? ]

컴퓨터 프로그래밍, 특히 웹 애플리케이션에서는 이러한 비동기 방식이 매우 중요합니다.

예를 들어, 웹사이트에서 서버로부터 데이터를 가져오는 작업(파일 다운로드, 이미지 로딩 등)은 시간이 다소 소요될 수 있습니다.



만약 이러한 작업이 동기 방식으로 이루어진다면, 데이터가 모두 다운로드될 때까지 웹사이트가 멈춰서 아무것도 클릭할 수 없게 됩니다.


하지만 비동기 방식으로 처리하면, 데이터를 다운로드하는 동안에도 사용자 인터페이스는 계속 작동하여 사용자가 다른 버튼을 누르거나 화면을 스크롤하는 등의 행동을 할 수 있습니다. 

데이터 다운로드가 완료되면 그제서야 해당 데이터를 화면에 보여주는 것입니다.



이처럼 비동기 작업은 프로그램이 사용자의 요청에 즉각적으로 반응하고, 더 효율적이며 부드러운 사용자 경험을 제공하기 위해 사용되는 핵심적인 기법입니다.