🪩/기타

동기(Sync), 비동기(Async)

S0 2024. 1. 23. 14:00

내일배움캠프: Node.js_4기

20일차 TIL

 

 

프로젝트를 진행하다보니 동기와 비동기에 대해 다시한번 기억하고 넘어가야 할것같아서 내 언어로 정리해보기로 했다.

다음 TIL은 Promise 와 async, await 까지 정리해보고 싶다.


동기 sync

답변(=결과)을 기다리는 것

답변이 올때까지 다음 일은 하지 않음

답변을 기다렸다가 일을 수행

(답변이 올때까지 기다리는 상태 = blocking)

 

배민 대면배달

내가 떠올린 예시는 배달앱의 대면 배달 서비스였다.

[직접 받을게요] 옵션을 선택하면 내가 문 밖으로 나갈 때까지 배달 기사는 다음 배달을 갈 수 없다.

 

결과를 기다려야만 다음 단계로 갈 수 있기 때문에 자원을 비효율적으로 사용하는 대신 과정이 단순함

프로그래밍에서는 보통 어떤 일을 수행한 결과를 이용해서 다음 일을 해야 할 때 사용

 

(예시로 들었던 배민 주문 과정은 전체적인 관점에서 봤을 때 이러한 동기식으로 진행해야함. 결제 과정에서의 잔액 부족, 가게의 재료소진 등의 문제가 있을 수 있기 때문)

 

 

비동기 async

답변(=결과)을 기다리지 않는 것

답변을 기다리지 않고 일을 수행

(답변이 올때까지 기다리지 않는 상태 = non-blocking)

 

이번 예시는 배달앱의 비대면 배달 서비스이다.

[벨x 노크x] 옵션을 선택하면 내가 직접 받으러 가지 않아도 배달 기사는 나를 기다리지 않고 바로 다음 배달을 갈 수 있다.

 

이러한 방법은 효율적인 것 같으나 결과를 확인할 수 없다는 위험성이 있다.

배달 완료 문자

그래서 배달 기사는 나에게 배달완료 문자를 보내는 추가 과정을 거친다.

 

비동기 과정은 이렇게 자원을 효율적으로 사용하는 대신 업무가 복잡해질 수 있음

 

 


'🪩 > 기타' 카테고리의 다른 글

[SQL] 제약 조건 연습 문제  (0) 2024.01.29
관계형, 비관계형 데이터베이스  (1) 2024.01.28
자료구조 스택, 큐  (1) 2024.01.08
SQL WHERE문 실습  (0) 2023.12.28
Firebase 데이터 저장, GitHub 배포, SQL 기초  (1) 2023.12.27