PWA
기본 정보
- 명칭: PWA
- 영문명: Progressive Web App
- 한글명: 프로그레시브 웹 앱
- 분류: 웹 애플리케이션 기술
- 주요 용도: 웹사이트를 앱처럼 설치 및 실행
- 관련 주제: #PWA #웹앱 #모바일 #ServiceWorker #프론트엔드
개요
PWA(Progressive Web App)는 웹 기술(HTML, CSS, JavaScript)로 개발한 웹사이트를 네이티브 앱처럼 사용할 수 있도록 만든 기술이다.
사용자는 앱스토어를 거치지 않고 웹사이트를 홈 화면에 설치할 수 있으며, 오프라인 캐시, 푸시 알림, 전체 화면 실행 등 앱과 유사한 경험을 제공한다.
특히 기업 홈페이지, 쇼핑몰, 커뮤니티, ERP, SaaS 서비스에서 모바일 접근성을 높이기 위해 많이 활용된다.
PWA 구조
사용자
↓
브라우저
↓
PWA
├── HTML
├── CSS
├── JavaScript
├── Manifest
└── Service Worker
↓
REST API
↓
Server
주요 특징
- 설치 가능
- 오프라인 지원
- 빠른 로딩
- 앱과 유사한 UI
- 푸시 알림 지원
- 홈 화면 추가 가능
- 자동 업데이트
동작 과정
웹사이트 접속
↓
Manifest 다운로드
↓
Service Worker 등록
↓
설치 가능
↓
홈 화면 추가
↓
앱처럼 실행
Manifest
PWA의 앱 정보를 정의하는 파일이다.
{
"name": "My App",
"short_name": "App",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#2196f3"
}
Service Worker
브라우저와 서버 사이에서 동작하는 스크립트이다.
주요 역할
- 캐시 관리
- 오프라인 지원
- 백그라운드 동기화
- 푸시 알림
Service Worker 등록
navigator.serviceWorker
.register(
"/service-worker.js"
);
캐시 구조
브라우저
↓
Service Worker
↓
Cache
↓
Network
↓
Server
네트워크가 없어도 캐시된 리소스를 사용할 수 있다.
설치 조건
일반적으로 다음 조건을 충족해야 한다.
- HTTPS 사용
- Manifest 파일 존재
- Service Worker 등록
- 적절한 아이콘 제공
Push Notification
Service Worker를 이용하여 푸시 알림을 보낼 수 있다.
활용 사례
- 주문 알림
- 채팅 알림
- 이벤트 알림
- 공지사항
오프라인 지원
인터넷이 끊겨도 캐시된 페이지를 사용할 수 있다.
예시
- 뉴스 기사
- 메모 앱
- ERP 조회 화면
- 쇼핑몰 상품 목록
PWA와 네이티브 앱 비교
| PWA | 네이티브 앱 |
|---|---|
| 브라우저 기반 | OS 전용 |
| 설치 용량 작음 | 용량 큼 |
| 앱스토어 등록 불필요 | 앱스토어 등록 필요 |
| 업데이트 자동 | 사용자 업데이트 필요 |
| 개발 비용 낮음 | 플랫폼별 개발 필요 |
| 일부 OS 기능 제한 | OS 기능 모두 활용 가능 |
PWA와 웹사이트 비교
| 일반 웹 | PWA |
|---|---|
| 설치 불가 | 설치 가능 |
| 오프라인 미지원 | 오프라인 지원 |
| 푸시 제한 | 푸시 지원 가능 |
| 브라우저 UI 표시 | 앱처럼 실행 가능 |
대표 활용 분야
- 쇼핑몰
- 커뮤니티
- ERP
- SaaS
- 메모 앱
- 뉴스 서비스
- 프로젝트 관리
- 예약 시스템
대표 기술
장점
- 앱 설치 없이 사용 가능
- 앱처럼 실행 가능
- 개발 비용 절감
- 유지보수 용이
- 빠른 로딩
- SEO 활용 가능
단점
- 일부 운영체제 기능 제한
- 플랫폼별 지원 범위 차이
- 브라우저 정책 영향
- 고성능 그래픽 처리에는 한계
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- HTTPS 필수 적용
- Service Worker 버전 관리
- Cache First 전략과 Network First 전략 적절히 사용
- Manifest 아이콘 다양하게 제공
- Lighthouse로 PWA 점수 확인
- 오프라인 페이지 제공
- 푸시 알림 권한 최소 요청
- IndexedDB 활용
- 캐시 자동 갱신 구현
- 앱 설치 유도 UI 제공
PWA와 함께 사용하는 기술
대표 개발 도구
- Visual Studio Code
- Chrome DevTools
- Lighthouse
- Workbox
- Vite
- npm
관련 문서
출처
- web.dev Progressive Web Apps
- MDN Web Docs - Progressive Web Apps
- Google Developers PWA Guide