전체 목록
브라우저Medium#262

Web Worker는 어떤 문제를 해결하나요?

#브라우저#WebWorker#성능#스레드

답변 포인트

메인 스레드 블로킹 완화를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

Web Worker는 무거운 계산을 메인 UI 스레드 밖에서 실행해 화면 멈춤을 줄입니다. DOM에는 직접 접근할 수 없고 postMessage로 데이터를 주고받습니다.

Web Worker는 무거운 계산을 메인 UI 스레드 밖에서 실행해 화면 멈춤을 줄입니다. DOM에는 직접 접근할 수 없고 postMessage로 데이터를 주고받습니다.

핵심 개념

핵심 기준은 메인 스레드 블로킹 완화입니다.

메인 스레드는 JavaScript 실행, 렌더링, 사용자 입력 처리를 함께 담당합니다. 큰 계산이나 대용량 파싱이 오래 실행되면 클릭과 스크롤이 끊깁니다. Web Worker는 별도 스레드에서 작업을 수행해 UI 응답성을 지키지만 DOM 접근은 불가능하므로 메시지로 통신해야 합니다.

동작 흐름

  1. 브라우저의 어느 단계나 API가 관여하는지 확인합니다.
  2. 사용자 경험, 보안, 접근성에 미치는 영향을 함께 봅니다.
  3. DevTools나 실제 지표로 추측을 검증합니다.
  4. 적용 후 캐시, 호환성, 예외 상황을 점검합니다.

실제 예시

JavaScript
const worker = new Worker('/worker.js');
worker.postMessage({ numbers: [1, 2, 3] });
worker.onmessage = (event) => console.log(event.data);

// worker.js
self.onmessage = (event) => self.postMessage(event.data.numbers.reduce((a, b) => a + b));

예시는 핵심 흐름을 단순화한 것입니다. 실무에서는 팀의 배포 방식, 데이터 크기, 장애 영향도, 유지보수 비용까지 함께 고려해야 합니다.

실무에서 주의할 점

  • 브라우저 구현 차이와 모바일 환경을 함께 확인해야 합니다.
  • 성능 문제는 JavaScript만 보지 말고 네트워크와 렌더링 상태를 같이 봐야 합니다.
  • 보안·접근성 기능은 편의성보다 안전한 기본값을 우선해야 합니다.

함께 연결해서 보면 좋은 키워드

WebWorker, Thread, postMessage, Performance

정리

한 줄로 정리하면, Web Worker는 무거운 계산을 메인 UI 스레드 밖에서 실행해 화면 멈춤을 줄입니다. DOM에는 직접 접근할 수 없고 postMessage로 데이터를 주고받습니다. 개념의 정의뿐 아니라 적용 조건과 실패했을 때의 증상까지 함께 이해하는 것이 중요합니다.

관련 질문

같은 카테고리/태그 기준