앱을 다운로드하지 않을게요. 웹 버전은 A-OK

발행: (2026년 4월 6일 PM 11:31 GMT+9)
10 분 소요

Source: Hacker News

Introduction

웹사이트를 통해 서비스를 이용하는 것을 선호하는 사람으로서, 요즘 너무나 피곤해졌어요. 거의 모든 사람이 나와, 곧 당신에게도, 그들의 웹 버전 대신 앱을 사용해 콘텐츠를 소비하길 원합니다.

소셜 미디어 앱처럼 명백한 경우든 주차처럼 기본적인 경우든, 앱이 우선시되고 사이트는 소외된 존재가 됩니다. 그들은 푸시를 은근히 하지 않아요: 앱 스토어 링크가 포함된 모달이 웹 버전의 절반을 가리거나, 조금 스크롤한 뒤 바로 나타나는 팝업, 혹은 “앱이 10배 더 좋다”고 외치는 헤더 등. 언제나 존재하고 언제나 거슬립니다.

앱이 서비스에 접근할 수 있는 유일한 옵션인 경우는 말할 필요도 없습니다. 음식 주문 같은 경우는 사소한 불편일지 모르지만, 공공 서비스나 유틸리티일 때는 큰 골칫거리가 됩니다.

양쪽 모두의 적대감은 왜?

원칙적으로, 나는 내가 보는 것과 보는 방식을 통제하는 것을 좋아한다. 앱은 매우 제한적이며; 브라우저에서는 사용성을 향상시키는 아주 멋진 작업들을 많이 할 수 있다.

  • 서비스에 다크 모드가 없나요? 나는 다양한 사용자 스크립트를 사용할 수 있다.
  • 레딧이 사이드바에 게임 섹션을 도입했나요? 2초 만에 해결해서 내 확장 프로그램에 묶어 넣었다 [1].

사용자 스크립트, 광고 차단기, 맞춤형 확장 프로그램 사이에서 나는 기본적으로 신과도 같으며, 내 영역을 거침없이 누빈다.

이러한 통제, 혹은 그 부재는 앱 제작자가 사용자에게 적대적인 태도를 보이는 이유를 설명한다. 그들은 종종 다크 패턴의 블랙홀이며, 방해가 되는 어떤 것도 원하지 않는다. 앱은 그들이 푸시 알림을 보내고, 침해적인 텔레메트리를 수집하며, 사용자를 그들의 폐쇄된 정원 안에 머물게 하는 것을 더 쉽게 만든다. 더 나은 사용자 경험을 내세우지만, 궁극적인 목표는 더 높은 사용자 유지율을 확보하는 것이다.

대부분은 텍스트와 미디어일 뿐

대부분의 앱은 바로 그거예요: 끝없이 이어지는, 모든 것을 소비하는 피드나 다중 페이지 양식에 텍스트와 미디어가 들어가 있으며, 사용자 인터페이스에 교묘히 위장되어 있습니다.

무거운 3D 게임이나 실제로 휴대폰 하드웨어와 깊은 통합이 필요한 유틸리티(예: AR을 위한 LiDAR 스캐너 접근)를 제외하면, 우리는 실제로 무엇을 남게 될까요? API에서 데이터를 가져와 네이티브 뷰에 렌더링하는 것이 주된 역할인 얇은 클라이언트입니다.

왜 레스토랑 메뉴를 살펴보고, 티켓을 구매하고, 게시물 목록을 스크롤하기 위해 100 + MB 앱을 다운로드하고, 위치 추적 권한을 부여하고, 백그라운드 프로세스를 실행하도록 허용해야 할까요? 결국 거의 항상 JSON을 파싱하고 렌더링하는 것에 불과합니다. 그럼에도 불구하고 기업들은 내 홈 화면에 영구적인 공간을 차지하기 위해 기본 콘텐츠를 네이티브 쉘로 다시 만들기를 고집합니다.

앱조차도 좋지 않다

서비스가 브라우저를 벗어나게 할 거라면 최소한 다듬어진 네이티브 경험을 제공해야 합니다. 대부분의 경우, 방금 다운로드한 앱은 타협의 산물에 불과합니다.

초기 Flutter 앱에서 iOS 전용 셰이더 컴파일 지연 현상을 겪어본 사람이라면 [2] 얼마나 짜증나는지 알 겁니다(버그는 2023년경에 수정되었습니다). 개발자들이 Skia를 Impeller 엔진으로 교체하기 전에는, 애니메이션이 처음 실행될 때 UI가 끊기는 것을 막기 위해 미리 컴파일된 셰이더를 배포해야 했습니다.

그 결과는 종종 사용자 인터페이스의 ‘언캐니 밸리’를 초래합니다: 완전히 깨진 것은 아니지만 미묘하게 다르고, 때때로 부자연스럽습니다. 스크롤 속도가 OS의 다른 부분과 정확히 맞지 않으며, 스와이프‑백 제스처가 몇 밀리초 정도 머뭅니다.

인간의 뇌는 시스템 타이밍이 어긋났을 때 이를 감지하는 데 놀라울 정도로 능숙합니다. 바로 이런 이유로 XZ 백도어가 발견되었습니다: 한 엔지니어가 SSH 로그인 시간이 평소보다 0.1초 정도 더 오래 걸리는 것을 눈치챈 것이죠. 이것은 특수한 경우가 아니라, 예전 FPS 친구들이 한 번 총을 쏘고 나서 지연을 느끼며 서버 지역을 알아맞히던 것과 같은 원리입니다 [3].

이러한 마이크로 인터랙션은 매우 중요합니다; 마지막 다듬기 단계가 없으면 네이티브 경험이라는 겉모습 전체가 무너지게 됩니다. 모든 앱이 이런 것은 아니지만, 충분히 많은 앱이 그렇기 때문에 전체적인 사용 경험이 떨어지게 됩니다.

엔시피케이션 루프

전체 화면 모달이 나타나 스레드의 나머지를 읽기 위해 앱을 다운로드하라고 요구하면, 사용자는 가장 저항이 적은 길을 선택합니다: 다운로드하고 넘어갑니다.

분석 대시보드를 바라보는 제품 매니저에게 나는 감수할 수 있는 희생양이며, 중요하지 않은 소수에 불과합니다. 웹 버전을 의도적으로 저하시켜 80 %의 사용자를 앱 스토어로 유도하면, 그 PM은 승진과 큰 급여 인상을 받게 됩니다. 언제나 그렇듯 행동은 인센티브를 따릅니다. 우리의 인구통계는 그들의 분기별 지표에 반영될 만큼 충분히 크지 않습니다.

이것이 바로 엔시피케이션 루프가 온전한 형태로, 의도대로 정확히 작동하는 모습입니다:

  1. 서비스는 마찰이 없고 인덱싱이 가능하기 때문에 오픈 웹에서 초기 청중을 구축합니다.
  2. 사용자 기반이 충분히 고정되면, 웹 버전을 의도적으로 제한하여 모든 사용자를 네이티브 앱으로 끌어들입니다.
  3. 앱 안에서는 벽이 닫히듯, 광고 차단기가 더 이상 차단할 수 없는 광고 가득한 피드의 포획된 청중이 됩니다.

이제는 뛰어난 웹 경험을 유지할 재정적 인센티브가 없습니다. 한때 위대한 범용 플랫폼이었던 브라우저는 점점 더 앱 스토어를 위한 상위 퍼널 마케팅 채널로 전락하고 있습니다. 우울한 점은 그 효과가 숫자로 입증된다는 사실입니다.

참고 문헌

  1. – “Preview: iOS shader compilation improvements” 검색
0 조회
Back to Blog

관련 글

더 보기 »