내일배움캠프: 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 |