Progressive Web App (PWA)

박광민·2023년 3월 15일
0

PWA

  • 프로그래시브 웹 앱(Progressive Web App)이라고 하며 웹과 네이티브 앱의 기능을 모두 갖춤
    -> 우리가 웹(web)에서 사용하는 기술과 네이티브 앱의 장점을 결합

  • HTML, CSS, 자바스크립트(JavaScript)와 같은 웹 기술로 만듦
    -> 느낌과 기능은 실제 네이티브 앱(native app, 플랫폼의 OS에 맞는 언어로 제작된 앱)과 견줄 수 있을 정도로 좋음
    -> 몇 가지의 스마트한 기능들을 추가하면 세상의 그 어떤 웹사이트라도 PWA로 바꿀 수 있음
    -> 네이티브 앱을 개발하는 것은 상당히 어렵지만, PWA는 훨씬 더 빠르게 개발할 수 있음
    -> 푸시 알림이나 오프라인 지원과 같은 네이티브 앱의 특징들도 전부 제공할 수 있음

  • 대표적으로 트위터가 PWA임

네이티브 앱과 PWA의 차이

  • 애플의 앱스토어나 구글의 플레이스토어에서 다운로드할 수 있는 네이티브 앱은 일반적으로 해당 플랫폼에 특화된 프로그래밍 언어로 만드는 경우가 많음
    -> iOS의 앱들은 스위프트(Swift)로 만들고, 안드로이드의 앱들은 자바(Java)로 만드는 식임
    -> 원하는 플랫폼에서 실행되는 앱을 만들기 위해서는, 관련된 기술도 알아야 함
    -> 물론 지름길도 있기는 하지만, 이런 방법에도 나름의 한계가 있음
    -> 그리고 여러 군데의 모바일 환경에 대해서 전부 앱을 만들고 싶다면, 그런 각각의 다양한 환경에 필요한 기술들을 알고 있어야만 함
    -> 하나의 앱을 만들어서 모든 앱스토어에 출시한다는 것은 절대로 쉬운 일이 아님
    -> 당연히 두 개의 환경에서 모두 실행되는 앱을 개발하는 방법은 존재하는데 대표적인 것이 바로 PWA임

  • PWA는 일단 홈 화면에 저장되면 브라우저에서 실행되고 네이티브 앱처럼 동작함. 그리고 보안상의 이유로 브라우저가 접근하지 못하는 시스템 하드웨어와 소프트웨어에도 접근할 수 있음
    -> 따라서 PWA의 성능이 뛰어나다면, 사용자들은 자신들이 웹 기반의 앱을 사용하고 있는 것인지 아니면 네이티브 앱을 사용하고 있는 것인지를 구분 못함

PWA의 장점

  • 다양한 앱스토어에 출시하기 위해서 별도의 프로세스를 거치지 않아도 됨
  • 일반적인 웹 기술을 활용해서 PWA를 만들 수 있음
  • 일반적으로 개발 비용이 더 저렴함
  • 기존의 웹사이트를 앱으로 만들 수 있기 때문에, 추가로 유지관리해야 하는 코드베이스(codebase, 소스코드)가 적음
  • 기본적으로 반응형(responsive)이기 때문에, 다양한 화면 크기에도 잘 동작함
  • 일반적인 웹사이트와는 달리, 오프라인에서도 작동함
  • 검색엔진을 통해서 찾을 수 있음
    -> 앱스토어보다는 검색엔진을 사용하는 사람들이 훨씬 더 많음
    -> 앱스토어를 통해서도 PWA를 배포할 수 있음

PWA vs Native App무엇을 선택해야 하는가?

  • PWA를 고르면 좋은 경우
    • 만드는 사람이 초보자이며, 사람들이 간단하게 사용할 수 있는 앱을 만들고자 하는 경우
      -> PWA는 다운로드가 필요 없고, 푸시 알림을 통해서 사용자들과도 교류할 수 있음
    • 시간과 비용에 제약이 있는 경우
      -> PWA는 개발이나 출시에 걸리는 시간과 비용이 적음
    • 브랜드의 인지도와 검색엔진 최적화(SEO)를 개선하고자 하는 경우
      -> PWA는 일반적인 웹사이트와 매우 비슷함
      -> 따라서 폭넓은 사용자들에게 다가갈 수 있음
  • Native App을 고르면 고르면 좋은 경우
    • 브랜드에 대한 신뢰를 구축하고 싶은 경우
      -> 앱스토어를 통해 앱을 출시하면 신뢰도가 증가함
      -> 네이티브 앱에는 보안 관련 기능들이 더 많음
    • 스마트폰의 고급 기능들을 활용하고자 하는 경우
      -> 사용자 경험(UX)에서 지오펜싱(Geofencing)이나 센서/감지 기능이 필수적이거나, 아주 뛰어난 연산 능력이 요구되는 경우에 좋음
 
profile
developer(Frontend)

0개의 댓글