목차
- 동기 - synchronous
- 비동기 - Asynchronous
- 정리
javascript의 ajax, JAVA 외부 API 등을 호출하다 보면 데이터를 주고받을 때 동기 방식 혹은 비동기 방식으로 할지 정합니다.
각각의 정의와 특징을 알아보고 비교해봅시다.
동기 - synchronous
요청과 결과가 동시에 일어난다는 것입니다. 요청을 했으면 응답이 주어질 때까지 대기합니다.
위 화면에서 "확인" 버튼을 누르면 다음과 같은 프로세스가 이뤄질겁니다.
현재 비밀번호가 일치하지 않는다면 3번까지만 진행됩니다.
즉 1번 요청에 대한 응답이 이뤄져야만 그다음 4번 요청을 하게 됩니다.
동시에 일어난다는 것은 요청에 따른 응답(결과)이 동시에 일어난다는 의미입니다.
따라서 위 프로세스는 아래와 같이 순차적으로 일어납니다.
1번 요청 (and 결과) -> 비밀번호 일치 여부 확인 -> 4번 요청 (and 결과)
비동기 - Asynchronous
요청과 결과가 동시에 일어나지 않습니다.
요청한 자리에서 결과를 기다리지 않기 때문에 각 작업 프로세스가 순차적으로 일어나지 않습니다.
검색 페이지 메인을 로딩할 때 다음 요소들이 필요합니다.
- 실시간 검색어 순위
- 스포츠 뉴스
- 이벤트 목록
실시간 검색어 순위 응답이 돌아올 때까지 스포츠 뉴스를 요청하지 않고 기다려야 할까요?
이벤트 목록도 띄워야 하는데 3가지 요청을 순차 적으로 하면 페이지를 다 띄우는데 오래 걸립니다.
각 요청들이 데이터를 통신하는 데에 있어서 상호 연관관계가 없습니다.
이럴 때는 각 요청 별 응답을 기다리지 않고 비동기로 처리하는 것이 효율적입니다.
응답시점과 응답순서는 보장되지 않습니다.
정리
동기
- 요청과 응답이 동시에 일어난다.
- 응답을 기다린다.
- 프로세스가 순차적으로 진행된다.
비동기
- 요청과 응답이 동시에 일어나지 않는다.
- 응답을 기다리지 않고 다음 노드 (요청)를 진행한다.
- 순서를 보장하지 않는다.
'Programming > DevOps, Tools' 카테고리의 다른 글
[운영체제] 프로세스 (Process)와 스레드 (Thread) (0) | 2022.02.25 |
---|---|
[TOMCAT] webAppRootkey 지정 (0) | 2022.02.24 |
[운영체제] 운영체제의 개요 - 운영체제의 개념과 구성 (0) | 2022.02.23 |
[TOMCAT] 다중 Context(톰캣) 세션 충돌 문제 (0) | 2022.01.17 |
세션과 쿠키, JESSIONID (0) | 2022.01.14 |
댓글