** πŸ“Œ7-1단계: ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯ μΈ‘μ • μ§€ν‘œ 완전정볡 **

μ›Ήμ‚¬μ΄νŠΈκ°€ β€œλŠλ €μš”β€λΌλŠ” 말 λŒ€μ‹ 

μ •ν™•ν•œ μˆ«μžμ™€ μ§€ν‘œλ‘œ 문제λ₯Ό μ°Ύκ³  κ°œμ„ ν•  수 있게 λ§Œλ“œλŠ” κΈ°μˆ μž…λ‹ˆλ‹€.


βœ… 1. μ™œ μ„±λŠ₯ μΈ‘μ • μ§€ν‘œκ°€ ν•„μš”ν• κΉŒ?

잘λͺ»λœ ν‘œν˜„ μ •ν™•ν•œ μ§€ν‘œ
β€œλ‘œλ”© λŠλ €μš”β€ ❌ λ„ˆλ¬΄ λͺ¨ν˜Έν•¨
β€œ3초 λ§Œμ— λ²„νŠΌ 클릭 κ°€λŠ₯” βœ… μ •ν™•ν•œ 수치 (TTI)
β€œμ΄λ―Έμ§€ λ‘œλ”© 였래 κ±Έλ €μš”β€ βœ… LCP κΈ°μ€€ 초과

μ„±λŠ₯ μ§€ν‘œλŠ” 문제λ₯Ό κ³„λŸ‰ν™”ν•˜κ³  κ°κ΄€ν™”ν•΄μ„œ μ§„μ§œ 문제λ₯Ό 찾게 ν•΄μ€˜μš”.


βœ… 2. μ£Όμš” μ„±λŠ₯ μ§€ν‘œλ“€


1️⃣ TTI (Time To Interactive)

πŸ’¬ β€œμ‚¬μš©μžκ°€ 클릭, μž…λ ₯ λ“± μΈν„°λž™μ…˜μ„ ν•  수 있게 된 μ‹œμ κΉŒμ§€ κ±Έλ¦° μ‹œκ°„β€


πŸ‘¦πŸ» μ‰¬μš΄ 예

λ²„νŠΌμ΄ λ³΄μ˜€μ§€λ§Œ λˆŒλŸ¬λ„ μ•ˆ λ˜λŠ” 상황 ❌

β†’ JavaScriptκ°€ 아직 μ΄ˆκΈ°ν™” 쀑이라 λ™μž‘ μ•ˆ 함

βœ… TTI μΈ‘μ • =


⏱️ κΈ°μ€€

TTI κ°’ UX 평가
0 ~ 3초 βœ… 맀우 μ’‹μŒ
3 ~ 6초 ⚠️ 보톡
6초 이상 πŸ”₯ μ„±λŠ₯ κ°œμ„  ν•„μš”

도ꡬ: Lighthouse, Web Vitals


2️⃣ LCP (Largest Contentful Paint)

πŸ’¬ β€œκ°€μž₯ 큰 μ½˜ν…μΈ (예: 큰 이미지, 제λͺ© λ“±)κ°€ 화면에 μ™„μ „νžˆ ν‘œμ‹œλœ μ‹œκ°„β€


πŸ‘¦πŸ» μ‰¬μš΄ 예

νŽ˜μ΄μ§€κ°€ λ–΄λŠ”λ° κΈ€μžλ³΄λ‹€ 큰 λ°°λ„ˆ 이미지가 늦게 뜨면 β†’ LCP μ§€μ—°!


⏱️ κΈ°μ€€

LCP κ°’ UX 평가
0 ~ 2.5초 βœ… μ’‹μŒ
2.5 ~ 4초 ⚠️ 보톡
4초 이상 πŸ”₯ 느림

μ΅œμ ν™” 팁


3️⃣ FID (First Input Delay)

πŸ’¬ β€œμ‚¬μš©μžκ°€ 클릭, μž…λ ₯, νƒ­ λ“± 첫 번째 μƒν˜Έμž‘μš©μ„ μ‹œλ„ν–ˆμ„ λ•Œ,

λΈŒλΌμš°μ €κ°€ λ°˜μ‘ν•˜κΈ°κΉŒμ§€ κ±Έλ¦° μ‹œκ°„β€


πŸ‘¦πŸ» μ‰¬μš΄ 예

ν΄λ¦­ν–ˆλŠ”λ° λ°˜μ‘μ΄ 늦음 = FID↑


⏱️ κΈ°μ€€

FID κ°’ UX 평가
0 ~ 100ms βœ… ν›Œλ₯­
100 ~ 300ms ⚠️ 보톡
300ms 이상 πŸ”₯ 문제 있음

원인


βœ… 3. Ajax κ΄€λ ¨ μ„±λŠ₯ μ§€ν‘œ


1️⃣ Ajax 응닡 μ‹œκ°„

Ajax μš”μ²­μ΄ μ‹œμž‘λΌμ„œ 응닡 μ™„λ£Œλ˜κΈ°κΉŒμ§€ κ±Έλ¦° μ‹œκ°„

βœ… Network νŒ¨λ„μ—μ„œ 확인 κ°€λŠ₯ (Timing νƒ­μ—μ„œ TTFB, Download ꡬ간)


2️⃣ JS Heap Size

λΈŒλΌμš°μ €κ°€ JavaScript 데이터λ₯Ό μ €μž₯ν•΄ 놓은 λ©”λͺ¨λ¦¬ μ˜μ—­ 크기


πŸ‘¦πŸ» μ‰¬μš΄ μ„€λͺ…

πŸ’Ύ μžλ°”μŠ€ν¬λ¦½νŠΈμš© μž‘μ—…κ³΅κ°„ β†’ λ„ˆλ¬΄ 컀지면 느렀짐!


πŸ“ˆ 확인 도ꡬ


3️⃣ Paint Time

ν™”λ©΄ μš”μ†Œκ°€ μ‹€μ œ λˆˆμ— 보일 λ•ŒκΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„

ν•­λͺ© μ„€λͺ…
First Paint (FP) 처음 아무것도 μ•„λ‹Œ 흰 화면이 μ‚¬λΌμ§€λŠ” μ‹œμ 
First Contentful Paint (FCP) ν…μŠ€νŠΈλ‚˜ 이미지가 처음 화면에 λ³΄μ΄λŠ” μ‹œμ 
Render Blocking CSS/JS λ‘œλ”©μœΌλ‘œ 인해 ν™”λ©΄ 그리기 μ§€μ—° λ°œμƒ

βœ… 4. μ„±λŠ₯ μΈ‘μ • 도ꡬ μš”μ•½

도ꡬ μ‚¬μš© λͺ©μ 
Lighthouse 전체 νŽ˜μ΄μ§€ μ„±λŠ₯ 평가 (TTI, LCP, FID λ“±)
Chrome DevTools Network + JS Heap + Frame 뢄석
Web Vitals JS μ‹€μ‹œκ°„ μ‚¬μš©μž μΈ‘μ • (FID, LCP λ“±)
Performance νƒ­ 상세 JS μ‹€ν–‰ 타이밍 확인

βœ… 5. λ©΄μ ‘ 질문 μ˜ˆμ‹œ + ν•΄μ„€


❓ Q. ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯을 μΈ‘μ •ν•  수 μžˆλŠ” μ£Όμš” μ§€ν‘œλ₯Ό 3κ°€μ§€ λ§ν•΄λ³΄μ„Έμš”.

βœ… A.


βœ… 전체 μš”μ•½ μΉ΄λ“œ

μ§€ν‘œ μ„€λͺ… κΈ°μ€€κ°’
TTI 클릭 λ“± UI λ°˜μ‘ κ°€λŠ₯ μ‹œμ  ≀ 5초
LCP 큰 이미지/ν…μŠ€νŠΈκ°€ λ³΄μ΄λŠ” μ‹œμ  ≀ 2.5초
FID μ‚¬μš©μž 첫 μž…λ ₯ β†’ λΈŒλΌμš°μ € λ°˜μ‘ μ‹œκ°„ ≀ 100ms
Ajax 응닡 λ„€νŠΈμ›Œν¬ β†’ 응닡 μ™„λ£ŒκΉŒμ§€ ≀ 1초
Heap Size JS λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ λ„ˆλ¬΄ 컀지면 λˆ„μˆ˜ μ˜μ‹¬
Paint 첫 ν™”λ©΄ 그리기 FP, FCP, LCP둜 λ‚˜λˆ”

βœ… 7-2단계: Ajax μš”μ²­μ˜ νŠΈλž˜ν‚Ή / λ‘œκΉ… μ‹œμŠ€ν…œ 완전정볡

μ‹€μ„œλΉ„μŠ€μ—μ„  Ajax μš”μ²­μ΄ μ‹€νŒ¨ν•˜κ±°λ‚˜ λŠλ €μ§€λŠ” λ¬Έμ œκ°€ μƒκΉλ‹ˆλ‹€.

μ΄λ•Œ κ°œλ°œμžκ°€ 직접 λΈŒλΌμš°μ €λ₯Ό 켜볼 수 μ—†μ£ .

πŸ‘‰ κ·Έλž˜μ„œ β€œμš”μ²­μ΄ μ–Έμ œ, λˆ„κ΅¬μ—κ²Œμ„œ, μ–΄λ–»κ²Œ μ‹€νŒ¨ν–ˆλŠ”μ§€ μžλ™μœΌλ‘œ μΆ”μ ν•˜λŠ” μ‹œμŠ€ν…œβ€μ΄ ν•„μš”ν•©λ‹ˆλ‹€.


βœ… 1. μ™œ Ajax μš”μ²­μ„ μΆ”μ ν•˜κ³  λ‘œκΉ…ν•΄μ•Ό ν• κΉŒ?

문제 좔적 μ—†μœΌλ©΄? 좔적 있으면?
Ajax μ‹€νŒ¨ β€œμ™œμš”? 잘 μ•ˆ λ– μš”β€¦β€ μ •ν™•ν•œ 였λ₯˜ μœ„μΉ˜, μ‹œκ°„, μ‚¬μš©μž 확인 κ°€λŠ₯
느린 응닡 β€œλŠλ¦° 것 κ°™μ•„μš”β€ TTFB, URL, μ‚¬μš©μž λΈŒλΌμš°μ € μžλ™ 기둝
고객 뢈만 원인 뢄석 어렀움 μ‚¬μš©μžκ°€ 무엇을 ν–ˆλŠ”μ§€ 좔적 κ°€λŠ₯

βœ… μ„œλ²„ λ‘œκ·Έλ§ŒμœΌλ‘œλŠ” μ‚¬μš©μžμ˜ μ‹€μ œ ν™”λ©΄μ—μ„œ μΌμ–΄λ‚œ 일을 μ•Œ 수 μ—†μŒ

β†’ λΈŒλΌμš°μ € μ•ˆμ—μ„œ 였λ₯˜/병λͺ©μ„ μΆ”μ ν•˜λŠ” 도ꡬ가 ν•„μš”ν•¨


βœ… 2. λŒ€ν‘œμ μΈ νŠΈλž˜ν‚Ή/λ‘œκΉ… 도ꡬ


βœ… Sentry (μ„ΌνŠΈλ¦¬)

ν•­λͺ© μ„€λͺ…
μ—­ν•  μžλ°”μŠ€ν¬λ¦½νŠΈ 였λ₯˜ μ‹€μ‹œκ°„ 좔적
νŠΉμ§• 였λ₯˜ λ°œμƒ μ‹œ μ¦‰μ‹œ μ•Œλ¦Ό + μ½”λ“œ μœ„μΉ˜ 좔적 + Ajax 였λ₯˜ 캑처 κ°€λŠ₯
무료 버전 있음 (κΈ°λ³Έ νŠΈλž˜ν”½ μ œν•œ 있음)

βœ… Datadog

ν•­λͺ© μ„€λͺ…
μ—­ν•  μ„±λŠ₯ 뢄석 + 둜그 좔적 + Ajax 응닡 μ‹œκ°„ 좔적
νŠΉμ§• λΈŒλΌμš°μ € β†’ API 호좜 β†’ DBκΉŒμ§€ 전체 흐름 좔적 κ°€λŠ₯
μ‚¬μš© λͺ©μ  κΈ°μ—… μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§

βœ… NewRelic

ν•­λͺ© μ„€λͺ…
μ—­ν•  μ‚¬μš©μž λΈŒλΌμš°μ €μ—μ„œ λ°œμƒν•œ μ‹€μ œ μ„±λŠ₯ 데이터 μˆ˜μ§‘
νŠΉμ§• JS 였λ₯˜ + Ajax 타이밍 + λ„€νŠΈμ›Œν¬ 병λͺ©μ„ μ„Έμ…˜λ³„λ‘œ 기둝
κ³ κΈ‰ κΈ°λŠ₯ 전체 퍼널, μ‚¬μš©μž 행동 뢄석

βœ… 3. μ‹€μ œ Ajax μš”μ²­ 좔적 방식 (Sentry κΈ°μ€€)


πŸ“¦ μ„€μΉ˜

npm install @sentry/browser

πŸ“¦ μ„€μ • μ½”λ“œ

import * as Sentry from "@sentry/browser";

Sentry.init({
  dsn: "https://YOUR_PROJECT_ID@sentry.io/YOUR_ID",
  tracesSampleRate: 1.0 // Ajax 속도 좔적도 포함
});

πŸ“¦ Ajax μš”μ²­ μžλ™ 좔적

SentryλŠ” fetch, XHR μš”μ²­μ—μ„œ μ•„λž˜ 정보 좔적:

ν•­λͺ© μ„€λͺ…
μš”μ²­ URL 어디에 λ³΄λƒˆλŠ”μ§€
응닡 μ½”λ“œ 500, 404, 200 λ“±
응닡 μ‹œκ°„ μ–Όλ§ˆλ‚˜ κ±Έλ ΈλŠ”μ§€
μ‹€νŒ¨ μ—¬λΆ€ μ‹€νŒ¨ν•˜λ©΄ μ¦‰μ‹œ μ•Œλ¦Ό 전솑
μ‚¬μš©μž μ„Έμ…˜ λˆ„κ°€ μš”μ²­ν–ˆλŠ”μ§€ (IP, λΈŒλΌμš°μ € 정보 λ“±)

βœ… 4. μ‚¬μš©μž μ„Έμ…˜λ³„ Ajax 병λͺ© 뢄석


πŸ‘¦πŸ» μ‰¬μš΄ μ„€λͺ…

β€œν™κΈΈλ™μ΄λΌλŠ” μ‚¬μš©μžκ°€ μ–΄λ–€ νŽ˜μ΄μ§€μ—μ„œ Ajax μš”μ²­μ„ λ³΄λƒˆκ³ , 그게 μ™œ λŠλ ΈλŠ”μ§€β€λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λ³Ό 수 μžˆμ–΄μš”.


Datadog/NewRelic μ˜ˆμ‹œ

  1. μ‚¬μš©μžκ°€ /products νŽ˜μ΄μ§€ μ§„μž…
  2. GET /api/products μš”μ²­ 보냄 β†’ TTFB 3000ms
  3. 응닡 느림 β†’ μžλ™ 둜그 μ €μž₯ + κ²½κ³  λ°œμƒ
  4. κ°œλ°œμžλŠ” β€œμ–΄λŠ μ‚¬μš©μž, μ–΄λŠ μš”μ²­, μ–΄λŠ μ‹œμ β€μ—μ„œ λ¬Έμ œκ°€ μžˆμ—ˆλŠ”μ§€ μ •ν™•νžˆ 확인 κ°€λŠ₯

βœ… λ‘œκΉ… 포함 ν•­λͺ©

ν•­λͺ© μ„€λͺ…
sessionId μ‚¬μš©μž ꡬ뢄
pagePath μ–΄λŠ νŽ˜μ΄μ§€μ—μ„œ λ°œμƒν–ˆλŠ”κ°€
fetchUrl μ–΄λ–€ APIλ₯Ό ν˜ΈμΆœν–ˆλŠ”κ°€
method GET, POST λ“±
status 200, 500 λ“±
duration 응닡 μ‹œκ°„ (ms)
errorMessage μ‹€νŒ¨ μ‹œ λ©”μ‹œμ§€
timestamp λ°œμƒ μ‹œκ° (ISO)

βœ… 5. 직접 μ»€μŠ€ν…€ λ‘œκΉ…λ„ κ°€λŠ₯

function logAjaxError(info) {
  fetch("/log", {
    method: "POST",
    body: JSON.stringify({
      sessionId: getSessionId(),
      url: info.url,
      status: info.status,
      time: new Date().toISOString(),
      error: info.message
    }),
    headers: { "Content-Type": "application/json" }
  });
}


βœ… 6. λ©΄μ ‘ 질문 μ˜ˆμ‹œ + ν•΄μ„€


❓ Q. ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ Ajax μš”μ²­ 였λ₯˜λ‚˜ 병λͺ©μ„ μ–΄λ–»κ²Œ μΆ”μ ν•˜μ‹œλ‚˜μš”?

βœ… A.


βœ… 전체 μš”μ•½ μΉ΄λ“œ

ν•­λͺ© μ„€λͺ…
Sentry Ajax 였λ₯˜ μ‹€μ‹œκ°„ 좔적 + JS 였λ₯˜
Datadog λΈŒλΌμš°μ € ~ μ„œλ²„ ~ DB 전체 μ„±λŠ₯ 좔적
NewRelic μ‚¬μš©μž 행동/μ„Έμ…˜λ³„ μ‹€μ‹œκ°„ 좔적
μ£Όμš” 좔적 μ§€ν‘œ URL, 응닡 μ½”λ“œ, TTFB, μ‹€νŒ¨ λ©”μ‹œμ§€
μ„Έμ…˜ 기반 뢄석 μ‚¬μš©μž 별 μš”μ²­ 흐름 + 병λͺ© ꡬ간 μ‹œκ°ν™”