모바일 웹 환경을 타겟으로 한 서비스를 개발하면서, 이 서비스를 다운로드해 사용할 수 있는 형태로 제공하고 싶었습니다. 이를 실현하기 위해 다양한 크로스플랫폼 두고들을 고려했지만, 최종적으로 **PWA(Progress Web App)**를 선택하게 되었습니다. 이번 글에서는 PWA를 도입한 이유, 실제 경험, 그리고 한계와 개선 방향에 대해 이야기하려고 합니다.
PWA를 사용했던 가장 큰 이유
-
앱 설치 없이 서비스 제공 가능
-
빠른 구현과 비용 절감
-
다양한 플랫폼에서의 호환성
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의 주요 기능을 제대로 활요하지 못했다는 점이 가장 큰 아쉬움으로 남았습니다.
-
제한적인 네이티브 기능 PWA는 GPS 등 일부 네이티브 기능을 지원하지만, 크로스플랫폼과 같은 도구에 비해 지원범위가 제한적입니다. 이로 인해 서비스의 확장성에 제약이 있었습니다.
-
플랫폼별 지원차이 iOS와 Android에서 PWA의 지원 수준이 다릅니다. 특히 iOS에서 PWA 설치 배너가 자동으로 노출되지 않아 사용자가 설치 방법을 알아야 한다는 진입 장벽이 있었습니다. 이러한 점에서 사용자 경험이 떨어졌습니다.
-
제한된 사용자 경험 PWA는 기본적으로 브라우저를 기반으로 동작하기 때문에, 완전한 네이티브 앱처럼 매끄러운 사용자 경험을 제공하기에는 한계가 있었습니다. 특히, PWA를 통해 앱을 다운로드 형태로 제공하려는 목표는 달성했지만, 이 방식이 사용자에게 최적의 경험을 제공하지는 못했습니다.
앞으로는?
PWA를 사용해 서비스를 제공하는 방식은 초기 개발 속도와 비용 측면에서는 분명히 장점이 있었습니다. 하지만, 사용자 경험과 기능적 제약을 고려할 때 다음번 프로젝트에서는 Expo나 React Native와 같은 도구를 사용해 웹뷰를 기반으로 앱을 제공하는 방식을 고려할 것 같습니다.
-
더 강력한 네이티브 기능 지원 Expo와 같은 크로스플랫폼 도구는 네이티브 기능을 더 완벽히 지원하며, PWA로는 구현하기 어려운 기능도 쉽게 구현할 수 있습니다.
-
일관된 사용자 경험 제공 iOS와 Android 모두에서 일관된 설치 및 실행 경험을 제공할 수 있으며, 앱 스토어 배포를 통해 더 많은 사용자에게 접근할 수 있습니다.
-
유지 보수의 용이성 Expo의 웹뷰는 기존의 웹 코드를 재사용하면서 네이티브 앱의 장점을 활용할 수 있어 유지 보수가 더 쉽습니다.
PWA는 웹 기반 프로젝트를 빠르게 모바일 환경에서 사용할 수 있도록 지원하는 훌륭한 도구입니다. 특히, 설치 없이 앱과 유사한 경험을 제공할 수 있다는 점에서 유용했습니다. 하지만, 이번 경험을 통해 PWA가 모든 요구사항을 충족하지는 못한다는 점을 깨달았습니다.
다음번에는 Expo와 같은 도구를 사용해 웹뷰 기반의 네이티브 앱으로 접근해보는 것이 더 나은 선택이 될 것 같습니다. 이를 통해 더 매끄러운 사용자 경험과 강력한 네이티브 기능 지원을 구현할 수 있을 것입니다.