[Web] PWA(Progressive Web App)이란?

해피몬·2024년 6월 2일
post-thumbnail

PWA란? 🤔

PWA (Progressive Web App)는 웹과 네이티브 앱의 장점을 결합한 기술로, 웹 사이트를 앱처럼 사용자에게 제공할 수 있는 방법임. 일반 웹 사이트와 다르게, PWA는 오프라인 지원, 푸시 알림, 홈 화면에 추가 등의 기능을 제공하여 사용자에게 더 나은 경험과 성능을 보장함.

PWA는 네이티브 앱을 다운로드하거나 설치할 필요 없이 웹 브라우저에서 바로 실행되므로, 저장 공간 부담이 없고 접근성이 높아 현대 웹 애플리케이션에서 주목받고 있음.

PWA의 주요 특징 🌟

PWA는 세 가지 핵심 요소로 구성됨: 신뢰성, 속도, 매력적인 사용자 경험. 이를 통해 웹사이트가 네이티브 앱처럼 동작하면서, 웹의 유연성과 접근성을 유지함.

  • 신뢰성 (Reliable): 네트워크 연결이 불안정하거나 오프라인일 때도 콘텐츠가 유지되며, 사용자는 언제든 웹사이트를 사용할 수 있음.
  • 속도 (Fast): 빠른 로딩 속도를 통해 즉각적인 반응을 제공함으로써, 사용자 이탈률을 낮출 수 있음.
  • 매력적인 사용자 경험 (Engaging): 앱처럼 홈 화면에 설치할 수 있고, 푸시 알림을 통해 사용자와 지속적인 상호작용이 가능함.
    이제 PWA의 핵심 기술과 각 기술이 제공하는 장점을 구체적으로 살펴보겠음.

PWA의 핵심 기술 구성 🛠️

PWA는 서비스 워커(Service Worker), 웹 애플리케이션 매니페스트(Web App Manifest), HTTPS 등의 기술을 결합하여 구현됨.

서비스 워커 (Service Worker)

서비스 워커는 브라우저와 웹 서버 사이에서 백그라운드에서 동작하는 스크립트로, 네트워크 요청을 제어하고, 오프라인 환경에서의 동작을 가능하게 함.

  • 캐싱: 페이지 로드 시 필요한 리소스를 미리 캐싱하여, 네트워크 상태에 관계없이 빠르게 콘텐츠를 제공할 수 있음.
  • 오프라인 지원: 서비스 워커가 설치된 이후에는 네트워크 연결이 없어도 캐싱된 콘텐츠로 웹사이트가 정상적으로 동작함.
  • 푸시 알림: 백그라운드에서 푸시 알림을 받거나 처리할 수 있어 사용자와 상호작용을 유지함.
// service-worker.js
self.addEventListener('install', (event) => {
  event.waitUntil(
    caches.open('app-cache').then((cache) => {
      return cache.addAll(['/index.html', '/style.css', '/script.js']);
    })
  );
});

self.addEventListener('fetch', (event) => {
  event.respondWith(
    caches.match(event.request).then((response) => {
      return response || fetch(event.request);
    })
  );
});

웹 애플리케이션 매니페스트 (Web App Manifest)

매니페스트 파일은 웹사이트가 앱처럼 설치될 수 있도록 돕는 JSON 파일로, 앱 이름, 아이콘, 색상 등을 정의함. 이를 통해 사용자는 웹사이트를 홈 화면에 추가하고, 네이티브 앱처럼 사용할 수 있음.

// manifest.json
{
  "name": "My PWA App",
  "short_name": "PWA App",
  "start_url": "/index.html",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#000000",
  "icons": [
    {
      "src": "icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}

HTTPS (보안 연결)

PWA는 반드시 HTTPS에서 동작해야 함. HTTPS를 통해 보안과 사용자 신뢰성을 확보할 수 있음. 서비스 워커가 네트워크 요청을 가로채고 캐싱을 수행하기 때문에, 보안 연결을 통한 데이터 보호가 필수적임.

PWA의 장점 🌈

PWA는 일반적인 웹 애플리케이션과 비교할 때 다양한 장점이 있음.

1) 설치가 간편하고 저장 공간이 적게 소모됨
PWA는 앱스토어에서 다운로드할 필요가 없으며, 홈 화면에 추가하면 즉시 사용할 수 있음. 네이티브 앱보다 저장 공간을 덜 차지해, 사용자 기기에서의 부담이 적음.

2) 네트워크 상태에 관계없이 동작 가능
PWA는 서비스 워커와 캐싱을 통해 네트워크가 불안정하거나 오프라인 상태에서도 콘텐츠를 제공할 수 있음. 예를 들어, 오프라인 상태에서도 기사나 정보를 읽을 수 있는 뉴스 사이트는 사용자 경험을 크게 향상시킬 수 있음.

3) 빠른 로딩 속도와 높은 성능
PWA는 캐싱을 통해 웹사이트 로딩 속도를 최적화함. 자주 사용하는 리소스를 미리 캐싱하고, 네트워크 요청을 최소화하여 사용자에게 더 빠른 응답성을 제공할 수 있음.

4) 푸시 알림과 홈 화면 설치로 사용자와의 상호작용 강화
PWA는 푸시 알림을 통해 사용자에게 중요한 정보를 실시간으로 전달할 수 있음. 또한, 홈 화면에 앱을 추가하여 쉽게 접근할 수 있어 재방문율을 높일 수 있음.

PWA를 시작하는 방법 🚀

PWA를 구현하려면 기본적으로 서비스 워커와 웹 애플리케이션 매니페스트 파일을 추가하고, HTTPS 환경에서 호스팅해야 함. 다음은 간단한 PWA 시작 방법임.

  • 서비스 워커 등록: service-worker.js 파일을 작성하고 등록.
  • 매니페스트 파일 추가: manifest.json 파일을 작성해 앱 정보 정의.
  • HTTPS 환경에서 테스트: 로컬 서버나 호스팅 서비스를 통해 HTTPS 환경에서 테스트.
profile
슬기로운개발생활🤖

0개의 댓글