공부

동기화 비동기화

으뜸정신 2024. 3. 18. 17:12

데이터를 받는 방식인 동기화와 비동기화란 무엇일까

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

  • 결과가 동시에 일어난다는 약속으로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.
  • 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다.(한 개의 데이터 요청에 대한 서버의 응답이 이루어질 때까지 계속 대기)

-> 요청과 결과가 한 자리에서 동시에 일어난다.

-> A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다.

설계가 매우 간단하지만 결과가 주어질 때까지 아무것도 못하고 대기해야 하는 단점

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

  • 동시에 일어나지 않는다는 것으로 요청과 결과가 동시에 일어나지 않을 거라는 약속
  • 요청을 보냈을 때 응답 상태와 상관없이 다음 동작을 수행할 수 있다.

요청한 그 자리에서 결과가 주어지지 않음

노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 됨

동기방식보다는 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용 가능

비동기적으로 처리하는 경우

  1. Ajax Web Api 요청 : 서버 쪽에서 데이터를 받아와야 하는 경우
  2. 파일 읽기 : 서버에서 파일을 읽어야 하는 경우
  3. 암호화/복호화 : 바로 처리되지 않고 시간이 어느 정도 걸리는 경우
  4. 작업 예약 : setTimeout을 사용하여 비동기 처리하는 경우