Node.js 인터뷰 질문 3

질문: Node.js의 이벤트 기반 프로그래밍을 설명해주세요.

답변:

이벤트 기반 프로그래밍은 Node.js의 핵심 개념으로, 애플리케이션의 흐름이 이벤트에 의해 결정되는 프로그래밍 패러다임입니다.

주요 개념

  1. 이벤트 이미터(Event Emitters): Node.js에서 이벤트를 생성하고 처리하는 기본 메커니즘입니다.
const EventEmitter = require("events");
const myEmitter = new EventEmitter();

// 이벤트 리스너 등록
myEmitter.on("event", (data) => {
  console.log("이벤트 발생:", data);
});

// 이벤트 발생
myEmitter.emit("event", "이벤트 데이터");
  1. 논 블로킹 I/O: I/O 작업이 완료되면 콜백 함수를 호출하는 방식으로 작동합니다.
const fs = require("fs");

fs.readFile("file.txt", (err, data) => {
  if (err) throw err;
  console.log(data);
});
console.log("파일 읽기 요청이 되었으나, 이 코드는 즉시 실행됩니다.");
  1. 이벤트 루프: 이벤트를 감지하고 처리하는 단일 스레드 루프로, Node.js의 비동기 처리 메커니즘의 핵심입니다.

이벤트 기반 프로그래밍의 장점

  • 효율성: I/O 작업 중에도 다른 작업을 처리할 수 있어 리소스를 효율적으로 사용합니다.
  • 확장성: 단일 스레드로 다수의 연결을 처리할 수 있어 높은 확장성을 제공합니다.
  • 실시간 애플리케이션: 이벤트 중심 아키텍처는 실시간 애플리케이션(채팅, 게임 등)에 이상적입니다.

이벤트 기반 프로그래밍의 주의점

  • 콜백 헬(Callback Hell): 중첩된 콜백 함수로 인해 코드 가독성이 저하될 수 있습니다.
  • 에러 처리: 비동기 코드에서 에러 처리를 신중하게 구현해야 합니다.
  • 복잡성: 대규모 애플리케이션에서는 이벤트 기반 아키텍처를 관리하기 위한 추가적인 추상화가 필요할 수 있습니다.

현대 Node.js 개발에서는 콜백 대신 Promise나 async/await를 사용하여 이벤트 기반 프로그래밍의 단점을 보완하고 있습니다.

results matching ""

    No results matching ""