Tech 세미나: 웹 프론트엔드 성능 최적화 방법 및 적용 사례

Joni·2023년 6월 25일
0

WebFE

목록 보기
1/1
post-thumbnail

세션1. 웹 프론트엔드 성능 최적화를 해야하는 당위성

웹 성능 최적화를 수행하는 이유

  • 서비스 관점에서도 웹 성능 최적화는 중요하다. (로딩시간, 이탈률)

    • 백엔드 개발자, 디자이너, PM도 웹 성능 최적화를 알아야 한다.
  • Site speed improvement of just 0.1s leads to an increase in conversion rates & average order value

  • 속도 정의 (=Core Web Vitals)

    • LCP (Largest Contentful Paint)
    • FID (First Input Delay) → 대체 → INP (page’s overall responsiveness)
    • CLS (Cumulative Layout Shift)
  • 속도 측정 도구

  • 사용자의 데이터 (RUM)

  • 발표자 분은 웹 페이지 테스트 라는 것을 주로 사용

  • RUM에서는 web-vitals JS를 주로 사용


웹 성능 최적화 방법

  1. LCP Optimization
    a. LCP 자원(이미지 파일)이 HTML에서 빨리 찾아져야 한다.
    b. LCP 자원이 우선시 되어서 다운로드 돼야 한다.
    c. CDN 사용 (TTFD 자원)

  2. CLS Optimization
    a. 동적으로 크기가 할당되는 것들에 사이즈를 fix 해주자
    b. animations/transition 사용을 피하자
    c. bfcache를 사용하자

  3. FID Optimization
    a. 긴 작업을 피하거나 분할하자
    b. 불필요한 JavaScript 사용을 피하자
    c. 대규모 렌더링 업데이트를 피하자

세션2. ifland 웹 프론트엔드 성능 최적화 적용 사례

ifland 및 ifland studio 소개

  • Social Metaverse Service
  • ifland studio
    • ifland에서 아바타(ifme) 의상을 만들 수 있는 곳

ifland studio 웹 성능 최적화 사례 공유

  • 앱 성능 최적화 대상 페이지는?
    - 사용자들이 가장 많이 사용하고, 서비스의 진입점인 home(메인 페이지)

웹 성능 최적화 경험 및 팁 공유

  • WebPageTest랑 Google Lighthouse 주로 사용

< 문제 상황 >

  1. Render Blocking Resource 다수 존재 (이미지 로딩이 느리다.)

💡 불필요 스크립트 제거 및 스크립트 로딩 옵션 지정을 통한 render blocking 요소 제거 (ex. defer 사용)

  1. 이미지 용량 문제

💡 WebP, AVIF가 PNG,JPEG에 비해 압축률 우수

  1. 해상도에 맞지 않는 이미지 사용, 즉 Desktop과 Mobile 공통 이미지 사용

💡 picture source 태그를 사용하여 Desktop과 Mobile 별도 이미지 적용

  1. 네트워크 요청 낭비 (페이지 로딩시 불필요한 이미지 한번에 로드)

💡 메인 이미지 제외한 이미지에 대해 lazy loading 적용
불필요한 네트워크량 감소를 위해 페이지 초기 로드시 이미지 요청 수 20개에서 2개로 감소

  1. 메인 이미지가 늦게 로드 (LCP. UX 영향)

💡 메인 이미지 Preload 적용하여 로딩속도 개선

  1. 모바일 해상도에서 Header 아이콘 및 로고 이미지 늦게 로드 (UX)

💡 Header 아이콘을 html 내 inline svg로 추가, 로고 이미지 preload 추가

  1. CSS, JS 용량 감소 여지 존재

💡 CSS, JS gzip, minify 작업 → 서버 네트워크 요청 용량 감소

  1. 화면 영역에 불필요한 움직임 존재

💡 CSS 수정을 통해 CLS 수치 0으로 개선 (콘텐츠 로드 부분 영역 확보)

  1. html, JS 중복 코드 발견 (Desktop, Mobile)

💡 코드 개선을 통한 소스 경량화

  1. 재방문자 페이지 접속시간 단축 개선점 발견

💡 백엔드에서 브라우저 캐싱 설정 (Request header 옵션 추가)

[ 결과 ]


[ Lessons learned & tips ]

  1. Script에 옵션 추가 (defer, async)
  2. WebP, AVIF 이미지 포멧 적용
  3. Image lazy loading 적용
  4. 리소스 Preload 옵션 적용
  5. 개발코드는 작품을 만들 수 있지만, 부채가 될 수도 있음 (항상 경량화를 염두)
  6. CWV 개선은 지속적인 노력이 요구되는 작업
  7. 웹과 그를 위한 기술은 지속적으러 변화하고 발전함

[ Conclusion ]

  1. 웹 프론트엔드 개발자는 웹 성능 개선을 통해 서비스 향상에 크게 기여할 수 있다.
  2. 웹 프론트엔드 성능 개선은 비즈니스 관점에서 상당히 중요하다. (로딩 시간이 길면 사용자는 이탈한다.)
  3. 사용자 중심으로 사이트를 지속적으로 개선하는 문화를 만들 필요가 있다.
  4. 측정 가능한 지표를 정의하고 목표를 설정하고 달성하는 일은 재미있다.

자료

발표자료

테크 세미나 다시보기

profile
안녕하세요 개발 공부하는 joni 입니다 :)

0개의 댓글

관련 채용 정보