[리뷰] SNS 앱 예제로 배우는 프로그레시브 웹 앱



비제이퍼블릭(BJ퍼블릭) 출판사의 "SNS 앱 예제로 배우는 프로그레시브 웹 앱(이근혁 저)"를 읽고 작성한 리뷰입니다.

표지


2010년 경 모바일 앱을 처음 만들어 봤다. 당시만 해도 대세는 네이티브 앱이었는데 모바일 웹과 중복으로 개발해야 하는 생산성 문제 때문에 폰갭 등의 하이브리드 앱이 등장하였다.

10년이 지난 후 모바일 개발 생태계는 춘추전국시대가 되어버렸다. 안드로이드 진영에는 코틀린이 네이티브 개발을 대체하는 추세이고, 본 도서에서 소개하는 PWA가 나름의 한 축을 이끌어 가고 있으며, 구글의 플러터도 한 축을 담당하고 있다.

아직 어느것 하나가 뚜렷하게 대세를 끌고 있는 형국은 아니기에 개발 목적에 제일 부합하는 방식을 찾는 융통성이 필요한 시점이 아닐까 한다.

이 책은 그런 측면에서 PWA의 장단점을 쉽게 파악하고 쿡북 형태로 빠르게 구현 방법을 익힐 수 있다는 점이 장점이다.

PWA는 웹 앱임에도 네이티브 앱에서 제공하는 기능을 구현할 수 있다는 점이 장점이며, 자바스크립트 하나만으로 서버 사이드 까지 아우를 수 있다는 심플함이 있다. 개인적으로는 애플 진영에서 이 기술을 어디까지 용인하느냐가 대세 여부에 지장을 줄 변수라고 본다.

PWA를 사용하면 Node.js를 통해 자바스크립트 문법으로 네이티브 기능들을 컨트롤 할 수 있고, 오프라인 상태에서도 활용이 가능하며, 서비스 워커를 통해 백그라운드에서도 데이터를 동기화 할 수 있다. 심지어 그동안 웹 앱에서는 구현이 불가능했던 Push 기능의 구현도 가능해진다.

본 도서는 Paper라는 간단한 예제에 PWA의 기능들을 입혀가며 개선하는 과정을 통해 PWA를 학습할 수 있게 도와준다. 하나의 앱에만 집중하기 때문에 군더더기 없이 통일성있게 PWA를 배울 수 있다는 장점이 있으며, 저자 특유의 문체 덕분에 가독성이 좋아 그만큼 학습 능률에 도움이 된다.

PWA의 핵심 기능인 서비스 워커를 알기 쉽게 풀어나가는 점도 책의 매력이라 할 수 있다. 기본적으로 자바스크립트는 싱글 스레드 기반으로 움직이기 때문에 이 제약을 피하기 위해 백그라운드의 기술이 중요해 진다. 이는 Node.js에서도 마찬가지이다.

서비스 워커를 활용하면 대표적으로 아래와 같은 3가지 기능을 활용할 수 있게 되는데 책의 예제를 통해 한 단계씩 구현하다보면 쉽게 익힐 수 있다.

  • Fetch(브라우저 요청)
  • Sync(백그라운드 동기화)
  • Push(푸시 알림 수신)

그 외 캐시스토리지, IndexedDB, 웹 앱 매니페스트 등의 자주 활용하는 부가기능이 소개된다. 캐시 스토리지란 브라우저에 리소스를 직접 저장하고 관리할 수 있는 공간으로 API를 통해 활용할 수 있다. 덕분에 오프라인에서도 PWA를 활용할 수 있게 된다.

IndexedDB란 말그대로 DB이다. Paper 예제에서 CRUD를 통해 IndexedDB를 활용하는 예제를 따라하다보면 어떤 개념인지 쉽게 파악할 수 있다. 덕분에 Mysql과 같은 DB로부터 독립적인 설계가 가능해진다.

웹 앱 매니페스트는 웹 앱을 일반적인 앱처럼 설치할 수 있게 해주는 기능이다. 웹 앱의 이름이나 시작페이지, 아이콘 등의 정보가 담겨있다.

다음으로 앞서 설명했던 서비스 워커의 심화과정인 백그라운드 동기화를 다룬다. 모바일이 온라인에서 오프라인으로 바뀌었을 때 혹은 그 반대의 케이스가 구체적으로 어떤 매커니즘으로 동작하는지 궁금했는데 이 책 덕분에 상세히 알 수 있어 좋았다.

주로 서비스 워커에 동기화 작업을 등록하여 처리하며 클라이언트와의 메시지 전달 기법을 통해 문제점들을 보완한다. 이를 통해 삭제한 이미지 등이 캐시에 잔존하는 문제 혹은 동기화 작업 후에도 작업 목록이 갱신되지 않는 문제에 대한 처리가 가능해진다.

마지막으로 Paper 앱에 Push 기능을 구현하며 대단원을 마무리한다. 앱 푸시 아키텍처에 대해 익힌 후 알림 API를 활용하며 구글의 FCM이라는 푸시서비스 연동을 통해 알림 기능을 구현한다. 부가적으로 BABEL을 활용해 구버전의 브라우저에 대한 대응 방법을 다루며 부록에서는 비동기와 콜백 매커니즘을 위주로 살펴보는데 초보자들에게는 많은 도움이 될 것 같다.

전반적으로 Paper라는 앱 하나를 선정하여 PWA의 주요 기능을 하나씩 구현해나가는 과정이 통일성을 부여하여 집중력을 높여주는 구성이 백미이다. 더불어 PWA의 주요 기능들을 디테일하게 다루고 있기에 초보자도 쉽게 따라해보며 기능과 개념을 익힐 수 있다는 점이 장점이다. 더불어 가독성이 좋아 매끄럽게 읽힌다.

PWA에 관심이 있거나 앱 개발을 처음 시작하는 분이라면 본 도서로 시작할 것을 추천하고 싶다.






© 2019.04. by theorydb

Powered by theorydb