비동기 처리

카페에서 진동벨을 받고 자리에 앉아 다른 일을 하다가, 벨이 울릴 때 커피를 찾으러 가는 주문 방식이에요.

정의 어떤 작업이 끝날 때까지 멍하니 기다리지 않고, 그사이에 다른 일을 먼저 처리하다가 준비가 다 되었다는 알림이 오면 결과를 챙기는 작업 방식이에요. 컴퓨터가 시간 낭비 없이 여러 일을 매끄럽게 처리할 수 있게 도와줘요.

진동벨이 바꾼 카페의 풍경

커피를 주문하고 카운터 앞에 서서 에스프레소가 다 내려올 때까지 기다려야 한다면 어떨까요? 뒤에 선 손님들은 앞사람의 커피가 나올 때까지 주문조차 하지 못하고 하염없이 기다려야 해요. 이런 방식을 컴퓨터에서는 '동기(Synchronous) 처리'라고 불러요. 하나의 작업이 완전히 끝나야만 다음 작업으로 넘어가는 방식이죠.

반면 요즘 카페는 주문을 받자마자 진동벨을 쥐여주고 손님을 자리로 보내요. 손님은 자리에 앉아 스마트폰을 보거나 친구와 대화를 나눌 수 있어요. 카페 직원도 앞사람 커피를 내리는 동안 다음 손님의 주문을 미리 받을 수 있죠.

커피가 완성되어 진동벨이 울리면 손님은 카운터로 가서 음료를 받아와요. 이처럼 오래 걸리는 일의 완료를 기다리지 않고 다음 일을 먼저 진행하는 방식이 바로 '비동기(Asynchronous) 처리'예요.

동기 처리와 비동기 처리의 동작 방식 비교 동기 (순차 처리) 앞 작업 완료까지 대기 비동기 (동시 진행) 진동벨 받고 다른 일 진행

인터넷 창이 굳지 않고 부드러운 이유

우리가 스마트폰으로 SNS를 볼 때를 생각해 보세요. 화면을 아래로 내리면 새로운 사진과 글이 계속해서 나타나요. 만약 비동기 처리가 없다면 서버에서 고화질 사진 10장을 다 내려받을 때까지 화면 전체가 꽁꽁 얼어붙을 거예요. 터치도 먹히지 않고 스크롤도 멈추게 되죠.

하지만 비동기 처리를 쓰면 사진을 다운로드하는 무거운 작업은 백그라운드(배경 화면 뒤)에 맡겨둘 수 있어요. 그동안 컴퓨터는 사용자의 화면 터치나 스크롤 입력을 멈춤 없이 즉각 처리해요.

서버에서 사진 다운로드가 끝나면 '준비 완료' 신호를 보내 화면의 알맞은 위치에 사진을 쏙 띄워줘요. 덕분에 사용자는 답답한 멈춤 현상 없이 매끄럽게 앱을 쓸 수 있어요.

조금 더 정확히 말하면: 여러 명이 일하는 것과 달라요

비동기 처리를 들으면 보통 '여러 사람이 동시에 달려들어 일하는 모습(병렬 처리)'을 떠올리기 쉬워요. 하지만 비동기 처리는 일꾼이 단 한 명이어도 충분히 가능해요.

식당 요리사가 한 명뿐이어도 파스타 면을 냄비에 넣고 삶는 8분 동안 가만히 서 있지 않아요. 면이 익는 시간을 기다리며 다른 프라이팬에 소스를 볶는 식이에요. 혼자서 일하지만 기다림으로 버려지는 시간을 알뜰하게 쓰는 것이죠.

컴퓨터도 마찬가지예요. 두뇌(CPU)가 하나뿐이어도 인터넷 통신이나 파일 저장처럼 시간이 걸리는 외부 작업을 걸어두고, 그사이에 다른 계산을 쉼 없이 처리하는 것이 비동기의 핵심 원리예요.

비동기 처리 원리: 대기 시간 동안 다른 작업 수행 [작업 1] 면 삶기 8분 대기 (외부 요청) [작업 2] 소스 볶기 즉시 실행 (동시 진행) 8분 단 1명의 일꾼 (CPU 1개) 기다리는 시간에 멈추지 않고 다른 요리 진행!

🤔 흔한 오해

✕ 오해

비동기 처리는 여러 개의 CPU가 동시에 일하는 병렬 처리와 같은 말이다.

✓ 사실

비동기는 '작업을 기다리는 방식'에 대한 이야기예요. CPU가 1개뿐이어도 대기 시간을 낭비하지 않고 다른 작업을 처리할 수 있어요.

🧺 일상에서 만나요

1 유튜브 영상을 재생하면서 동시에 아래 댓글 창을 스크롤하고 댓글을 작성할 수 있어요.
2 지도 앱에서 길을 찾는 동안 화면을 이리저리 움직여도 멈추지 않고 부드럽게 반응해요.
💡 그러니까 한마디로

비동기 처리는 앞선 작업이 끝날 때까지 멈춰서 기다리지 않고, 다른 일을 먼저 하면서 시간을 효율적으로 쓰는 방식이에요.