웹에 빠른 날개를 달아주는 웹 성능 향상 이야기

Brandon Kang
Brandon KangService Platform Architect
강상진
sangjinn@gmail.com
웹에 날개를 달아주는
웹 성능 최적화 기법
강사 소개
소개
- 강상진.
- 현) Akamai 클라우드 아키텍트(클라우드, 웹 성능, 보안, 스트리밍, ..)
- 전) Microsoft 소프트웨어 연구소 책임연구원
- 전) 삼성SDS 솔루션 개발센터 선임연구원
- 전) 성결대학교 미디어 소프트웨어 학과 겸임교수(객체지향 프로그래밍)
- 과기부 S/W Maestro 과정 기술 멘토
- 경기창조경제혁신센터 스타트업 IT기술 멘토
- 한국콘텐츠진흥원 문화 콘텐트 R&D과제 평가위원
- 테크유람 블로거 https://blog.naver.com/techtrip
- IT 도서 저자
인터넷 속도의 향상
우리나라는?
웹의 무게도 지속적으로 증가
빠른 인터넷 속도 ≠ 빠른 웹
빠른 웹이 중요한 이유
https://walmart.com/
웹 성능을 측정하는 방법
Google Core Web Vitals (CrUX)
웹 성능을 측정하는 방법
Google Lighthouse
웹 성능을 측정하는 방법
Chrome - 개발자도구
웹 성능을 측정하는 방법
Chrome - 개발자도구
웹 성능을 측정하는 방법
Chrome - 개발자도구
웹 성능을 측정하는 방법
(WPT: WebPageTest.org)
어느 구간을 개선할 것인가?
DNS time TCP연결 TLS연결 TTFB Download Rendering
백엔드 시간 프런트엔드 시간
사용자가 URL을 요청 하는 즉시 백그라운드(서버)에서 수행되는 모든 프로세스가 포함 • 실제 사용자가 웹 페이지를 볼 수 있도록 컨텐츠들을 로딩 하는데 걸리는 시간
• DOM Loading Time / DOM complete time / First Paint / FCP / LCP 등
다양한 Metric 이 front-end Time 의 지표에 포함됨.
• LCP(Largest Contentful Paint) 는 실제 사용자의 체감 성능을 측정 하는
지표로 가장 많이 사용됨.
어느 구간을 개선할 것인가?
백엔드 프런트엔드
| 렌더링 완료
백엔드 프런트엔드
어느 구간을 개선할 것인가?
Back-End Time
First Contentful Paint (FCP)
Largest Contentful Paint(LCP)
Page Load Time (PLT)
Loading…
FID(First Input Delay)
측정과 분석의 시작
성능 측정 툴 분류 RUM(Real User Monitoring) Synthetic Tool
클라이언트
종류
실제 사용자 계측용 서버(Agent 기반)
클라이언트
위치
전체 사용자 위치
계측용 서버 설치 위치
(Node 가 없는 지역 많음)
측정 빈도 사용자 접근 시 마다
대상 Page에 대해 10회 측정 후
평균 값 적용
측정 방법 사용자 접근 시 마다 Script 생성
측정 Metric
다양한 Metric 제공
주로 Core Web Vital값 혹은 Page Load Time)
Page Load Time & LCP
한계
1. Transaction Time 을 알기 어려움.
2. 신규 페이지 오픈 전 성능 테스트 불가
1. 성능 측정 클라이언트의 위치가 벤더 사의 서버
설치 위치에 의존.
2. 실제 사용자가 느끼는 성능과 차이가 있음.
3. 제공하는 성능 Metric 이 제한적.
4. 성능과 비즈니스간의 연관 분석 불가.
5. 다양한 사용자 별 성능 측정 어려움
성능 개선 방안
HOW FAST AM I? HOW FAST DO I NEED TO BE?
현재 사이트의 지연
요소를 찾아낸다
HOW DO I GET THERE?
비즈니스 영향도를
계산한다
진단하여 우선 개선할
점을 찾는다
웹 사이트 성능 측정
75p
75p
75p
비즈니스 지표
Guide < 1s < 4s < 5s
< 0.1 < 100ms < 2.5s
75p
웹 성능 지표
특정 페이지
그룹이 느림
트래픽이 높은
페이지 파악
성능 KPI는 무엇으로?
웹 사이트 성능 측정
LCP (6.5s) PLT(15s) PLT(12s)
LCP (3s)
Back-end
Video Video
JavaScript
JavaScript
Back-end가 bottleneck JavaScript가 bottleneck
프런트엔드(Frontend) 최적화
실제 사용자 환경
(네트워크, 디바이스, 브라우저, …)에 알맞은 최적화
프런트엔드(Frontend) 최적화
• 스크립트 병합 (script combination)
• 스크립트 최소화 (script minification)
• 스크립트 압축 전달 (gzip Encoding)
• 브라우저 이미지 형식 최적화 (e.g. WebP)
• 이미지 (비)손실 압축 (compression)
• 브라우저 캐시 사용 (cache-control 헤더)
• DNS 조회 최소화
• DNS 정보 미리 읽어오기 (DNS prefetching)
• CSS/JS 위치 조절 (Top/Bottom)
• 페이지 미리 읽어오기 (page prefetching)
• 서드 파티(3rd party) 스크립트 조정
• …
기본적인 네 가지 최적화 방안
• 요청과 응답 회수가 적어야 한다. (less round-trip)
• 콘텐츠의 크기(file size)는 작아야 한다. (smaller size)
• 최대한 캐싱한다. (cache as much as possible)
• 사용자 환경에 최적화된 콘텐츠를 보여준다. (optimize)
기본적인 네 가지 최적화 방안
• 요청과 응답 회수가 적어야 한다 (least RTT)
→ 이미지 스프라이트, 서버 푸시, 불필요한 호출 제어
• 콘텐츠의 크기는 작아야 한다 (least size)
→ 압축(brotli), 스크립트 minify, WebP, AVIF
• 최대한 캐싱(caching) 한다
→ CDN, 브라우저, WebView, ..
스크립트 최적화
• 사용하지 않는 불필요한 스크립트로 인한 바이트 낭비 최소화
• Chrome ­ 개발자 도구 ­ Coverage 모듈
스크립트 최적화
• 스크립트 최소화 13,292 라인, 462kb -> 8 라인, 277kb
• 스크립트 압축
이미지 최적화
• 이미지 압축(불필요한 메타데이터 제거)
JPG 원본 이미지 크기: 5.8MB 이미지 압축 후 이미지 크기: 2.6MB
이미지 최적화
• 최적의 이미지 형식
JPG 원본 이미지 크기: 5.8MB 이미지 압축 후 이미지 크기: 2.6MB AVIF로 변환 후 이미지 크기: 1.87MB
이미지 최적화
• 최적의 이미지 형식
이미지 최적화
• 최적의 이미지 형식
전송 최적화
• 전달 구간 전반에서 캐싱(caching)의 활용
원본 웹 서버
CDN 중계 서버
CDN 캐싱 서버
CDN 캐싱 서버
CDN 캐싱 서버
CDN 캐싱 서버
CDN 캐싱 서버
브라우저 캐싱
브라우저 캐싱
브라우저 캐싱
브라우저 캐싱
브라우저 캐싱
브라우저 캐싱
브라우저 캐싱
브라우저 캐싱
웹 성능 개선 사례
• Repeat View 느림
• LTE에서 측정한 LCP가 5.113초에 달함
• 첫 HTML 응답이 느림
• 대역폭 정상 / CPU Intensive 발견
• 웹 폰트를 로딩 후반에 다운로드(PC와 다름)
웹 성능 개선 사례
• 상당 수의 웹 폰트 파일
웹 성능 개선 사례
• 사용중인 도메인으로 인한 DNS 조회 증가 (with small DNS TTL)
• 내부 도메인으로 합병
• 가중치가 적은 도메인 삭제
fonts.gstatic.com (117 requests)
example.jp (56 requests)
example. example.net (15 requests)
www.google-analytics.com (7 requests)
www.google.com (5 requests)
api. example.com (4 requests)
example2. example2.net (4 requests)
www.googletagmanager.com (3 requests)
www.gstatic.com (3 requests)
fonts.googleapis.com (2 requests)
connect.facebook.net (2 requests)
googleads.g.doubleclick.net (2 requests)
www.google.com.sg (2 requests)
www.facebook.com (2 requests)
www.googleadservices.com (1 request)
stats.g.doubleclick.net (1 request)
s. example.jp (1 request)
example.yahoo.co.jp (1 request)
웹 성능 개선 사례
• CDN에서 캐싱하지 않는 SVG(Scalable Vector Graphics) 파일
• 브라우저 캐싱을 충실히 사용하지 않음
웹 성능 개선 사례
• gzip보다 압축률이 우수한 brotli 알고리즘 사용을 권고 (일부 발췌)
URL 현재 크기(gzip) Brotli 크기 비교
https://example.com/ 225 KB 77.2 KB -148 KB
https://example.com/_next/s%20...%20es/_app-
1d39ec2daa3c18ff.js
140 KB
127 KB
-12.3 KB
https://example.com/_next/s%20...%20fc48cbd-
b6be2ef3b0837285.js
91.7 KB 80.8 KB -11.0 KB
https://example.com/_next/s%20...%20a88be26-
d6bb8f1b57ccf153.js
68.1 KB 61.4 KB -6.7 KB
https://example.com/_next/s%20...%20ks/5529.d1217bf69
375fb8a.js
791 bytes/
451 bytes
396 bytes -395 bytes
https://example.com/images/svg/ico_head_menu.svg
500 bytes/
306 bytes
258 bytes -242 bytes
https://example.com/images/svg/ico_head_library.svg
434 bytes/
251 bytes
226 bytes -208 bytes
웹 성능 개선 사례
• API 호출과 응답에 대한 최적화
• API 결과에 대한 CDN 캐싱
• API 응답 가속
• Gzip 압축에서 Brotli 압축으로 권고
웹 성능 개선 사례
• 웹 폰트 최적화
Anti-Pattern Best Practice
웹 성능 개선 사례
• 웹 폰트 최적화
웹 성능 개선 사례
• 웹 폰트 최적화 ­ 사용하지 않는 글립에 대한 삭제 및 자체 폰트로 전환
웹 성능 개선 사례
• 이미지 최적화
Input (JPEG)
Chrome (AVIF) - Perceptual Quality
- Medium High
WebP reduction
1
https://image.example.com/?view=2b5
d1a00de42413b0b3b1261e8bf42ef58
2695947b23c0ad38
Byte savings: 59.92%
(66.54 KB vs. 166.02 KB)
Quality: 87
Content-Type: image/avif
91908/170009
46% reduction
2
https://image.example.com/?view=3b0
ff26af729c7fe30a80f04900e2b382c4d
94c761ba4931d3
Byte savings: 53.95%
(60.83 KB vs. 132.09 KB)
Quality: 86
Content-Type: image/avif
83846/135263
38% reduction
3
https://image.example.com/?view=d9e
7517d365c120ba4860574073dfb3a4d
053245ae8c3310eb
Byte savings: 60.53%
(55 KB vs. 139.34 KB)
Quality: 87
Content-Type: image/avif
77462/142685
46% reduction
웹 성능 개선 사례
• Lighthouse를 사용한 개선 전후의 비교
- 감사합니다. -
1 of 43

Recommended

서버학개론(백엔드 서버 개발자를 위한) by
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
29.6K views31 slides
[2018] 프런트엔드 성능 최적화 by
[2018] 프런트엔드 성능 최적화[2018] 프런트엔드 성능 최적화
[2018] 프런트엔드 성능 최적화NHN FORWARD
2.6K views73 slides
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 by
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020Jinwoong Kim
381 views49 slides
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 by
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
1.7K views49 slides
practical perf testing - d2startup by
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startupJunHo Yoon
2.1K views58 slides
[PYCON Korea 2018] Python Application Server for Recommender System by
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System Kwangseob Kim
2K views57 slides

More Related Content

Similar to 웹에 빠른 날개를 달아주는 웹 성능 향상 이야기

대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr... by
대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...
대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...Amazon Web Services Korea
239 views38 slides
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬 by
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬Amazon Web Services Korea
36.8K views71 slides
SQream DB, GPU-accelerated data warehouse by
SQream DB, GPU-accelerated data warehouseSQream DB, GPU-accelerated data warehouse
SQream DB, GPU-accelerated data warehouseNAVER Engineering
1.3K views46 slides
네트워킹과 웹 성능 최적화 by
네트워킹과 웹 성능 최적화네트워킹과 웹 성능 최적화
네트워킹과 웹 성능 최적화DataUs
107 views17 slides
모니터링 영역의 변천사_클라우드, 디지털 경험까지) by
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)IMQA
139 views114 slides
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레... by
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...BESPIN GLOBAL
605 views33 slides

Similar to 웹에 빠른 날개를 달아주는 웹 성능 향상 이야기(20)

대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr... by Amazon Web Services Korea
대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...
대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬 by Amazon Web Services Korea
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
SQream DB, GPU-accelerated data warehouse by NAVER Engineering
SQream DB, GPU-accelerated data warehouseSQream DB, GPU-accelerated data warehouse
SQream DB, GPU-accelerated data warehouse
NAVER Engineering1.3K views
네트워킹과 웹 성능 최적화 by DataUs
네트워킹과 웹 성능 최적화네트워킹과 웹 성능 최적화
네트워킹과 웹 성능 최적화
DataUs107 views
모니터링 영역의 변천사_클라우드, 디지털 경험까지) by IMQA
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
IMQA 139 views
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레... by BESPIN GLOBAL
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
BESPIN GLOBAL605 views
[Retail & CPG Day 2019] 리테일/소비재 부문의 고객 경험 강화를 위한 기술변화 방향과 고객 사례 (ZIGZAG) - 김선... by Amazon Web Services Korea
[Retail & CPG Day 2019] 리테일/소비재 부문의 고객 경험 강화를 위한 기술변화 방향과 고객 사례 (ZIGZAG) - 김선...[Retail & CPG Day 2019] 리테일/소비재 부문의 고객 경험 강화를 위한 기술변화 방향과 고객 사례 (ZIGZAG) - 김선...
[Retail & CPG Day 2019] 리테일/소비재 부문의 고객 경험 강화를 위한 기술변화 방향과 고객 사례 (ZIGZAG) - 김선...
기말레포트 by Miri Kim
기말레포트기말레포트
기말레포트
Miri Kim709 views
역삼역, 이마트 AI_v최종.pdf by DeukJin Jeon
역삼역, 이마트 AI_v최종.pdf역삼역, 이마트 AI_v최종.pdf
역삼역, 이마트 AI_v최종.pdf
DeukJin Jeon929 views
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드 by NAVER Engineering
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER Engineering4.1K views
타 게임사의 경험으로 본 AWS 핵심 모범 사례 한방에 배우기 - 이정훈 솔루션즈 아키텍트, AWS / 김지선 테크니컬 어카운트 매니저, ... by Amazon Web Services Korea
타 게임사의 경험으로 본 AWS 핵심 모범 사례 한방에 배우기 - 이정훈 솔루션즈 아키텍트, AWS / 김지선 테크니컬 어카운트 매니저, ...타 게임사의 경험으로 본 AWS 핵심 모범 사례 한방에 배우기 - 이정훈 솔루션즈 아키텍트, AWS / 김지선 테크니컬 어카운트 매니저, ...
타 게임사의 경험으로 본 AWS 핵심 모범 사례 한방에 배우기 - 이정훈 솔루션즈 아키텍트, AWS / 김지선 테크니컬 어카운트 매니저, ...
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017 by Amazon Web Services Korea
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
권기훈_개인포트폴리오 by Kihoon4
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오
Kihoon451 views
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017 by AWSKRUG - AWS한국사용자모임
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
빅데이터 기술 현황과 시장 전망(2014) by Channy Yun
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
Channy Yun19.9K views
ecdevday3 효율적인 유지보수를 위한 개발 및 관리 by Kenu, GwangNam Heo
ecdevday3 효율적인 유지보수를 위한 개발 및 관리ecdevday3 효율적인 유지보수를 위한 개발 및 관리
ecdevday3 효율적인 유지보수를 위한 개발 및 관리
Kenu, GwangNam Heo673 views
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀... by Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016 by Amazon Web Services Korea
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
Social Tutorial Platform: Webbles by Wonkyung Lyu
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
Wonkyung Lyu565 views
웹서버 부하테스트 실전 노하우 by IMQA
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우
IMQA 20K views

More from Brandon Kang

Web Performance Optimization with HTTP/3 by
Web Performance Optimization with HTTP/3Web Performance Optimization with HTTP/3
Web Performance Optimization with HTTP/3Brandon Kang
184 views37 slides
How to Replicate PostgreSQL Database by
How to Replicate PostgreSQL DatabaseHow to Replicate PostgreSQL Database
How to Replicate PostgreSQL DatabaseBrandon Kang
181 views13 slides
Scalability strategies for cloud based system architecture by
Scalability strategies for cloud based system architectureScalability strategies for cloud based system architecture
Scalability strategies for cloud based system architectureBrandon Kang
281 views39 slides
HTTP/3 시대의 웹 성능 최적화 기술 이해하기 by
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기Brandon Kang
6.1K views39 slides
수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019) by
수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019)수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019)
수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019)Brandon Kang
254 views37 slides
How to develop and localize Xbox 360 titles by
How to develop and localize Xbox 360 titlesHow to develop and localize Xbox 360 titles
How to develop and localize Xbox 360 titlesBrandon Kang
281 views41 slides

More from Brandon Kang(15)

Web Performance Optimization with HTTP/3 by Brandon Kang
Web Performance Optimization with HTTP/3Web Performance Optimization with HTTP/3
Web Performance Optimization with HTTP/3
Brandon Kang184 views
How to Replicate PostgreSQL Database by Brandon Kang
How to Replicate PostgreSQL DatabaseHow to Replicate PostgreSQL Database
How to Replicate PostgreSQL Database
Brandon Kang181 views
Scalability strategies for cloud based system architecture by Brandon Kang
Scalability strategies for cloud based system architectureScalability strategies for cloud based system architecture
Scalability strategies for cloud based system architecture
Brandon Kang281 views
HTTP/3 시대의 웹 성능 최적화 기술 이해하기 by Brandon Kang
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
Brandon Kang6.1K views
수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019) by Brandon Kang
수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019)수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019)
수요자 중심의 클라우드 운영 및 전략 (CIO Summit 2019)
Brandon Kang254 views
How to develop and localize Xbox 360 titles by Brandon Kang
How to develop and localize Xbox 360 titlesHow to develop and localize Xbox 360 titles
How to develop and localize Xbox 360 titles
Brandon Kang281 views
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구 by Brandon Kang
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
Akamai 서비스 트러블 슈팅 및 테스트 방법과 도구
Brandon Kang1.3K views
HTTP 프로토콜의 이해와 활용 by Brandon Kang
HTTP 프로토콜의 이해와 활용HTTP 프로토콜의 이해와 활용
HTTP 프로토콜의 이해와 활용
Brandon Kang180 views
HTTP/2와 웹 성능 최적화 방안 by Brandon Kang
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안
Brandon Kang3.9K views
Akamai Korea - Tech Day (2015/03/11) DNS by Brandon Kang
Akamai Korea - Tech Day (2015/03/11) DNSAkamai Korea - Tech Day (2015/03/11) DNS
Akamai Korea - Tech Day (2015/03/11) DNS
Brandon Kang1.4K views
Akamai Korea - Tech Day (2015/03/11) HTTP/2 by Brandon Kang
Akamai Korea - Tech Day (2015/03/11) HTTP/2Akamai Korea - Tech Day (2015/03/11) HTTP/2
Akamai Korea - Tech Day (2015/03/11) HTTP/2
Brandon Kang6.1K views
HTML5 for web app. development by Brandon Kang
HTML5 for web app. developmentHTML5 for web app. development
HTML5 for web app. development
Brandon Kang1.3K views
Agile - SCRUM을 통한 개발관리 by Brandon Kang
Agile - SCRUM을 통한 개발관리Agile - SCRUM을 통한 개발관리
Agile - SCRUM을 통한 개발관리
Brandon Kang13.4K views
XNA2.0 Network Programming by Brandon Kang
XNA2.0 Network ProgrammingXNA2.0 Network Programming
XNA2.0 Network Programming
Brandon Kang1.5K views

웹에 빠른 날개를 달아주는 웹 성능 향상 이야기

  • 2. 강사 소개 소개 - 강상진. - 현) Akamai 클라우드 아키텍트(클라우드, 웹 성능, 보안, 스트리밍, ..) - 전) Microsoft 소프트웨어 연구소 책임연구원 - 전) 삼성SDS 솔루션 개발센터 선임연구원 - 전) 성결대학교 미디어 소프트웨어 학과 겸임교수(객체지향 프로그래밍) - 과기부 S/W Maestro 과정 기술 멘토 - 경기창조경제혁신센터 스타트업 IT기술 멘토 - 한국콘텐츠진흥원 문화 콘텐트 R&D과제 평가위원 - 테크유람 블로거 https://blog.naver.com/techtrip - IT 도서 저자
  • 6. 빠른 인터넷 속도 ≠ 빠른 웹
  • 7. 빠른 웹이 중요한 이유 https://walmart.com/
  • 8. 웹 성능을 측정하는 방법 Google Core Web Vitals (CrUX)
  • 9. 웹 성능을 측정하는 방법 Google Lighthouse
  • 10. 웹 성능을 측정하는 방법 Chrome - 개발자도구
  • 11. 웹 성능을 측정하는 방법 Chrome - 개발자도구
  • 12. 웹 성능을 측정하는 방법 Chrome - 개발자도구
  • 13. 웹 성능을 측정하는 방법 (WPT: WebPageTest.org)
  • 14. 어느 구간을 개선할 것인가? DNS time TCP연결 TLS연결 TTFB Download Rendering 백엔드 시간 프런트엔드 시간 사용자가 URL을 요청 하는 즉시 백그라운드(서버)에서 수행되는 모든 프로세스가 포함 • 실제 사용자가 웹 페이지를 볼 수 있도록 컨텐츠들을 로딩 하는데 걸리는 시간 • DOM Loading Time / DOM complete time / First Paint / FCP / LCP 등 다양한 Metric 이 front-end Time 의 지표에 포함됨. • LCP(Largest Contentful Paint) 는 실제 사용자의 체감 성능을 측정 하는 지표로 가장 많이 사용됨.
  • 15. 어느 구간을 개선할 것인가? 백엔드 프런트엔드 | 렌더링 완료 백엔드 프런트엔드
  • 16. 어느 구간을 개선할 것인가? Back-End Time First Contentful Paint (FCP) Largest Contentful Paint(LCP) Page Load Time (PLT) Loading… FID(First Input Delay)
  • 17. 측정과 분석의 시작 성능 측정 툴 분류 RUM(Real User Monitoring) Synthetic Tool 클라이언트 종류 실제 사용자 계측용 서버(Agent 기반) 클라이언트 위치 전체 사용자 위치 계측용 서버 설치 위치 (Node 가 없는 지역 많음) 측정 빈도 사용자 접근 시 마다 대상 Page에 대해 10회 측정 후 평균 값 적용 측정 방법 사용자 접근 시 마다 Script 생성 측정 Metric 다양한 Metric 제공 주로 Core Web Vital값 혹은 Page Load Time) Page Load Time & LCP 한계 1. Transaction Time 을 알기 어려움. 2. 신규 페이지 오픈 전 성능 테스트 불가 1. 성능 측정 클라이언트의 위치가 벤더 사의 서버 설치 위치에 의존. 2. 실제 사용자가 느끼는 성능과 차이가 있음. 3. 제공하는 성능 Metric 이 제한적. 4. 성능과 비즈니스간의 연관 분석 불가. 5. 다양한 사용자 별 성능 측정 어려움
  • 18. 성능 개선 방안 HOW FAST AM I? HOW FAST DO I NEED TO BE? 현재 사이트의 지연 요소를 찾아낸다 HOW DO I GET THERE? 비즈니스 영향도를 계산한다 진단하여 우선 개선할 점을 찾는다
  • 19. 웹 사이트 성능 측정 75p 75p 75p 비즈니스 지표 Guide < 1s < 4s < 5s < 0.1 < 100ms < 2.5s 75p 웹 성능 지표 특정 페이지 그룹이 느림 트래픽이 높은 페이지 파악 성능 KPI는 무엇으로?
  • 20. 웹 사이트 성능 측정 LCP (6.5s) PLT(15s) PLT(12s) LCP (3s) Back-end Video Video JavaScript JavaScript Back-end가 bottleneck JavaScript가 bottleneck
  • 21. 프런트엔드(Frontend) 최적화 실제 사용자 환경 (네트워크, 디바이스, 브라우저, …)에 알맞은 최적화
  • 22. 프런트엔드(Frontend) 최적화 • 스크립트 병합 (script combination) • 스크립트 최소화 (script minification) • 스크립트 압축 전달 (gzip Encoding) • 브라우저 이미지 형식 최적화 (e.g. WebP) • 이미지 (비)손실 압축 (compression) • 브라우저 캐시 사용 (cache-control 헤더) • DNS 조회 최소화 • DNS 정보 미리 읽어오기 (DNS prefetching) • CSS/JS 위치 조절 (Top/Bottom) • 페이지 미리 읽어오기 (page prefetching) • 서드 파티(3rd party) 스크립트 조정 • …
  • 23. 기본적인 네 가지 최적화 방안 • 요청과 응답 회수가 적어야 한다. (less round-trip) • 콘텐츠의 크기(file size)는 작아야 한다. (smaller size) • 최대한 캐싱한다. (cache as much as possible) • 사용자 환경에 최적화된 콘텐츠를 보여준다. (optimize)
  • 24. 기본적인 네 가지 최적화 방안 • 요청과 응답 회수가 적어야 한다 (least RTT) → 이미지 스프라이트, 서버 푸시, 불필요한 호출 제어 • 콘텐츠의 크기는 작아야 한다 (least size) → 압축(brotli), 스크립트 minify, WebP, AVIF • 최대한 캐싱(caching) 한다 → CDN, 브라우저, WebView, ..
  • 25. 스크립트 최적화 • 사용하지 않는 불필요한 스크립트로 인한 바이트 낭비 최소화 • Chrome ­ 개발자 도구 ­ Coverage 모듈
  • 26. 스크립트 최적화 • 스크립트 최소화 13,292 라인, 462kb -> 8 라인, 277kb • 스크립트 압축
  • 27. 이미지 최적화 • 이미지 압축(불필요한 메타데이터 제거) JPG 원본 이미지 크기: 5.8MB 이미지 압축 후 이미지 크기: 2.6MB
  • 28. 이미지 최적화 • 최적의 이미지 형식 JPG 원본 이미지 크기: 5.8MB 이미지 압축 후 이미지 크기: 2.6MB AVIF로 변환 후 이미지 크기: 1.87MB
  • 31. 전송 최적화 • 전달 구간 전반에서 캐싱(caching)의 활용 원본 웹 서버 CDN 중계 서버 CDN 캐싱 서버 CDN 캐싱 서버 CDN 캐싱 서버 CDN 캐싱 서버 CDN 캐싱 서버 브라우저 캐싱 브라우저 캐싱 브라우저 캐싱 브라우저 캐싱 브라우저 캐싱 브라우저 캐싱 브라우저 캐싱 브라우저 캐싱
  • 32. 웹 성능 개선 사례 • Repeat View 느림 • LTE에서 측정한 LCP가 5.113초에 달함 • 첫 HTML 응답이 느림 • 대역폭 정상 / CPU Intensive 발견 • 웹 폰트를 로딩 후반에 다운로드(PC와 다름)
  • 33. 웹 성능 개선 사례 • 상당 수의 웹 폰트 파일
  • 34. 웹 성능 개선 사례 • 사용중인 도메인으로 인한 DNS 조회 증가 (with small DNS TTL) • 내부 도메인으로 합병 • 가중치가 적은 도메인 삭제 fonts.gstatic.com (117 requests) example.jp (56 requests) example. example.net (15 requests) www.google-analytics.com (7 requests) www.google.com (5 requests) api. example.com (4 requests) example2. example2.net (4 requests) www.googletagmanager.com (3 requests) www.gstatic.com (3 requests) fonts.googleapis.com (2 requests) connect.facebook.net (2 requests) googleads.g.doubleclick.net (2 requests) www.google.com.sg (2 requests) www.facebook.com (2 requests) www.googleadservices.com (1 request) stats.g.doubleclick.net (1 request) s. example.jp (1 request) example.yahoo.co.jp (1 request)
  • 35. 웹 성능 개선 사례 • CDN에서 캐싱하지 않는 SVG(Scalable Vector Graphics) 파일 • 브라우저 캐싱을 충실히 사용하지 않음
  • 36. 웹 성능 개선 사례 • gzip보다 압축률이 우수한 brotli 알고리즘 사용을 권고 (일부 발췌) URL 현재 크기(gzip) Brotli 크기 비교 https://example.com/ 225 KB 77.2 KB -148 KB https://example.com/_next/s%20...%20es/_app- 1d39ec2daa3c18ff.js 140 KB 127 KB -12.3 KB https://example.com/_next/s%20...%20fc48cbd- b6be2ef3b0837285.js 91.7 KB 80.8 KB -11.0 KB https://example.com/_next/s%20...%20a88be26- d6bb8f1b57ccf153.js 68.1 KB 61.4 KB -6.7 KB https://example.com/_next/s%20...%20ks/5529.d1217bf69 375fb8a.js 791 bytes/ 451 bytes 396 bytes -395 bytes https://example.com/images/svg/ico_head_menu.svg 500 bytes/ 306 bytes 258 bytes -242 bytes https://example.com/images/svg/ico_head_library.svg 434 bytes/ 251 bytes 226 bytes -208 bytes
  • 37. 웹 성능 개선 사례 • API 호출과 응답에 대한 최적화 • API 결과에 대한 CDN 캐싱 • API 응답 가속 • Gzip 압축에서 Brotli 압축으로 권고
  • 38. 웹 성능 개선 사례 • 웹 폰트 최적화 Anti-Pattern Best Practice
  • 39. 웹 성능 개선 사례 • 웹 폰트 최적화
  • 40. 웹 성능 개선 사례 • 웹 폰트 최적화 ­ 사용하지 않는 글립에 대한 삭제 및 자체 폰트로 전환
  • 41. 웹 성능 개선 사례 • 이미지 최적화 Input (JPEG) Chrome (AVIF) - Perceptual Quality - Medium High WebP reduction 1 https://image.example.com/?view=2b5 d1a00de42413b0b3b1261e8bf42ef58 2695947b23c0ad38 Byte savings: 59.92% (66.54 KB vs. 166.02 KB) Quality: 87 Content-Type: image/avif 91908/170009 46% reduction 2 https://image.example.com/?view=3b0 ff26af729c7fe30a80f04900e2b382c4d 94c761ba4931d3 Byte savings: 53.95% (60.83 KB vs. 132.09 KB) Quality: 86 Content-Type: image/avif 83846/135263 38% reduction 3 https://image.example.com/?view=d9e 7517d365c120ba4860574073dfb3a4d 053245ae8c3310eb Byte savings: 60.53% (55 KB vs. 139.34 KB) Quality: 87 Content-Type: image/avif 77462/142685 46% reduction
  • 42. 웹 성능 개선 사례 • Lighthouse를 사용한 개선 전후의 비교