Web Worker는 어떤 문제를 해결하나요?
답변 포인트
메인 스레드 블로킹 완화를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
Web Worker는 무거운 계산을 메인 UI 스레드 밖에서 실행해 화면 멈춤을 줄입니다. DOM에는 직접 접근할 수 없고 postMessage로 데이터를 주고받습니다.
Web Worker는 무거운 계산을 메인 UI 스레드 밖에서 실행해 화면 멈춤을 줄입니다. DOM에는 직접 접근할 수 없고 postMessage로 데이터를 주고받습니다.
핵심 개념
핵심 기준은 메인 스레드 블로킹 완화입니다.
메인 스레드는 JavaScript 실행, 렌더링, 사용자 입력 처리를 함께 담당합니다. 큰 계산이나 대용량 파싱이 오래 실행되면 클릭과 스크롤이 끊깁니다. Web Worker는 별도 스레드에서 작업을 수행해 UI 응답성을 지키지만 DOM 접근은 불가능하므로 메시지로 통신해야 합니다.
동작 흐름
- 브라우저의 어느 단계나 API가 관여하는지 확인합니다.
- 사용자 경험, 보안, 접근성에 미치는 영향을 함께 봅니다.
- DevTools나 실제 지표로 추측을 검증합니다.
- 적용 후 캐시, 호환성, 예외 상황을 점검합니다.
실제 예시
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로 데이터를 주고받습니다. 개념의 정의뿐 아니라 적용 조건과 실패했을 때의 증상까지 함께 이해하는 것이 중요합니다.