동기와 비동기
동기 (Synchronous : 동시에 일어나는)
- 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다.
- 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다.
- 요청과 결과가 한 자리에서 동시에 일어난다.
- 요청이 들어온 순서대로 순차적으로 처리된다.
ex ) 카페에서 줄을 서서 커피를 주문했을 때 맨 앞 사람이 주문한 커피를 받을 때까지 다음 주문을 받지 않음
장점 : 설계가 매우 간단하고 직관적
단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야 한다, 웹에서 응답을 받을 때까지 요청이 처리되지 않아서 실시간으로 처리하기가 어렵다.
비동기 (Asynchronous: 동시에 일어나지 않는)
- 동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다.
- 요청한 그 자리에서 결과가 주어지지 않는다.
- 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
- 대기 시간동안 다른 작업을 수행 할 수 있다.
ex ) 카페에서 줄을 서서 커피를 주문했을 때 점원 한명이 커피 주문을 받고 다른 점원이 커피를 건네주는 것이 비동기 방식의 예시다.
( 커피가 앞의 사람의 커피보다 더 빨리 만들어져서 먼저 받을 수 있다)
장점 :
1.결과가 주어지는데 시간이 걸리더라도 그 시간 동안에 다른 작업을 할 수 있으므로 자원들을 효율적으로 사용 할 수 있다.
- 응답이 끝나지 않더라도 다른 작업을 할 수 있기 때문에 화면이 하얗게(요청을 다시 보내서 다시받는 작업을 안해도 된다) 안된다.
단점 : 동기보다 복잡한 설계 , 리소스를 많이 먹음
자바스크립트의 콜백
이벤트 루프를 알아두자.이벤트 루프 덕분에 비동기 작업을 수행할 수 있다.
코드를 실행하면서 비동기 작업은, "실행해!"라는 명령을 담아 어딘가로 던져진다.
이 **"어딘가"**가 이벤트 루프이다. 이벤트 루프가 비동기 작업을 담당 및 처리한다.
덕분에 자바스크립트 엔진은
"무거운 작업"을 어딘가에 위임하고, "동기적으로" 바로 다음 코드를 실행할 수 있다.
그리고 언젠가 이벤트 루프에서 작업이 완료되면??
비동기 작업을 만들 때 콜백 함수를 함께 지정하는데, 콜백함수를 가지고 후속 작업을 진행한다.
'CS > 네트워크' 카테고리의 다른 글
인증과 인가 ( 쿠키/세션/토큰/JWT) (0) | 2023.01.06 |
---|---|
IPv4와 IPv6 (0) | 2023.01.05 |
도메인과 DNS (0) | 2023.01.05 |
프로토콜(protocol)이란? (0) | 2023.01.03 |
OSI 7계층과 TCP/IP 4계층 (0) | 2023.01.03 |