데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      🚀 에이닷 앱 성능 검증기: "빠르다"를 숫자로 증명하기까지

      withIn 25.09.11
      1,122 6 1
      DEVOTEE 요약
      에이닷 v4.0 성능 검증 과정에서는 사용자 체감 기준에 맞는 성능 정의와 유형별 세분화를 통해 '빠르다/느리다'를 객관적으로 판단할 수 있는 체계를 구축했습니다. 각 기능의 특성과 기술적 한계를 반영해 공정한 기준을 설정하고, 작업 크기별로 성능 목표를 나눠 사용자 경험을 개선하기 위해 노력했습니다. 결과적으로 전체 앱 UX의 약 81.5%에서 목표를 달성했으며, 앞으로 실제 사용자 데이터를 활용한 더 정교한 측정과 개선을 계획하고 있습니다.
      DEVOTEE 추천 블로그

      앱 실행부터 LLM까지, 에이닷 v4.0 성능 측정과 SLO 수립 리얼 스토리


      🤔 "이 앱 빠른가요?" - 대답하기 참 어려운 질문

      새 앱 버전을 출시하기 전, 가장 많이 받는 질문입니다.

      "이번 버전 성능은 어때요?""빠른가요?""앱이 너무 느린 것 같은데요."

      음... 🤷‍♀️

      앱이 "빠르다"는 게 정확히 뭘까요? 앱이 켜지는 속도? 화면이 바뀌는 속도? AI가 답변하는 속도? 그리고 어느 정도 빨라야 "빠른 앱"이라고 할 수 있을까요?

      그리고 똑같은 2초라도 상황에 따라 체감이 완전히 달라요. 화면이 전환되는 2초와 콘텐츠가 로딩되는 2초는 사용자가 느끼는 답답함의 정도가 다르잖아요.

      그렇다면 앱의 빠르기는 어떻게 답하면 좋을까요.

      이번에 에이닷 v4.0 성능 검증을 진행하며 앱의 "빠르다" 기준을 한번 만들어보기로 했습니다. 🚀


      🗣️ '성능 언어' 만들기

      모든 걸 "빠르다/느리다"로 뭉뚱그리지 않기로 했습니다. 에이닷 앱은 다양한 기능이 있어서 하나의 잣대로 논하기엔 무리가 있죠.

      사용자가 체감하는 "빠름"의 기준을 바탕으로 유형을 정의하고, 같은 유형이라도 기술적 특성이 달라 성능 차이가 발생할 수밖에 없는 경우를 따로 반영했습니다.

      📚 성능 용어 사전

      용어

      풀네임

      설명

      예시

      LCH

      Launch/Cold Start

      앱 완전 종료 → 첫 화면 출력

      홈 화면 노출까지

      WRS

      Resume/Warm Start

      백그라운드 → 포그라운드 출력

      앱 전환 복귀

      NAV

      Navigation/Native

      네이티브 화면 전환

      홈 → 전화 화면

      NAV.W

      Navigation/WebView

      WebView 기반 화면 전환

      홈 → 검색 화면

      LOD

      Content Load

      화면 내 데이터 로딩

      캘린더 등록 → 화면 반영

      🤖 LLM/AI 전용 지표 (스트리밍 UX용)

      스트리밍으로 답변이 조금씩 나타나는 AI 기능은 "시작-진행-완료"의 3단계로 나누었습니다.

      용어

      설명

      의미

      TTF

      Time to First (피드백 시작)

      사용자가 "응답이 시작되었다"고 인지하는 시점

      → Perceived latency

      TTFM

      Time to First Meaningful (의미있는 응답)

      첫 '의미있는' 토큰(문장 시작/요약문 첫 문장 등)이 보이기 시작

      → 실제 가치 제공 시작점

      TTC

      Time to Task Completion (전체 완료)

      전체 처리·생성 완료까지의 시간

      → 작업 크기별로 성능 기준 분류!

      image-2025-9-4_15-41-10.png

      이렇게 쪼개니까 "빨리 시작해서, 제대로 끝내는" 기능의 성능을 구분해서 파악할 수 있게 되었습니다! 🎉


      📊 성능 '기준' 정의하기: 근거 있는 목표 설정

      성능을 숫자로 기준을 정한다는 건 참 어려운 일입니다.

      앱 성능은 결국 사용자 체감이 기준인데, 사람마다 성능에 대한 생각도 빠르기 체감 기준도 모두 다르거든요.

      게다가 기술이 발전하면서 사용자의 성능 기대 수준도 점점 올라가고 있어서 과거의 기준이 지금도 적용될 수 있다고 말하기 어렵기도 합니다.


      그래도 최대한 객관성을 확보하기 위해 UX 성능 연구 자료와 업계 가이드라인, 유사 앱 벤치마킹을 통해 각 유형별 성능 기준을 정의했습니다.

      🎯 성능 등급 기준표

      유형

      🟢 Good

      (목표 달성)

      🟡 Warning

      (주의 필요)

      🔴 Issue

      (개선 필요)

      LCH

      ≤ 2.0초

      2.0~4.0초

      > 4.0초

      WRS

      ≤ 0.5초

      0.5~1.5초

      > 1.5초

      NAV

      ≤ 1.0초

      1.0~1.5초

      > 1.5초

      NAV.W

      ≤ 3.0초

      3.0~3.5초

      > 3.5초

      LOD

      ≤ 1.5초

      1.5~2.0초

      > 2.0초

      TTF

      ≤ 0.3초

      0.3~0.7초

      > 0.7초

      TTFM

      ≤ 1.0초

      1.0~1.5초

      > 1.5초

      TTC (짧은 작업)

      ≤ 2.0초

      2.0~5.0초

      > 5.0초

      TTC (중간 작업)

      ≤ 5.0초

      5.0~8.0초

      > 8.0초

      TTC (긴 작업)

      ≤ 10.0초

      10.0~15.0초

      > 15.0초


      🛠️ 현장에서 마주친 리얼 이슈들

      🤯 이슈 1: WebView는 다른 생명체다

      처음엔 모든 화면 전환을 NAV 1초 기준으로 잡았어요. 그런데...

      ❌ WebView 전환: 평균 2.8초 → "느려요!" 😱
      ✅ 네이티브 전환: 평균 0.6초 → "빨라요!" 😊

      WebView는 HTML/CSS/JS를 다운로드하고 렌더링해야 해서 구조적으로 시간이 더 필요해요. 같은 잣대를 들이대면 개발팀이 "달성 불가능한 목표"와 싸우게 됩니다.

      WebView가 적용된 다른 앱들의 성능을 벤치마킹한 결과, NAV.W = NAV + 2초 기준을 도입하기로 했습니다. 🎯

      📏 NAV (네이티브): ≤ 1초
      📏 NAV.W (WebView): ≤ 3초 (NAV + 2초 조정)

      결과: 숏컷 → 검색 화면 전환이 Issue에서 Good으로 재평가!

      💡 핵심: "같은 UX 목표"를 포기하는 게 아니라, 기술 특성을 반영한 공정한 목표를 세우는 일


      ⏰ 이슈 2: 1시간 반짜리 측정의 딜레마

      노트 생성 기능 중에 1회 측정에 1시간 30분이 걸리는 항목이 있었습니다.

      ⏰ 10회 반복 측정시: 15시간 소요 예상
      🧪 측정 중 이슈가 있다면 + 5시간 더 고려 필요
      👨‍💼 "기능 하나에 2일+a이면 앱 전체 검증 기간이..."😅

      측정 비용 vs 효용을 고려해서 이런 초장시간 작업은 이번 검증에서 제외하고, 노트 심층 성능 개선이 필요할 때 별도로 상세 검증을 진행하기로 결정했습니다.


      🎭 이슈 3: 백그라운드 작업도 기준이 필요할까?

      "오래 걸리는 작업은 백그라운드에서 처리하니까 성능 기준이 필요 없지 않을까?"

      🔄 앱: 백그라운드에서 처리중...
      😰 사용자: 내 요청이 처리되고 있는 거야? 오류인가? 불안해...

      🙅‍♀️비동기 작업이더라도 작업이 지연되면 사용자가 "요청이 제대로 처리되고 있는 건가?"하는 불안감을 느낄 수 있습니다.

      비동기 작업도 일정 시간 안에 결과가 와야 "정상 동작"으로 인식한다고 하죠.

      그래서 작업 크기별 성능 기준을 분리하고, 비동기 작업도 적절한 완료 시간과 진행 상태를 사용자가 인지할 수 있도록 기준을 마련했습니다.


      🧪 성능 측정 현장 체크리스트

      ⚙️ 사전 준비 (실패 방지용)

      • PRD 스토어 빌드 사용 (실제 사용자 환경과 동일)

      • LTE 고정 (WiFi 속도 변동 방지)

      • 절전/배터리 최적화 해제 (성능 제한 방지)

      • 화면 밝기·테마·글자 크기 고정 (GPU/렌더링 부하 일정화)

      • 캐시 클리어 후 Cold Start 준비 (정확한 최초 실행 시간 확보)


      🏃‍♀️ 진행 중 (신뢰성 확보용)

      • 기기 온도 모니터링 (과열로 인한 성능 저하 방지)

      • 네트워크 안정성 체크 (일시적 지연 방지)

      • 측정자 고정 (동작 숙련도 영향 최소화)


      📊 데이터 품질 관리

      • 10회 반복 측정 (통계적 신뢰성 확보)

      • 아웃라이어 처리 (GC, 백그라운드 간섭 등 제거)

      • 측정 구간 재검토 (외부 변동 요인 배제)


      🎯 이상치(Outlier) 처리 정책

      • 📏 기본: 산출값에서 제외

      • ⚠️ 30% 이상 발생시: 환경 리셋 → 재측정

      • 🔄 재측정에도 재현 불가: 일시적 요인으로 분류

      💡 실제 사례: 앱 실행에서 4.51초, 2.59초 아웃라이어 2건 발생 → 재측정 10회에서 재현 안됨 → "GC나 백그라운드 간섭" 추정하고 제외


      🎓 성능 검증을 통해 배운 것들

      1️⃣ "정의가 성능을 만든다"

      측정 대상을 분류하고 구간을 명확히 정의하니까 "빠르다/느리다"를 객관적으로 판단할 수 있게 되었어요. 무엇을 어떻게 측정할지가 결과를 좌우합니다.

      2️⃣ "하나의 잣대로 모든 걸 재면 안 된다"

      네이티브와 WebView, 스트리밍 UX, 비동기 작업은 각각 다른 특성과 기준이 필요합니다.

      3️⃣ "숫자보다 중요한 건 맥락"

      22초 걸리는 작업도 사용자에게 "진행 중"이라는 신호를 0.3초에 준다면 기다릴 수 있습니다.

      4️⃣ "필요하다면 기다릴 수 있다"

      기능 특성상 고품질 결과를 위해 시간이 더 필요하다면, 해당 특성에 맞춘 별도 품질 목표 설정이 필요합니다.

      5️⃣ "일시적으로 느려질 수도 있다"

      평소엔 빠르더라도 시스템 자원이나 환경적 요인(GC, 백그라운드 앱, 네트워크 지연, 디스크 I/O 등)으로 일시적 성능 저하가 발생할 수 있습니다. 이런 경우 잠시 후 재시도하거나 기기 상태 점검이 필요하다고 안내하는 방법도 고려해봅니다.


      📈 최종 성과: 숫자로 보는 앱 성능

      🏆 성과 요약

      image.png

      81.5%가 목표 달성! 🎉 핵심 흐름의 UX는 건강한 상태예요.


      🔮 다음 라운드: 더 현실적인 성능 측정으로

      🌍 실사용자 데이터 수집 (RUM)

      Firebase 기반으로 실제 사용자 환경에서의 성능 트레이스를 수집해서 "실험실 vs 현실"의 간극을 좁힐 예정이에요.

      🔍 세밀한 병목 분석

      PathFinder, Spectra 등을 활용해서 대화방 레이턴시를 단계별로 분석하여 정확한 개선 포인트를 찾을 계획입니다.

      image_nextplan.jpg

      🎬 마무리: 성능은 결국 사용자 경험이다

      성능 검증은 단순히 "얼마나 빨리"의 문제가 아니에요. 사용자가 언제 안심하고, 언제까지 기다릴 수 있는지를 이해하는 일이죠.

      이번에 구축한 유형별 기준 + 체계적 측정 절차 + 근거 있는 기준 조정 프레임워크는 앞으로도 계속 발전시켜 나갈 예정이에요.

      💝 마지막 한마디: "무조건 빠른 앱"보다는 **"기다릴 만한 가치가 있는 앱"**을 만들고 싶어요.


      📚 참고 자료

      UX 성능 연구

      플랫폼 가이드라인

      성능 측정 리포트


      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      withIn 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기