참고/네트워크

👣Synchronous / Asychronous (동기식/비동기식)

dev_jiwon 2022. 12. 13.

Synchronous(동기식) / Asychronous(비동기식)

1. 동기식(synchronous)

🔥 동기식 통신 및 동기식 프로그래밍이란 Synchronous란 뜻대로 동시에 일어난다는 뜻이다. 동시에 일어난다는 것은 Request를 보내게 된다면 얼마나 시간이 걸리든 그 자리에서 Response를 받는다는 말이다. 즉, 두 서버 사이의 Transaction을 맞추겠다는 의미이다.
🔥 Synchronous에서는 Request를 보내면 Response를 기다리기 때문에 Request를 보낸 Thread는 Response가 도착하기 전까지는 아무것도 하지 못하는 Block 상태가 됨을 의미한다.

동기식 요청응답

 

 

2. 비동기식(asychronous)

🔥 비동기식 통신 및 비동기식 프로그래밍이란 Asynchromous란 뜻대로 동시에 수행하지 않는다는 뜻이다. 동기식과는 반대로 Request를 보내더라도 Response를 언제 받아도 상관이 없다는 말이다. 즉, Request를 보내고 Response를 상관하지 않는 상태가 되는 것이다.
🔥 비동기식에서는 동기식과 반대로 Response를 기다리지 않고 있으니 Request를 보낸 Thread는 다른 일을 할 수 있다. Request를 보내고 Response를 기다리지 않고 다른 일을 하는 이러한 상태를 Non Block 상태라고 한다.
🔥 비동기식은 비동식 처리를 요청할 때 할일이 끝난 후 처리결과를 알려주는 콜백이라는 함수를 함께 알려준다. 호출받은 함수는 처리가 끝나면 요청한 함수를 호출하여 처리 결과를 전달하게 된다. 이러한 함수 호출의 흐름은 사용자가 아닌 일을 마친 시스템이 호출하는 형태이기 때문에 콜백이라고 불린다. ** ajax에서는 success, error, complete을 콜백함수라고 할 수 있다.

 

비동기 방식은 DOS 같은 단일 운영체제에서는 불가능하며 windows 같은 multitask 환경에서만 가능하다.

비동기식 요청응답

 

 

 

3. 등기식 통신의 장단점

1) 장점

  • Thread는 Request를 보내고 Response를 받고 Request를 다시 보내는 작업을 수행하기 때문에 요청과 응답값의 순서를 보장하게 된다.
  • 또한 보낸 Request에 대한 처리 결과 값을 보장 받을 수 있다.

2) 단점

  • Response가 지연되게 된다면 Request를 보낸 Thread는 해당 Response를 계속 기다리는 상태가 된다는 단점이 있다.
  • 순차적으로 Response를 받고 Request를 받는 구조로 Response가 계속 지연되게 된다면 뒤에 들어오는 요청들은 Connection 가능한 Thread가 없어 연결을 맺지 못해 성능이 떨어질 수 있다.

 

 

 

4. 비동기식 통신의 장단점

1) 장점

  • Response를 기다리지 않고 Non Block 상태로 계속 자기일을 하는 Async(비동기식) 방식은 Sync(동기식) 방식에 비해 성능이 좋다.
  • 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다.

2) 단점

  • Thread가 Response를 받지 않고 여러가지 요청 보냈을때 뒤에 보낸 요청이 먼저 처리가 되었다면 뒤에 요청값에 대한 응답값이 먼저 올 수도 있다. 즉, 순서를 보장하지 않는다.
  • Response에 대한 처리 결과를 보장받고 처리해야 되는 서비스에는 적합하지 않다.

 

 

 

정리

  • 동기와 비동기는 어떤 작업 혹은 그와 연관된 작업을 처리하고자 하는 목적의 차이이다.
  • 동기는 추구하는 행위와 목적이 동시에 이루어지고, 비동기는 추구하는 행위와 목적이 다를 수도 있고, 동시에 이루어지지도 않는다.

 

블럭과 논블럭의 차이

🔥 블럭과 논블럭은 동기, 비동기와 연결되는 개념이다.

 

🧱 블럭이란?

  • 블럭이란 동기의 개념에서 만들어진 상태로, 브라우저가 실행되는 시간을 10분(요청)이라고 가정했을 시에, 브라우저가 오픈(결과) 되기 전까지 다른 브라우저는 계속 대기해야하는 상태를 블럭 상태라고 부른다.

 

🧩논블럭이란?

  • 논블럭이란 비동기 개념에서 만들어진 상태로 브라우저가 실행되는 시간이 10분(요청)이라고 가정했을 시에, 브라우저가 오픈(결과)되기 전까지 다른 브라우저는 시간을 대기 하지 않고 제약없이 자유롭게 사용할 수 있는 상황을 논블럭 상태라고 부른다.

 

🥕 블럭과 논블럭 정리

🔥 논블럭이란 비동기 개념에서 만들어진 상태
🔥 블럭이란 동기의 개념에서 만들어진 상태

 

 

Reference

https://velog.io/@kw2577/CSNetwork-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0

 

[Network] 동기와 비동기

소프트웨어를 개발할 때 동기 또는 비동기적으로 코드를 작성하는 일은 매우 중요하다. 용도나 방식에 따라서 올바른 방식을 적절히 선택해야하는데 이러한 동기와 비동기에 대해 개념을 정리

velog.io

 

'참고 > 네트워크' 카테고리의 다른 글

🔥 GET / POST  (0) 2022.12.13
👣REST API  (0) 2022.12.13

댓글