PWA(Progressive Web Application): 프로그레시브 웹 앱
웹 앱: 뛰어난 접근성이라고 볼 수 있다. 앱을 설치하는 것보다 웹사이트에 방문하는 것이 훨씬 쉽고 빠르며, 브라우저가 설치된 어떠한 장치에서도 접근가능하며, 새로운 컨텐츠를 빠르게 배포할 수 있고, 링크로 손쉽게 공유
네이티브 앱: 운영체제와 보다 잘 통합되므로 더 부드러운 사용자 경험을 제공한다는 장점
PWA는 이러한 장점들을 모두 통합하여 진보된 애플리케이션을 제공하려는 시도
IOS에서 웹 내 알림이 불가능 했으나,
2023년 4월 7일 출시한 IOS 16.4 버전부터는 웹 푸쉬 알림 기능 추가
PWA 적용으로 얻은 효과에 대한 연구에 의하면, 대부분 공통적으로 페이지 뷰의 증가, 앱 사용자와 비교하여 이탈률 감소, 재방문 증가, 상호작용률 증가, 로딩 시간 감소와 관련하여 기업에 매우 긍정적인 수치가 좋아졌다고 함
서비스워커를 사용하여 오프라인이나 느린 네트워크에서 작동하도록 한다.
서비스워커는 브라우저가 백그라운드에서 실행하는 스크립트이며 웹 페이지와는 별개로 작동된다.
스크립트이긴 한데 웹 페이지와 직접적으로 상호작용할 수 없다.
기존에는 스크립트를 작성하고 DOM 조작, 데이터 요청 등을 통해 웹 페이지를 제어/상호작용했지만
서비스워커는 그렇지 않다.
서비스워커는 웹 푸시(알림), 백그라운드 동기화, 캐싱 등의 기술적 기반을 제공한다.
기본적으로 오프라인 상태로 웹 브라우저를 통해 URL로 접속을 하면 네트워크가 없어서 접속할 수 없지만,
오프라인 환경에서 접속할 수 있는 이유는 바로 서비스워커의 캐싱 덕분이다.
manifest.json은 설치할 때 아이콘은 무얼 사용하고 아이콘을 눌렀을때 접속할 페이지는 무엇인지, 배경색은 무슨색으로 할 것인지 등에 대한 설정 파일
Service Workers는 PWA의 핵심으로 캐싱은 어떻게 할 것인지 요청시 캐시를 먼저 보여줄지 웹서버를 통해서 먼저 보여줄지, push 등등에 대한 설정
네이티브 앱에서 느낄 수 있는 각 운영체제 고유의 UI와 사용자 경험을 제공할 수 없음
게임과 같은 고사양 앱 개발 불가능
앱은 플레이스토어/앱스토어 등에서 설치하는 인식이 뚜렷해 PWA 설치
안내를 사용자에게 별도로 제공해야하며, 거부감이 들 수 있음