[Web] 동기와 비동기

당고짱·2022년 4월 6일
0

Web study

목록 보기
4/11
post-thumbnail

웹 개발을 하면서 동기, 비동기, async, await 등 여러 단어들을 들었지만 동기와 비동기의 개념을 느낌으로만 알고 깊게 알지 못해 글을 쓰게 되었다.


💡 동기(synchronous : 동시에 일어나는)

현재 실행 중인 태스크가 종료될 때까지 다음에 실행될 태스크가 대기하는 방식

동기는 말 그대로 동시에 일어난다는 뜻이다. 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다.

  • 요청과 결과가 한 자리에서 동시에 일어남
  • A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞춤

💡 비동기(Asynchronous : 동시에 일어나지 않는)

현재 실행 중인 태스크가 종료되지 않은 상태라 해도 다음 태스크를 곧바로 실행하는 방식

비동기는 동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라 약속한다.

  • 요청한 그 자리에서 결과가 주어지지 않음
  • 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 됨

🎈 상황에 따른 동기와 비동기의 장단점

동기 방식

  • 장점 : 설계가 매우 간단하고 직관적
  • 단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야 함

비동기 방식

  • 장점 : 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있음 (자원을 효율적으로 사용)
  • 단점 : 동기보다 복잡함

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

🎈 동기 방식의 예

  1. A의 계좌는 10000원을 뺄 생각을 하고 있다.
  2. A의 계좌가 B의 계좌에 10000을 송금한다.
  3. B의 계좌는 10000원을 받았다는 것을 인지하고, A의 계좌에 10000원을 받았다고 전송한다.
  4. A, B 계좌 각각 차감과 증가가 동시에 발생하였다.

위처럼 A의 계좌와 B의 계좌는 서로 요청과 응답을 확인한 후 같은 일을 동시에 진행하였다.

🎈 비동기 방식의 예

  1. 학생은 시험문제를 푼다.
  2. 시험문제를 모두 푼 학생은 선생에게 전송한다.
  3. 선생은 학생의 시험지를 채점한다.
  4. 채점이 다 된 시험지를 선생이 학생에게 전송한다.
  5. 학생은 선생이 전송한 시험지를 받아 결과를 확인한다.

학생과 선생은 시험지라는 연결고리가 있지만 시험지에 행하는 행위(목적)은 서로 다르다.
학생은 시험지를 푸는 역할을 하고 선생은 시험지를 채점하는 역할을 한다.
서로의 행위(목적)이 다르기 때문에 둘의 작업 처리 시간은 일치하지 않고 일치하지 않아도 된다.

🎈 비동기 방식의 예시에 따른 블록과 논블록 차이

  • 블록 상태 : 학생이 시험지를 선생에게 건넨 후 가만히 앉아 채점이 끝나서 시험지를 돌려받기만을 기다리는 상태
  • 논블록 상태 : 학생이 시험지를 건넨 후 선생에게 채점이 완료되었다는 전송을 받기 전까지 다른 일을 하게 되는 상태
profile
초심 잃지 말기 🙂

0개의 댓글