웹 브라우저가 실행하지 않는 상태에서도 브라우저의 고유 기능을 백그라운드로 실행할 수 있는 스크립트.
기존 웹 스크립트(자바스크립트)는 브라우저 사용자 인터페이스(UI)와 상호 작용을 하면서 실행하나, 서비스 워커(Service worker) 스크립트는 브라우저 UI 또는 웹 페이지와 별개로 백그라운드에서 실행한다. 인터넷 연결이 되지 않는 오프라인 환경에서도 웹 메일과 같은 웹 애플리케이션을 사용할 수 있고 브라우저가 종료된 상태에서도 푸시 알림 등을 지원한다. 크롬(Chrome), 사파리(Safari),
파이어폭스(
Firefox), 에지 브라우저(
Edge browser) 등 대부분의 주요
웹 브라우저에서 지원한다.
월드와이드웹 컨소시엄(
W3C)은 2014년 서비스 워커(Service worker) 서비스 표준 개발을 시작하였다.
웹의 가장 큰 단점은 인터넷 연결이 끊어진 오프라인 상태에서 웹 페이지를 볼 수 없다는 것이다. 예를 들어, 구글의 지메일(Gmail)과 같은
웹 메일은
오프라인에서 이용할 수 없다. 이러한
웹 애플리케이션의 문제를 해결하기 위해서
HTML5 표준의 일부로
오프라인 환경을 지원하는 애플리케이션 캐시(
Application Cache, AppCache) 표준이 개발되었다. 그러나 AppCache 표준이 여러 웹 페이지로 구성된
웹사이트 적용에 문제가 발생하여 서비스 워커(service worker) 기술이 대안으로 고안되었다.
서비스 워커는
웹 애플리케이션 또는
웹 서비스를 구성하는
HTML,
CSS,
자바스크립트, 이미지, 동영상 등 다양한 리소스들에 대해서 적합한 캐시(cache) 제어 기능을 지원하여 네이티브 앱과 같이
오프라인에서도 이용할 수 있도록 한다. 즉,
웹 애플리케이션의 리소스 중 갱신되지 않는 리소스를 로컬에 처음 한번만 저장(캐싱)하고, 이후
재실행되면 로컬에 저장된 리소스를 사용하게 하여
오프라인 이용을 제공한다. 또한, 메신저 앱을 실행하지 않은 상황에서 새로운 메시지를 받을 수 있도록 지원하는 앱의 푸시 알림 같은 기능을 웹에서도 가능하게 한다. 즉 브라우저가 실행되지 않은 상황에서도 서비스 워커 코드가 백그라운드에서 실행되면서 푸시 알림이 오면 이를 처리하여 받은 메시지를
팝업 창으로 보여줄 수 있다. 즉, 서비스 워커는 백그라운드에서
자바스크립트 코드를 실행시킬 수 있는 범용적인 기능으로,
오프라인 지원, 푸시 알림 지원뿐 아니라 가상의 영역을 정의하고 그 지역을 넘어갔을 때 이를 인식하여 처리하는
지오펜싱(
geofencing) 같은 다양한 기능 구현에 응용될 수 있다.
※
지오펜싱(
geofencing): 특정 영역에 가상 울타리(geo-fence)를 치도록 지원하는
API