동기(Synchronous)와 비동기(Asynchronous)의 차이점

juny_0429·2023년 4월 25일
0

동기와 비동기는 개발을 하면서 매우 중요한 개념 중 하나입니다.
동기와 비동기에 대한 기본적인 내용과 예시에 대해 간단하게 알아보겠습니다.

동기(Synchronous)

작업을 수행하고 결과가 나올 때까지 기다리는 방식

  • 장점
    • 코드의 구조가 간단하여 이해와 오류 처리가 쉽다.
    • 작업이 순서대로 실행되어 결과가 예측 가능하다.
  • 단점
    • 결과를 반환할 때까지 대기하면서 호출자의 실행이 일시 중지되기 때문에 대기 시간이 길어질 수 있다.
    • 다른 작업을 수행하지 못하고 대기해야 하기 때문에 처리 속도가 느려질 수 있다.
    • 작업의 병렬 처리가 어려워, 높은 처리량을 갖지 못한다.

비동기(Asynchronous)

작업을 수행하면서 결과가 나올 때까지 기다리지 않고 다음 작업을 수행하는 방식

  • 장점

    • 대기 시간이 없어져 더 빠른 처리가 가능하다.
    • 높은 처리량과 작업의 병렬 처리가 가능합니다.
  • 단점

    • 코드의 구조가 복잡해져 이해와 디버깅, 오류 처리가 여렵다.
    • 작업의 순서와 시점이 예측하기 어렵기 때문에 결과의 일관성을 보장하기 위해 추가적인 조치가 필요하다.

동기와 비동기 예시

물건을 주문하는 과정을 예시로 설명해보겠습니다.


동기적으로 주문을 처리한다면,
주문이 완료될 때까지 대기해야 합니다.
즉, 주문 요청을 보낸 후에 결과가 반환될 때까지 아무 작업도 수행할 수 없습니다.
이 과정에서 다른 주문을 처리하거나 다른 작업을 수행할 수 없습니다.

비동기적으로 주문을 처리한다면,
주문 요청을 보낸 후에도 다른 작업을 수행할 수 있습니다.
예를 들어, 주문 요청이 처리되는 동안 다른 주문을 처리하거나 상품을 검색하거나 다른 작업을 수행할 수 있습니다.
이러한 방식으로 작업 처리 시간을 최소화할 수 있습니다.


동기 방식은 작업이 완료될 때까지 대기하고 다른 작업을 수행할 수 없는 반면,
비동기 방식은 작업을 병렬적으로 처리할 수 있어서 더욱 효율적인 처리가 가능합니다.

동기와 비동기 예시2

다른 예시로는 웹 페이지를 로딩하는 과정입니다.

동기적으로 웹 페이지를 로딩한다면,
브라우저는 웹 서버에서 모든 리소스를 받아들이고 페이지의 렌더링을 완료할 때까지 기다립니다.
이 과정에서 브라우저는 다른 작업을 수행할 수 없습니다.

비동기적으로 웹 페이지를 로딩한다면,
브라우저는 웹 서버에서 리소스를 받아들이는 동안 다른 작업을 수행할 수 있습니다.
예를 들어, 이미지 파일을 다운로드하는 동안 다른 리소스를 요청하거나 또는 사용자 입력을 받아들이거나 다른 작업을 수행할 수 있습니다.
이러한 방식으로 로딩 속도를 개선할 수 있습니다.

0개의 댓글