Node.js는 비동기 I/O 방식으로 작동한다. 비동기는 뭐고 I/O는 대체 뭘까..
I/O는 입력(Input) / 출력(Output)을 뜻한다.
I/O의 구성 요소
- 입력 (Input):
- 프로그램이 외부에서 데이터를 받는 과정
- 예시: 키보드 입력, 마우스 클릭, 파일 읽기, 네트워크 요청 받기 등.
- 출력 (Output):
- 프로그램이 외부로 데이터를 내보내는 과정
- 예시: 화면에 텍스트 출력, 파일 저장, 네트워크 응답 보내기 등.
I/O의 종류
- 파일 시스템 I/O: 파일을 읽거나 쓰는 작업 (예: 파일에서 데이터를 읽기(입력), 데이터를 파일에 저장하기(출력)).
- 네트워크 I/O: 네트워크를 통해 데이터를 보내거나 받는 작업 (예: 웹 서버와 클라이언트 간의 HTTP 요청과 응답).
- 디바이스 I/O: 하드웨어 장치와의 데이터 교환 (예: 프린터에 데이터를 보내기, 마우스나 키보드에서 입력 받기).
동기 I/O와 비동기 I/O의 차이
동기 I/O (Synchronous I/O)
- 작업이 완료될 때까지 기다리는 방식.
- 요청을 보내고 응답을 받을 때까지 실행 흐름이 멈춘다.
- 다음 작업은 현재 작업이 완료된 후에만 시작된다. -> 한 번에 하나의 요청만 처리할 수 있다.
비동기 I/O (Asynchronous I/O)
- 작업을 요청한 후, 작업이 완료될 때까지 기다리지 않고 다음 작업을 바로 수행.
- 작업이 완료되면 콜백 함수나 Promise를 통해 결과를 전달받음.
- 프로그램이 차단되지 않으므로 동시에 여러 작업을 처리할 수 있음.
- 서버 확장성에 유리하며 non-blocking방식으로 작업 처리
비동기 I/O의 작동 방식
- 작업 요청:
- I/O 작업(파일 읽기/쓰기, 네트워크 요청 등)을 요청
- 작업 처리:
- 요청된 작업은 OS(운영체제)에 의해 처리
- 작업 완료:
- 작업이 완료되면 콜백 함수 또는 Promise를 통해 결과가 전달된다.
'IT 알쓸신잡' 카테고리의 다른 글
GitHub 원격 저장소와 연결하고 변경 사항 푸시하기 (0) | 2025.01.24 |
---|---|
프레임워크와 라이브러리의 차이점 (0) | 2025.01.01 |
서버와 리소스 접근의 기초: IP, DNS, URL (0) | 2024.12.29 |
SEO가 무엇인가? (7) | 2024.12.28 |
view 엔진이 무엇인가 (1) | 2024.12.27 |