PostCover

꼭 PWA 여야 했을까

PWA 도입 후기 - 빠른 구현과 한계점, 그리고 다음 선택지

모바일 웹 환경을 타겟으로 한 서비스를 개발하면서, 이 서비스를 다운로드해 사용할 수 있는 형태로 제공하고 싶었습니다. 이를 실현하기 위해 다양한 크로스플랫폼 두고들을 고려했지만, 최종적으로 **PWA(Progress Web App)**를 선택하게 되었습니다. 이번 글에서는 PWA를 도입한 이유, 실제 경험, 그리고 한계와 개선 방향에 대해 이야기하려고 합니다.

PWA를 사용했던 가장 큰 이유

  1. 앱 설치 없이 서비스 제공 가능

  2. 빠른 구현과 비용 절감

  3. 다양한 플랫폼에서의 호환성

PWA는 브라우저를 통해 실행되며, 네이티브 앱처럼 기기에 설치할 수 있는 기능을 제공합니다. 이 점에서 사용자는 별도의 앱 스토어를 방문하지 않고도 서비스를 사용할 수 있습니다. 이를 통해 사용자 접근성을 높이고 초기 진입 장볍을 낮출 수 있다는 점이 매력적이었습니다.

또한, Expo, React Native, Flutter와 같은 크로스 플랫폼 도구들도 고려했지만, 상대저긍로 더 많은 러닝 커브를 불러올 것이라 생각했습니다. PWA의 경우 기존 웹에 추가적인 설정으로 앱과 유사한 상요자 경험을 제공할 수 있다는 점이 장점이었습니다.

그리고 PWA는 하나의 코드베이스로 다양한 디바이스와 OS에서 동작한다는 장점이 존재했습니다.

실제로 사용해봤을 때

PWA를 통해 서비스를 모바일 환경에서 제공할 수 있도록 설정했습니다. 특히 서비스 워크를 사용해 오프라인 환경에서도 일부 데이터를 캐싱하고, 네이티브 앱처럼 홈 화면에 아이콘을 추가해 사용할 수 있도록 지원했습니다. 초기 설정과 구현은 예상보다 간단했으며, 모바일 웹 브라우저에서 앱 설치 배너를 노출해 사용자가 서비스를 쉽게 설치할 수 있도록 안내했습니다.

Web Manifest의 경우에도 간단하게 아이콘, 앱 이름, 테마 등을 정의해 설치 후 네이티브 앱과 유사한 형태로 보일 수 있었습니다.

{
  "name": "Cafevery",
  "short_name": "Cafevery",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#f8f0e5",
  "theme_color": "#f8f0e5",
  "description": "Cafe Every",
  "categories": ["food", "drink", "lifestyle"],
  "icons": [
    {
      "src": "app-icon/icon-48x48.png",
      "sizes": "48x48",
      "type": "image/png",
      "purpose": "maskable"
    }
  ]
}

PWA를 사용하며 불편했던 것들

PWA를 사용하며 몇 가지 한계를 느꼈습니다. 특히, PWA의 주요 기능을 제대로 활요하지 못했다는 점이 가장 큰 아쉬움으로 남았습니다.

  1. 제한적인 네이티브 기능 PWA는 GPS 등 일부 네이티브 기능을 지원하지만, 크로스플랫폼과 같은 도구에 비해 지원범위가 제한적입니다. 이로 인해 서비스의 확장성에 제약이 있었습니다.

  2. 플랫폼별 지원차이 iOS와 Android에서 PWA의 지원 수준이 다릅니다. 특히 iOS에서 PWA 설치 배너가 자동으로 노출되지 않아 사용자가 설치 방법을 알아야 한다는 진입 장벽이 있었습니다. 이러한 점에서 사용자 경험이 떨어졌습니다.

  3. 제한된 사용자 경험 PWA는 기본적으로 브라우저를 기반으로 동작하기 때문에, 완전한 네이티브 앱처럼 매끄러운 사용자 경험을 제공하기에는 한계가 있었습니다. 특히, PWA를 통해 앱을 다운로드 형태로 제공하려는 목표는 달성했지만, 이 방식이 사용자에게 최적의 경험을 제공하지는 못했습니다.

앞으로는?

PWA를 사용해 서비스를 제공하는 방식은 초기 개발 속도와 비용 측면에서는 분명히 장점이 있었습니다. 하지만, 사용자 경험과 기능적 제약을 고려할 때 다음번 프로젝트에서는 Expo나 React Native와 같은 도구를 사용해 웹뷰를 기반으로 앱을 제공하는 방식을 고려할 것 같습니다.

  1. 더 강력한 네이티브 기능 지원 Expo와 같은 크로스플랫폼 도구는 네이티브 기능을 더 완벽히 지원하며, PWA로는 구현하기 어려운 기능도 쉽게 구현할 수 있습니다.

  2. 일관된 사용자 경험 제공 iOS와 Android 모두에서 일관된 설치 및 실행 경험을 제공할 수 있으며, 앱 스토어 배포를 통해 더 많은 사용자에게 접근할 수 있습니다.

  3. 유지 보수의 용이성 Expo의 웹뷰는 기존의 웹 코드를 재사용하면서 네이티브 앱의 장점을 활용할 수 있어 유지 보수가 더 쉽습니다.

PWA는 웹 기반 프로젝트를 빠르게 모바일 환경에서 사용할 수 있도록 지원하는 훌륭한 도구입니다. 특히, 설치 없이 앱과 유사한 경험을 제공할 수 있다는 점에서 유용했습니다. 하지만, 이번 경험을 통해 PWA가 모든 요구사항을 충족하지는 못한다는 점을 깨달았습니다.

다음번에는 Expo와 같은 도구를 사용해 웹뷰 기반의 네이티브 앱으로 접근해보는 것이 더 나은 선택이 될 것 같습니다. 이를 통해 더 매끄러운 사용자 경험과 강력한 네이티브 기능 지원을 구현할 수 있을 것입니다.