본문 바로가기
Programming/DevOps, Tools

동기와 비동기 (synchronous, Asynchronous )

by kghworks 2022. 1. 24.

목차

  • 동기 - synchronous
  • 비동기 - Asynchronous 
  • 정리

 javascript의 ajax, JAVA 외부 API 등을 호출하다 보면 데이터를 주고받을 때 동기 방식 혹은 비동기 방식으로 할지 정합니다.

각각의 정의와 특징을 알아보고 비교해봅시다.


동기 - synchronous

요청과 결과가 동시에 일어난다는 것입니다. 요청을 했으면 응답이 주어질 때까지 대기합니다.

 

네이버의 비밀번호 변경 폼

위 화면에서 "확인" 버튼을 누르면 다음과 같은 프로세스가 이뤄질겁니다.

현재 비밀번호가 일치하지 않는다면 3번까지만 진행됩니다.

즉 1번 요청에 대한 응답이 이뤄져야만 그다음 4번 요청을 하게 됩니다.

 

동시에 일어난다는 것은 요청에 따른 응답(결과)이 동시에 일어난다는 의미입니다. 

따라서 위 프로세스는 아래와 같이 순차적으로 일어납니다.

 

1번 요청 (and 결과) -> 비밀번호 일치 여부 확인 -> 4번 요청 (and 결과)


비동기 - Asynchronous 

요청과 결과가 동시에 일어나지 않습니다.

요청한 자리에서 결과를 기다리지 않기 때문에 각 작업 프로세스가 순차적으로 일어나지 않습니다.

 

검색 페이지 메인을 로딩할 때 다음 요소들이 필요합니다.

 

  • 실시간 검색어 순위
  • 스포츠 뉴스
  • 이벤트 목록

 

실시간 검색어 순위 응답이 돌아올 때까지 스포츠 뉴스를 요청하지 않고 기다려야 할까요?

이벤트 목록도 띄워야 하는데 3가지 요청을 순차 적으로 하면 페이지를 다 띄우는데 오래 걸립니다.

각 요청들이 데이터를 통신하는 데에 있어서 상호 연관관계가 없습니다.

이럴 때는 각 요청 별 응답을 기다리지 않고 비동기로 처리하는 것이 효율적입니다. 

응답시점과 응답순서는 보장되지 않습니다.


정리

동기

 

  • 요청과 응답이 동시에 일어난다.
  • 응답을 기다린다.
  • 프로세스가 순차적으로 진행된다.

 

비동기

 

  • 요청과 응답이 동시에 일어나지 않는다.
  • 응답을 기다리지 않고 다음 노드 (요청)를 진행한다.
  • 순서를 보장하지 않는다.

댓글