동기(Synchronous )
synchronous : 동시에 발생하는
데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것
- 순차적/직렬적으로 태스크를 수행한다.
- 요청을 보냈다면, 응답을 받아야 다음 동작이 이루어진다.
- 순차적으로 실행되므로, 어떤 작업이 수행 중이라면 뒤의 작업은 대기한다.
- 블로킹(작업 중단)이 발생한다.
사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지
사용자는 다른 활동을 할 수 없으며 기다려야한다.
ex) 브라우저를 실행시키는 시간이 약 10분이 소모된다고 가정했을 시,
브라우저가 실행되는 10분 동안 사용자는 컴퓨터의 다른 프로그램들을 동작시키지 못하며
브라우저가 켜지는 그 순간만을 계속 기다려야 한다.
이 시간이 10분이든 100분이든 관계없이 한 개의 데이터 요청에 대한 서버의 응답이 이루어질 때까지 계속 대기해야 한다.
장점
▶️ 설계가 매우 간단하고 직관적
단점
▶️ 결과가 주어질 때까지 아무것도 못하고 대기
비동기(Asynchronous)
Asynchronous : 동시에 발생하지 않는
요청한 결과는 동시에 일어나지 않을 거라는 약속
- 병렬적으로 태스크를 수행한다.
- 현재 작업의 종료여부와 무관하게 다음 작업을 실행한다.
- 그러므로 동기 방식과는 달리 완료 순서가 보장되지 않는다.
- 블로킹이 발생하지 않는다.
서버에게 데이터를 요청한 후 요청에 따른 응답을 계속 기다리지 않아도 되며 다른 외부 활동을 수행 가능하며,
서버에게 다른 요청사항을 보내도 상관없다.
장점
▶️ 요청에 따른 결과가 반환되는 시간 동안 다른 작업 수행 가능
단점
▶️ 동기식보다 설계가 복잡
'CS' 카테고리의 다른 글
[네트워크] TCP/IP 프로토콜 (0) | 2023.01.03 |
---|---|
[네트워크] 라우터 Router (feat. 스위치) (0) | 2023.01.01 |
[네트워크] OSI 7 계층 (2) | 2022.12.30 |
[네트워크] 프로토콜 개념 (0) | 2022.12.29 |
MSA(Micro Service Architecture) 마이크로 서비스 아키텍처 개념 (1) | 2022.12.29 |