[기술]동기와 비동기

sihwan_e·2020년 7월 1일
3

기술면접

목록 보기
5/7

데이터를 받는 방식에 따라 동기와 비동기로 나뉜다.

SynchronousProcessing Model

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

동기는 요청과 그 결과가 동시에 일어난다. 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다. 즉 직렬적으로 업무(task)를 수행한다.
순차적으로 실행되며 어떤 작업이 수행 중이면 다음 작업은 대기하게 된다.
1.요청과 결과가 한자리에서 동시에 일어난다.
2.a노트돠 b노드 사이의 작업 처리 단위(tranaction)을 동시에 맞추어야한다.
3.같은 일을 동시에 진행한다.

ex))
서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때, 서버에 데이터를 요청하고 데이터 가 응답 될때까지 뒷 순서의 task들은 작업이 중단된다(blocking).

AsynchronousProcessing Model

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

비동기는 Asynchronous라고도 불리고 Non-Blocking Processing Model이라고도 한다.
비동기는 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다.
앞선 task가 종료 되지 않은 상태여도 대기하지 않고 다음 task를 실행한다. 즉 병력적으로 업무(task)를 수행한다.
1.요청한 그 자리에서 결과가 주어지지 않는다.
2.노드 사이의 작업 처리 단위를 동시에 맞춰주지 않아도 된다.
3.서로의 목적이 다르기 때문에 둘의 작업 처리 시간은 일치하지 않아도 된다.

ex))
서버에서 데이터를 가져와 화면에 표시하는 업무를 수행할때, 서버에 데이터를 요청하고 서버로부 터 응답될 때까지 기다리지 않고 즉시 다음 업무를 수행한다. 이후 서버에서 데이터가 응답이 되 면 이벤트가 발생하고 이벤트 핸들러가 데이터를 가지고 수행할 업무를 계속 수행한다.

동기와 비동기의 장단점

동기
설계가 매우 간단하고 직관적이다.
but
결과가 주어질 때가지 아무것도 못하고 대기해야 한다.

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

정리

동기와 비동기는 어떤 작업 혹은 그와 연관된 작업을 처리하고자 하는 시각의 차이이다.
동기는 동시에 일어나는것, 비동기는 동시에 일어나지 않는것.
비동기는 A코드의 완료시점과 상관없이 B코드가 실행된다는것.
그냥 이렇게만보면 비동기가 좋아보이지만 대신 설계가 동기보다 복잡하다는점.

profile
Sometimes you gotta run before you can walk.

0개의 댓글