검색
색인
서비스 워커, Service worker
웹 브라우저가 실행하지 않는 상태에서도 브라우저의 고유 기능을 백그라운드로 실행할 수 있는 스크립트.
기존 웹 스크립트(자바스크립트)는 브라우저 사용자 인터페이스(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