본문 바로가기
IT정보

웹 성능 최적화 기법 가이드

by 오늘의 테크 2025. 8. 18.

성능 측정 지표

Core Web Vitals (구글 핵심 웹 바이탈)

LCP (Largest Contentful Paint)

  • 가장 큰 콘텐츠 요소 렌더링 시간
  • 목표: 2.5초 이내
  • 개선: 이미지 최적화, 서버 응답 시간 단축

FID (First Input Delay)

  • 첫 번째 상호작용 응답 시간
  • 목표: 100ms 이내
  • 개선: JavaScript 실행 시간 최적화

CLS (Cumulative Layout Shift)

  • 예상치 못한 레이아웃 변경
  • 목표: 0.1 이하
  • 개선: 이미지/광고 크기 명시, 폰트 로딩 최적화

기타 중요 지표

TTFB (Time to First Byte): 서버 응답 속도 FCP (First Contentful Paint): 첫 콘텐츠 렌더링 TTI (Time to Interactive): 페이지 상호작용 가능 시점

이미지 최적화

포맷 선택

WebP: PNG보다 26% 작고 JPEG보다 25-35% 작음 AVIF: WebP보다 50% 더 작은 차세대 포맷 SVG: 벡터 이미지, 확대해도 깨지지 않음

최적화 기법

적절한 크기: 표시될 크기에 맞춰 리사이징 압축: 품질과 파일 크기 균형점 찾기 Lazy Loading: 화면에 보일 때만 로드 Responsive Images: 디바이스별 최적 이미지 제공

구현 방법

<!-- 반응형 이미지 -->
<picture>
  <source srcset="image.webp" type="image/webp">
  <source srcset="image.jpg" type="image/jpeg">
  <img src="image.jpg" alt="설명" loading="lazy">
</picture>

JavaScript 최적화

번들 최적화

코드 스플리팅: 필요한 시점에 코드 로드 Tree Shaking: 사용하지 않는 코드 제거 번들 분석: webpack-bundle-analyzer로 크기 분석

실행 최적화

비동기 로딩: async/defer 속성 활용

<script src="essential.js"></script>
<script src="non-critical.js" defer></script>
<script src="analytics.js" async></script>

메인 스레드 최적화

  • 긴 작업을 청크로 분할 (requestIdleCallback)
  • Web Workers로 백그라운드 처리
  • 불필요한 재렌더링 방지

최적화 전략

Critical JavaScript: 초기 렌더링에 필요한 최소 코드만 Progressive Enhancement: 기본 기능부터 점진적 향상 서비스 워커: 캐싱과 오프라인 대응

CSS 최적화

렌더링 최적화

Critical CSS: 초기 화면에 필요한 CSS를 인라인으로 CSS 비동기 로딩: 중요하지 않은 CSS는 지연 로딩

<link rel="preload" href="critical.css" as="style">
<link rel="stylesheet" href="non-critical.css" media="print" onload="this.media='all'">

레이아웃 최적화

  • Flexbox/Grid 활용으로 효율적 레이아웃
  • position: absolute 남용 금지
  • will-change 속성 신중 사용

CSS 성능 개선

선택자 최적화: 복잡한 선택자 피하기 애니메이션 최적화: transform/opacity 속성 우선 사용 리플로우/리페인트 최소화: 스타일 변경 최적화

네트워크 최적화

HTTP/2 활용

멀티플렉싱: 여러 요청 동시 처리 서버 푸시: 필요한 리소스 미리 전송 헤더 압축: HPACK으로 헤더 크기 감소

리소스 힌트












압축과 최소화

Gzip/Brotli: 텍스트 파일 압축 (70-80% 크기 감소) Minification: 공백, 주석 제거 번들링: 여러 파일을 하나로 결합 (HTTP/1.1에서 유용)

캐싱 전략

브라우저 캐싱

Cache-Control 헤더

  • max-age: 캐시 유효 시간
  • immutable: 변경되지 않는 리소스
  • no-cache: 항상 서버 검증

ETag: 파일 변경 감지로 효율적 캐싱

CDN 활용

엣지 캐싱: 사용자와 가까운 서버에서 제공 정적 자산 분리: 이미지, CSS, JS를 CDN으로 캐시 무효화: 업데이트 시 즉시 반영

애플리케이션 레벨 캐싱

서비스 워커: 정교한 캐싱 전략 구현 메모리 캐싱: 계산 결과나 API 응답 캐시 로컬 스토리지: 사용자별 데이터 캐싱

폰트 최적화

폰트 로딩 전략

font-display 속성

  • swap: 대체 폰트 표시 후 웹폰트로 교체
  • fallback: 짧은 기다림 후 대체 폰트
  • optional: 네트워크 상태에 따라 결정

폰트 미리 로드

<link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin>

폰트 최적화

서브셋팅: 필요한 글자만 포함 WOFF2 사용: 가장 압축률 높은 포맷 시스템 폰트 활용: 로딩 없이 즉시 표시

서버 사이드 최적화

서버 응답 시간 개선

데이터베이스 최적화

  • 인덱스 최적화
  • 쿼리 성능 튜닝
  • 커넥션 풀 관리

API 최적화

  • GraphQL로 오버페칭 방지
  • 페이지네이션으로 데이터 분할
  • 캐싱 레이어 추가

SSR/SSG 활용

Server-Side Rendering: 초기 렌더링 속도 향상 Static Site Generation: 빌드 타임에 미리 생성 Incremental Static Regeneration: 필요시에만 재생성

성능 모니터링

측정 도구

Lighthouse: 종합적 성능 분석 WebPageTest: 상세한 로딩 과정 분석 Chrome DevTools: 실시간 성능 프로파일링

실제 사용자 모니터링 (RUM)

Web Vitals: 실사용자 성능 데이터 수집 Performance Observer: 브라우저 성능 API 활용

// Core Web Vitals 측정
import {getCLS, getFID, getFCP, getLCP, getTTFB} from 'web-vitals';

getCLS(console.log);
getFID(console.log);
getFCP(console.log);
getLCP(console.log);
getTTFB(console.log);

지속적 모니터링

성능 예산: 성능 기준 설정 및 CI/CD 통합 성능 회귀 감지: 배포 시 성능 저하 자동 감지 사용자 경험 지표: 비즈니스 임팩트 측정

모바일 최적화

모바일 퍼스트

반응형 디자인: 모바일부터 설계 터치 친화적: 버튼 크기, 간격 최적화 네트워크 고려: 느린 연결 환경 대비

Progressive Web App (PWA)

서비스 워커: 오프라인 대응, 백그라운드 동기화 웹 매니페스트: 네이티브 앱 같은 경험 푸시 알림: 사용자 재참여 유도

최적화 체크리스트

즉시 적용 가능

  • [ ] 이미지 포맷 최적화 (WebP, AVIF)
  • [ ] 이미지 lazy loading 적용
  • [ ] Gzip/Brotli 압축 활성화
  • [ ] CSS/JS 최소화
  • [ ] CDN 도입

중급 최적화

  • [ ] Critical CSS 인라인화
  • [ ] 코드 스플리팅 구현
  • [ ] 서비스 워커 도입
  • [ ] 폰트 최적화
  • [ ] HTTP/2 활성화

고급 최적화

  • [ ] 리소스 힌트 최적화
  • [ ] 번들 분석 및 최적화
  • [ ] 성능 모니터링 시스템 구축
  • [ ] SSR/SSG 도입
  • [ ] 마이크로 프론트엔드 적용

성능 목표 설정

업종별 권장 기준

전자상거래: LCP 1.5초, FID 50ms 뉴스/미디어: LCP 2.0초, CLS 0.05 SaaS 애플리케이션: TTI 3초, FID 100ms

비즈니스 임팩트

  • 페이지 로딩 1초 지연 → 전환율 7% 감소
  • 모바일 페이지 로딩 3초 초과 → 53% 이탈
  • Core Web Vitals 개선 → 검색 순위 상승

실무 적용 전략

단계별 접근

  1. 현재 상태 측정: Lighthouse, WebPageTest로 베이스라인 설정
  2. 우선순위 설정: 가장 임팩트 큰 항목부터 개선
  3. 점진적 개선: 작은 단위로 지속적 최적화
  4. 효과 측정: 개선 전후 성능 비교

팀 문화

성능 예산: 성능 기준을 개발 프로세스에 통합 지속적 모니터링: 성능 회귀 방지 시스템 구축 사용자 중심: 실제 사용자 경험 기반 의사결정

웹 성능 최적화는 사용자 경험과 비즈니스 성과에 직결되는 중요한 요소입니다.