logo

Week 6

서버 성능 최적화 / 프로파일링

2026-07-11 (토) · 미션 공개 + 주간 방향

어디 아픈가 보자 🩺

지난 주 돌아보기 — Week 5 동시성

항목 결과
제출률 {{N}}/{{M}} 명
잘된 점 음수 재고 직접 재현 후 락 적용
아쉬운 점 비관 vs 낙관 근거 가 "그냥"
이번 주 가져갈 것 측정 없이 최적화 X — 추측 금지

07-week6-profiling

  • type: code
  • 마감: 2026-07-17 (금) 23:59
  • 검증: PR → mission-guard CI → AI 리뷰
  • 통과 조건: 핵심 병목 1개+ 개선 증빙 + 우선순위 근거

"느리다 가 아니라 어디가 느린지 숫자 로 답하기."

비유 — 건강검진

이 아니라 혈액·X-ray·심전도 측정부터.

  • 병목 1 개를 수치 로 잡고
  • 임팩트 큰 것부터 고치고
  • 고친 후 다시 측정

"추측 금지, 측정만 신뢰."

이번 주 목표 🎯

  1. 프로파일러로 핫스팟 찾기 — async-profiler / VisualVM / JFR 중 1개
  2. 상위 3개 핫스팟 우선순위 — 임팩트·노력 매트릭스
  3. 1개 이상 개선 + before/after 표 — flamegraph 또는 latency 비교

프로파일러 — 무엇을 보는가

🔥 CPU       — 어떤 메서드가 가장 오래 도나
💧 메모리    — GC 빈도 / heap 사용량
🚪 IO        — 디스크/네트워크 대기
🎯 락 경합   — 동시성 대기 시간
flamegraph = 함수 호출 깊이를 _가로 막대_ 로
가장 _넓은_ 막대 = 가장 오래 걸린 함수

측정 도구 — 본인 선택

도구 장점 단점
async-profiler 빠름 / flamegraph CLI 학습
VisualVM GUI / 무료 무거움
JFR JVM 내장 / 가벼움 분석 별도 도구
JProfiler 강력 유료

sample 은 async-profiler. 본인이 다른 거 골라도 OK — 선택 근거 만.

우선순위 — 임팩트 × 노력

        임팩트 ↑
            │
   ┌────────┼────────┐
   │  먼저! │ 좋지만 │
   │  (큰 임팩트, │  (큰 임팩트,│
   │  적은 노력) │  큰 노력) │
   ├────────┼────────┤
   │  스킵  │  나중  │
   │  (작은) │  (큰 노력)│
   └────────┼────────┘
            │ 노력 →

핫스팟 3 개 중 먼저! 칸의 1 개를 evidence 에.

함정 — 흔한 실수

  • ❌ "느려요" 만 → ✅ "p99 1.2s, 평균 600ms" 수치 박기
  • ❌ 으로 최적화 → ✅ flamegraph 보고 증거
  • ❌ 1 개 고치고 다시 측정 안 함✅ before/after 모두 캡처
  • ❌ 모든 핫스팟 다 고치려 함 → ✅ 임팩트 큰 1 개
  • ❌ 프로덕션 live 에 프로파일러 강하게 켜기 → ✅ 샘플링 모드

이번 주 제출할 것 📦

07-week6-profiling/
├── report.md
├── project/                       # Spring Boot baseline
└── evidence/
    ├── profile-flamegraph.html    # 프로파일링 결과
    ├── bottlenecks.md             # 상위 3개 + 우선순위 근거
    ├── before-after-table.md      # 개선 전후 수치
    └── run-profiler.md            # 재현 명령

평가는 어떻게 (5축) 📊

가중 핵심
요구사항 충족 핫스팟 1+ 개선
구조 측정 → 분석 → 개선 → 재측정
기술 적용 ★★ 도구 선택 근거
검증 근거 ★★★ flamegraph + before/after
설명력 ★★ 우선순위 근거

이번 주 일정 📅

  • 제출 마감: 2026-07-17 (금) 23:59
  • 토 15:00–16:30: 격주 강의 — 프로파일링 / 측정 기반 최적화
  • 오피스아워: 화·목 21:00 {cohort}-질문 스레드

질문 ㄱㄱ ❓

이번 주 = "추측 → 측정"
다음 면접 = "성능 어떻게 개선?" 답할 수 있게

오늘 15:00 — 분산 추적의 세계 (Netflix·Uber 사례).