AI 요약
이 글은 async/await 비동기 처리의 동작 원리를 OS 커널 레벨에서부터 이해하기 쉽게 설명한다. 핵심은 단일 스레드가 I/O 대기 시간을 낭비하지 않도록 이벤트 루프와 epoll, 파일 디스크립터(fd)를 활용하는 구조에 있다. DB나 API 요청 시 CPU는 기다리는 동안 다른 작업을 처리할 수 있으며, await는 단순히 ‘완료를 기다리는 문법’일 뿐 실제로는 이벤트 루프가 완료된 fd의 콜백을 실행하는 방식으로 동작한다. Promise는 ‘미래에 결과를 반환할 것’이라는 일종의 교환권이며, async 함수는 이 교환권을 반환하는 함수임을 선언하는 역할을 한다.
핵심 포인트
- 이벤트 루프는 하나의 스레드로 여러 I/O 작업의 ‘대기’를 감시하며 준비된 작업부터 처리
- epoll은 리눅스 커널 기능으로, 수많은 fd 중 데이터가 준비된 것만 알려줘 효율성을 극대화
- await는 Promise(교환권)가 결과로 변환될 때까지 기다리는 문법적 설탕(syntactic sugar)
- async 함수는 자동으로 Promise를 반환하며, 호출 체인 전체에 전염됨
향후 전망
- 비동기 처리에 대한 근본적 이해는 고성능 서버 및 대규모 트래픽 처리 시스템 개발에 필수적
- 이벤트 루프 기반 아키텍처는 Node.js뿐 아니라 다양한 언어와 프레임워크에서 표준 패턴으로 자리잡을 것
출처:SIOS Technology Lab
