PWA는 여기로 연결됩니다. 유튜버에 대한 내용은 PWA(유튜버) 문서 참고하십시오.
[clearfix]
1. 개요
프로그레시브 웹 앱(Progressive Web Apps)은 웹 앱과 네이티브 앱의 장점을 모두 제공하는, 보다 발전된 형태의 웹 애플리케이션을 어떻게 개발할 수 있는가에 대한 논의이자 개발 철학을 말한다.Google I/O 2016에서 처음 소개되었으며 줄여서 PWA라고 부른다.
2. 상세
PWA는 웹 앱과 네이티브 앱의 장점을 모두 제공하는 진보된 형태의 웹 애플리케이션 개발이라고 볼 수 있다.먼저 웹 앱의 장점은 뛰어난 접근성이라고 볼 수 있다. 앱을 설치하는 것보다 웹사이트에 방문하는 것이 훨씬 쉽고 빠르며, 브라우저가 설치된 어떠한 장치에서도 접근가능하며, 새로운 컨텐츠를 빠르게 배포할 수 있고, 링크로 손쉽게 공유할 수도 있다. 모바일 사용자의 월간 앱 다운로드 수를 보여주는 통계를 보면 50% 이상의 사용자는 앱을 전혀 다운로드 하지 않는다.[통계] 모바일 사용자들은 한 달에 평균 100개 이상의 웹사이트를 방문한다고 한다.
반면에, 네이티브 앱은 운영체제와 보다 잘 통합되므로 더 부드러운 사용자 경험을 제공한다는 장점이 있다. 네이티브 앱은 설치할 수 있으므로 오프라인에서 동작하며, 사용자는 홈 화면의 아이콘을 탭하여 브라우저를 사용하는 것보다 더 쉽게 앱에 접근할 수 있다. 이로 인하여, 모바일 환경의 사용자의 87%는 네이티브 앱을 주로 이용한다고 한다.[통계]
PWA는 이러한 장점들을 모두 통합하여 진보된 애플리케이션을 제공하려는 시도이다. PWA에서 논하는 아이디어나 개념들은 새로운 것들이 아니라 오래전부터 다양한 형태로 존재해오던 것들이다. 예를들어 점진적인 향상과 반응형 디자인은 이미 모바일 친화적인 웹사이트를 구축하기 위해 사용해오던 개념이다. 오프라인에서 동작하는 것과 앱을 설치하는 것은 몇 년 전 Firefox OS 생태계에서 이미 가능했었다. 즉, PWA는 완전히 새롭게 등장한 기술이 아니라 웹의 기존 기능을 제거하지 않은 상태로 더욱 발전된 형태의 웹 애플리케이션을 개발하려는 움직임이라 볼 수 있다.
3. PWA의 기능
PWA는 현존하는 다양한 개발패턴, API, 기능들을 통합하여 진보된 형태의 웹 앱을 구축하려는 개발 철학이기 때문에, 보여지는 기술만으로 PWA인지 아닌지 구분하기란 쉽지 않다. 하지만 대체로 다음의 요구 사항을 만족하거나 기능을 제공한다면 PWA라고 볼 수 있다.- 오프라인에서 동작
- 설치가 가능
- 쉬운 동기화
- 푸시 알림, 등.
웹 앱이 PWA로 식별되기 위한 핵심 원칙들을 구체적으로 정리하자면 다음과 같다.
- 검색 가능(Discoverable), 컨텐츠를 검색 엔진을 통해 찾을 수 있어야 한다.
- 설치 가능(Installable), 기기의 홈 화면이나 앱 런처에서 사용할 수 있어야 한다.
- 연결 가능(Linkable), URL을 통해 공유할 수 있어야 한다.
- 네트워크 독립적(Network indenpenent), 오프라인 상태에서 동작하거나 혹은 열악한 네트워크 연결에서도 동작해야 한다.
- 점진적 향상(Progressively enhanced), 최신 브라우저에서는 모든 기능을 사용할 수 있고 구형 브라우저에서는 기본적인 수준으로 사용할 수 있어야 한다.
- 재참여 가능(Re-engageable), 새 컨텐츠가 사용 가능할 때마다 알림을 보낼 수 있어야 한다.[3]
- 반응형(Responsively designed), 스크린과 브라우저를 탑재한 모든 장치에서 사용할 수 있어야 한다 — 모바일 폰, 태블릿, 노트북, TV, 냉장고, 등.
- 안전(Secure), 사용자, 앱, 서버간의 연결은 민감한 데이터에 접근을 시도하는 모든 제3자에 대해 안전해야 한다.
물론 PWA는 다양한 참여자에 의해 지속적으로 논의되고 있는 개발 철학이니만큼, 이러한 원칙이나 기능들은 언제든지 바뀔 수 있다는 것을 염두에 두자.
4. 외부 링크
[통계]
https://www.comscore.com/Insights/Presentations-and-Whitepapers/2017/The-2017-US-Mobile-App-Report
[통계]
[3]
푸시 알림과 같은 Notification 기능을 말한다