HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
💌
JJong’s Archive
/
🖍️
개발일지
/
네이버 통합검색 FE 성능 관리 시스템 핵심 요약

네이버 통합검색 FE 성능 관리 시스템 핵심 요약

생성 일시
May 10, 2025 07:21 PM

✅ 네이버 통합검색 FE 성능 관리 시스템 핵심 요약


📌 1. 핵심 성능 지표: LCP 중심 체계

  • LCP (Largest Contentful Paint): 가장 큰 콘텐츠(이미지, 텍스트 등)가 화면에 완전히 나타나는 데 걸리는 시간.
  • 네이버는 글로벌 기준보다 더 보수적인 p95 ≤ 2.5초 기준으로 관리.
  • 2024년 기준 성능:
    • LCP p95 = 2.31초
    • LCP Good Score = 96.59%

📌 2. 기존 Web Vitals로 측정되지 않는 영역 확장

🔹 FUPP (Feed User Perceived Performance)

  • 무한 스크롤형 서치피드에서 콘텐츠 인지 타이밍을 측정.
  • API 요청 시점 ~ 주요 이미지가 화면에 뜨는 시간.

🔹 FILT (Feed Image Load Timing)

  • 피드 이미지 로딩 시점 구분:
단계
설명
Standby
아직 로딩 시작 안 됨 (lazy-loading 대기 중)
Early
스크롤 도달 전 로드 완료
Viewport
스크롤 시점에 로드 시작 → 완료
Late
스크롤 지난 뒤 로드됨 (사용자 못 봄)

📌 3. 실시간 성능 모니터링 & 리포트 자동화

  • 성능 리포트: 매주/매월 생성, 배포 전후 비교.
  • 성능 알람: 실시간 데이터 기반.
    • 과거: 1분 단위 비교 → 오탐 많음
    • 현재: 과거 5분 평균 vs 최근 3분 평균 → 노이즈 최소화

📌 4. 성능 개선 사례 요약

  • JS 로딩 시점 변경
    • 기존: onLoad 이후
    • 개선: DOMContentLoaded + 30ms
    • 결과: LCP 150ms 개선, 오류 10~15% 감소
  • 이미지 로딩 방식 변경
    • background-image → <img> 태그로
    • LCP 30% 개선
  • egjs/Flicking 성능 개선
    • margin-left → transform: translateX()로 변경 → GPU 가속
    • 이미지도 background → img로 변경

🧩 개발자로서의 시사점

  • 단순 렌더링 개선이 아닌, 사용자 체감 기반 지표(LCP, INP, FUPP 등) 중심의 개선 경험 필요
  • 실험 → 측정 → 분석 → 개선 사이클 경험 강조
  • egjs처럼 직접적인 사용자 인터랙션 처리 성능에 대한 이해도 중요

 
 

📘 Web Vitals & 성능 최적화 개념 질문 정리


❓ 0. LCP란?

  • Largest Contentful Paint
  • 사용자가 페이지에 들어왔을 때, **가장 큰 콘텐츠(이미지, 텍스트 등)**가 화면에 완전히 보일 때까지 걸리는 시간
  • 즉, 사용자가 “아, 페이지 떴다”라고 인지할 수 있는 시점을 수치화한 것

❓ 1. 상위 5%가 뭘 대상으로 하는 거야? 속도?

  • 맞아. LCP, INP 등 속도 지표를 대상으로 해
  • 예: LCP p95 = 2.3초 → 상위 5%를 제외한 대부분 사용자는 2.3초 안에 콘텐츠를 봤다는 뜻

❓ 2. p75 기준 시계열 추적이 뭐야?

  • 시계열 추적 = 시간 흐름에 따라 성능 지표가 어떻게 변했는지를 그래프로 관찰
  • 예: 하루 동안의 LCP p75를 시계열로 확인 → 성능 저하 시점이나 개선 시점 파악 가능

❓ 3. 이미지 로딩 시점 4단계 (FILT 지표)

구분
의미
UX 평가
Standby
이미지 요청 전 (lazy-loading 대기)
👎
Early
사용자 스크롤 전에 미리 로드 완료
✅ 가장 좋음
Viewport
스크롤하면서 로드됨
😐
Late
스크롤 지나간 뒤 로드
❌ 사용자 못 봄

❓ 4. 피드 호출 위치에 따른 ABT 실험이 뭐야?

  • *A/B Test (ABT)**를 통해, 사용자가 화면 하단에 도달하기 몇 px 전에 피드를 불러오는 게 최적인지 실험
  • 너무 빨리 호출 → 서버 낭비
  • 너무 늦게 호출 → UX 저하
  • 결과: 600~1,000px 전이 최적

❓ 5. “5분 vs 3분 구간 비교로 오탐률 줄임” 뜻?

  • 이전: 1분 전 vs 현재 → 민감해서 오탐이 많음
  • 개선: 과거 5분 평균 vs 최근 3분 평균을 비교
    • → 일시적 스파이크 무시, 지속적 변화만 감지

❓ 6. onLoad vs DCL, 그리고 “DCL 이후 30ms” 뜻?

이벤트
의미
발생 시점
DCL (DOMContentLoaded)
HTML 파싱 완료
빠름
onLoad
HTML + CSS + 이미지 등 모든 리소스 완료
느림
  • DCL 이후 30ms는 성능과 안정성 사이의 균형 지점
    • → JS 로드를 너무 일찍 하면 오류, 너무 늦으면 느림

❓ 7. background-image보다 img 태그가 빠른 이유?

방식
요청 시점
LCP 영향
img 태그
HTML 파싱 중 요청 시작
✅ 빠름
background-image
CSS 파싱 후 요청
❌ 상대적으로 느림

❓ 8. margin-left vs transform 차이와 GPU 가속 이유?

속성
처리 방식
성능
margin-left
레이아웃 계산 필요 → reflow 발생
느림
transform
GPU에서 layer 이동 → reflow 없음
빠름, 부드러움
→ transform은 GPU에서 직접 처리 → 부드러운 애니메이션 제공

❓ 9. 렌더링 개선 vs 수치 기반 성능 개선 차이

분류
설명
예시
렌더링 개선
내부 코드 구조 개선
useMemo, 컴포넌트 분리
수치 기반 개선
사용자 체감 성능 수치(LCP, INP 등) 중심
LCP 2.8s → 2.3s로 개선 등
→ 후자가 사용자 경험에 직접적인 영향

❓ 10. egjs란?

  • NAVER에서 만든 JavaScript UI 유틸리티 오픈소스
  • Flicking, View360, Axes 등 다양한 상호작용 및 제스처 처리용 툴킷
  • 디자인 시스템은 아님 (예: Polaris, Arco처럼 스타일/규칙 관리하는 건 아님)
 
 

⚡ 하드웨어 가속(Hardware Acceleration)이란?


💡 정의

원래 CPU가 처리하던 그래픽/시각 연산을 GPU에게 넘겨 더 빠르게 처리하는 방식

🧠 왜 쓰는가?

속성
CPU 처리
GPU 처리
margin, padding
O (레이아웃 계산 필요)
X
transform, opacity
X (효율 낮음)
✅ GPU에서 레이어 처리 가능

🎯 웹에서 GPU가 쓰이는 예시

  • transform: translateX(...)
  • opacity
  • will-change: transform
  • canvas, WebGL

🎬 transform이 빠른 이유

  • margin-left: 레이아웃 변경 발생 → reflow
  • transform: 레이아웃 계산 없이 GPU에서 layer만 이동 → 부드러운 애니메이션

🔁 비유로 설명

CPU = 일반 사무직 / GPU = 디자이너
  • CPU만 쓸 경우 → 모든 작업을 혼자 → 느림
  • GPU에게 그래픽 전담시키면 → 효율적, 빨라짐