Engineering Note

동기(Synchronous) vs 비동기(Asynchronous) 본문

SW Engineering

동기(Synchronous) vs 비동기(Asynchronous)

Software Engineer Kim 2025. 6. 17. 09:01

동기 vs 비동기, 커피 주문으로 이해하기 + 콜백함수

동기(Synchronous): 요청한 작업이 끝날 때까지 기다렸다가 다음 일을 진행하는 방식
비동기(Asynchronous): 요청한 작업을 기다리지 않고, 다음 일을 먼저 진행하고 결과는 나중에 받는 방식

커피 주문 상황으로 이해해보기

손님과 바리스타가 있다고 해보자.
손님이 커피를 주문했는데, 바리스타가 원두가 떨어진 걸 발견하고 원두를 외부에 주문한다.

이때 **"원두 주문"**을 작업 요청이라고 보면,

  • 동기 처리는:
    바리스타가 원두가 도착할 때까지 가만히 기다리며,
    다른 손님의 주문은 받지 않는 상황이다.
  • 비동기 처리는:
    바리스타가 원두를 주문해두고, 도착하기를 기다리는 동안
    다른 손님의 주문을 받고 커피를 만드는 작업을 계속하는 것이다.

비동기에서 콜백 함수란?

비동기 방식에서는 작업을 요청한 후 결과가 언제 도착할지 모르기 때문에, 응답이 오면 실행할 함수를 미리 등록해두어야 한다.
이렇게 결과가 도착했을 때 실행될 함수 콜백 함수(callback function) 라고 한다.

Java에서는 콜백 함수를 전달할 때 보통 람다(lambda) 표현식을 사용하며,
JavaScript에서는 함수 자체를 변수처럼 전달할 수 있기 때문에, 콜백 함수를 함수 인자로 넘기는 방식이 자연스럽게 사용된다.

 

예시 요약

Java:

service.doAsync(data -> System.out.println("응답 도착: " + data));

 

JavaScript:

fetch(url).then(response => console.log("응답:", response));

 

→ 이 data -> {...} 또는 response => {...} 부분이 바로 콜백 함수이다.

핵심 요약

  • 동기: 요청한 작업이 끝날 때까지 기다린 후 다음 일 수행
  • 비동기: 요청한 작업을 시킨 후 기다리지 않고 다른 일을 먼저 수행, 결과는 나중에 받음
Comments