{"componentChunkName":"component---src-templates-blog-post-js","path":"/javascript/성능-최적화의-함정-Core-Web-Vitals-개선하다가-사용자-경험이-나빠진-케이스/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"de17218b-334f-5c07-8e5d-8027d06dfaf9","excerpt":"성능 최적화의 함정 Lighthouse 점수가 60점에서 95점으로 올라갔다. Core Web Vitals도 모두 “Good…","html":"<p><img src=\"/assets/javascript.png\" alt=\"성능 최적화의 함정\" title=\"성능 최적화의 함정\"></p>\n<p>Lighthouse 점수가 60점에서 95점으로 올라갔다. Core Web Vitals도 모두 “Good” 등급을 받았다. 하지만 사용자 불만은 오히려 증가했다. “앱이 이상해졌어요”, “기능이 작동하지 않아요”라는 피드백이 쏟아졌다. 이 글은 성능 점수에만 집중하다가 사용자 경험을 망친 실패의 기록이다.</p>\n<h2 id=\"시작-성능-최적화-프로젝트\" style=\"position:relative;\"><a href=\"#%EC%8B%9C%EC%9E%91-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8\" aria-label=\"시작 성능 최적화 프로젝트 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>시작: 성능 최적화 프로젝트</h2>\n<h3 id=\"왜-성능-최적화를-시작했나\" style=\"position:relative;\"><a href=\"#%EC%99%9C-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%96%88%EB%82%98\" aria-label=\"왜 성능 최적화를 시작했나 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>왜 성능 최적화를 시작했나</h3>\n<p>2025년 8월, 우리 웹사이트의 Lighthouse 점수가 60점이었다. 특히 성능 점수가 낮았다. “성능을 개선하면 사용자 경험이 좋아질 거야”라고 생각하며 성능 최적화 프로젝트를 시작했다.</p>\n<p>목표는 명확했다:</p>\n<ul>\n<li>Lighthouse 성능 점수: 60 → 90 이상</li>\n<li>LCP: 4초 → 2.5초 이하</li>\n<li>FID: 300ms → 100ms 이하</li>\n<li>CLS: 0.25 → 0.1 이하</li>\n</ul>\n<h3 id=\"초기-성공\" style=\"position:relative;\"><a href=\"#%EC%B4%88%EA%B8%B0-%EC%84%B1%EA%B3%B5\" aria-label=\"초기 성공 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>초기 성공</h3>\n<p>처음 한 달은 순조로웠다. 간단한 최적화만으로도 점수가 올라갔다.</p>\n<p><strong>1주차: 이미지 최적화</strong></p>\n<ul>\n<li>WebP 포맷으로 변환</li>\n<li>이미지 크기 최적화</li>\n<li>Lazy loading 적용</li>\n<li><strong>결과</strong>: Lighthouse 점수 60 → 75</li>\n</ul>\n<p><strong>2주차: 코드 스플리팅</strong></p>\n<ul>\n<li>동적 임포트 적용</li>\n<li>라우트 기반 코드 스플리팅</li>\n<li><strong>결과</strong>: Lighthouse 점수 75 → 85</li>\n</ul>\n<p><strong>3주차: 번들 최적화</strong></p>\n<ul>\n<li>Tree shaking 강화</li>\n<li>불필요한 의존성 제거</li>\n<li><strong>결과</strong>: Lighthouse 점수 85 → 90</li>\n</ul>\n<p>성공하는 것 같았다.</p>\n<h2 id=\"첫-번째-함정-과도한-코드-스플리팅\" style=\"position:relative;\"><a href=\"#%EC%B2%AB-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%BD%94%EB%93%9C-%EC%8A%A4%ED%94%8C%EB%A6%AC%ED%8C%85\" aria-label=\"첫 번째 함정 과도한 코드 스플리팅 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>첫 번째 함정: 과도한 코드 스플리팅</h2>\n<h3 id=\"모든-것을-스플리팅하다\" style=\"position:relative;\"><a href=\"#%EB%AA%A8%EB%93%A0-%EA%B2%83%EC%9D%84-%EC%8A%A4%ED%94%8C%EB%A6%AC%ED%8C%85%ED%95%98%EB%8B%A4\" aria-label=\"모든 것을 스플리팅하다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>모든 것을 스플리팅하다</h3>\n<p>점수가 올라가자 더 욕심이 생겼다. “모든 것을 스플리팅하면 더 빨라질 거야”라고 생각했다.</p>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token comment\">// 모든 컴포넌트를 동적 임포트</span>\n<span class=\"token keyword\">const</span> Button <span class=\"token operator\">=</span> <span class=\"token function\">lazy</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./Button'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> Input <span class=\"token operator\">=</span> <span class=\"token function\">lazy</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./Input'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> Modal <span class=\"token operator\">=</span> <span class=\"token function\">lazy</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./Modal'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// ... 수십 개의 컴포넌트</span></code></pre></div>\n<p>작은 컴포넌트까지 모두 스플리팅했다. 번들 크기는 줄었지만, 문제가 생겼다.</p>\n<h3 id=\"사용자-경험-악화\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98-%EC%95%85%ED%99%94\" aria-label=\"사용자 경험 악화 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 경험 악화</h3>\n<p><strong>문제 1: 깜빡임 현상</strong></p>\n<ul>\n<li>컴포넌트가 로드될 때마다 깜빡임 발생</li>\n<li>사용자가 불편함을 느낌</li>\n</ul>\n<p><strong>문제 2: 로딩 상태의 부재</strong></p>\n<ul>\n<li>작은 컴포넌트도 로딩 시간이 필요</li>\n<li>로딩 인디케이터가 없어서 사용자가 혼란스러움</li>\n</ul>\n<p><strong>문제 3: 네트워크 요청 증가</strong></p>\n<ul>\n<li>작은 컴포넌트마다 네트워크 요청 발생</li>\n<li>느린 네트워크에서는 오히려 느려짐</li>\n</ul>\n<h3 id=\"사용자-피드백\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1\" aria-label=\"사용자 피드백 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 피드백</h3>\n<p>“앱이 깜빡거려요.”\n“버튼을 눌렀는데 반응이 없어요.”\n“이전 버전이 더 나았어요.”</p>\n<p>성능 점수는 올랐지만, 사용자 경험이 나빠졌다.</p>\n<h2 id=\"두-번째-함정-과도한-이미지-최적화\" style=\"position:relative;\"><a href=\"#%EB%91%90-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%B5%9C%EC%A0%81%ED%99%94\" aria-label=\"두 번째 함정 과도한 이미지 최적화 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>두 번째 함정: 과도한 이미지 최적화</h2>\n<h3 id=\"모든-이미지를-webp로\" style=\"position:relative;\"><a href=\"#%EB%AA%A8%EB%93%A0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-webp%EB%A1%9C\" aria-label=\"모든 이미지를 webp로 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>모든 이미지를 WebP로</h3>\n<p>이미지 최적화도 과도하게 진행했다. 모든 이미지를 WebP로 변환하고, 품질을 최대한 낮췄다.</p>\n<p><strong>이전:</strong></p>\n<ul>\n<li>JPEG 품질: 85</li>\n<li>이미지 크기: 원본 유지</li>\n</ul>\n<p><strong>최적화 후:</strong></p>\n<ul>\n<li>WebP 품질: 60</li>\n<li>이미지 크기: 50% 축소</li>\n</ul>\n<p>파일 크기는 줄었지만, 이미지 품질이 떨어졌다.</p>\n<h3 id=\"사용자-불만\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C\" aria-label=\"사용자 불만 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 불만</h3>\n<p>“이미지가 흐릿해요.”\n“사진이 이상해 보여요.”\n“이전 버전이 더 선명했어요.”</p>\n<p>성능 점수는 올랐지만, 시각적 품질이 떨어졌다.</p>\n<h2 id=\"세-번째-함정-폰트-최적화의-부작용\" style=\"position:relative;\"><a href=\"#%EC%84%B8-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%ED%8F%B0%ED%8A%B8-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%EB%B6%80%EC%9E%91%EC%9A%A9\" aria-label=\"세 번째 함정 폰트 최적화의 부작용 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>세 번째 함정: 폰트 최적화의 부작용</h2>\n<h3 id=\"폰트-로딩-최적화\" style=\"position:relative;\"><a href=\"#%ED%8F%B0%ED%8A%B8-%EB%A1%9C%EB%94%A9-%EC%B5%9C%EC%A0%81%ED%99%94\" aria-label=\"폰트 로딩 최적화 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>폰트 로딩 최적화</h3>\n<p>FOIT (Flash of Invisible Text)를 방지하기 위해 <code class=\"language-text\">font-display: swap</code>을 적용했다. 하지만 예상치 못한 문제가 생겼다.</p>\n<p><strong>문제:</strong></p>\n<ul>\n<li>폰트가 로드되기 전에 시스템 폰트가 표시됨</li>\n<li>폰트가 로드되면 레이아웃이 변경됨</li>\n<li>CLS 점수는 좋아졌지만, 사용자는 깜빡임을 느낌</li>\n</ul>\n<h3 id=\"사용자-경험-악화-1\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98-%EC%95%85%ED%99%94-1\" aria-label=\"사용자 경험 악화 1 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 경험 악화</h3>\n<p>“텍스트가 깜빡거려요.”\n“폰트가 바뀌는 게 거슬려요.”</p>\n<h2 id=\"네-번째-함정-기능-제거\" style=\"position:relative;\"><a href=\"#%EB%84%A4-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EA%B8%B0%EB%8A%A5-%EC%A0%9C%EA%B1%B0\" aria-label=\"네 번째 함정 기능 제거 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>네 번째 함정: 기능 제거</h2>\n<h3 id=\"불필요한-기능-제거\" style=\"position:relative;\"><a href=\"#%EB%B6%88%ED%95%84%EC%9A%94%ED%95%9C-%EA%B8%B0%EB%8A%A5-%EC%A0%9C%EA%B1%B0\" aria-label=\"불필요한 기능 제거 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>“불필요한” 기능 제거</h3>\n<p>성능을 위해 “불필요한” 기능들을 제거했다.</p>\n<p><strong>제거한 기능:</strong></p>\n<ul>\n<li>애니메이션 효과</li>\n<li>호버 효과</li>\n<li>트랜지션 효과</li>\n<li>일부 시각적 피드백</li>\n</ul>\n<p>“성능이 더 중요해”라고 생각했다.</p>\n<h3 id=\"사용자-불만-1\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C-1\" aria-label=\"사용자 불만 1 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 불만</h3>\n<p>“앱이 밋밋해요.”\n“반응이 없어요.”\n“이전 버전이 더 살아있었어요.”</p>\n<p>성능은 좋아졌지만, 사용자 경험이 나빠졌다.</p>\n<h2 id=\"다섯-번째-함정-캐싱의-부작용\" style=\"position:relative;\"><a href=\"#%EB%8B%A4%EC%84%AF-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EC%BA%90%EC%8B%B1%EC%9D%98-%EB%B6%80%EC%9E%91%EC%9A%A9\" aria-label=\"다섯 번째 함정 캐싱의 부작용 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>다섯 번째 함정: 캐싱의 부작용</h2>\n<h3 id=\"과도한-캐싱\" style=\"position:relative;\"><a href=\"#%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%BA%90%EC%8B%B1\" aria-label=\"과도한 캐싱 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>과도한 캐싱</h3>\n<p>성능을 위해 모든 것을 캐싱했다.</p>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token comment\">// 모든 API 응답 캐싱</span>\n<span class=\"token keyword\">const</span> cache <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> <span class=\"token constant\">CACHE_TIME</span> <span class=\"token operator\">=</span> <span class=\"token number\">24</span> <span class=\"token operator\">*</span> <span class=\"token number\">60</span> <span class=\"token operator\">*</span> <span class=\"token number\">60</span> <span class=\"token operator\">*</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 24시간</span>\n\n<span class=\"token keyword\">async</span> <span class=\"token keyword\">function</span> <span class=\"token function\">fetchData</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> cached <span class=\"token operator\">=</span> cache<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>cached <span class=\"token operator\">&amp;&amp;</span> Date<span class=\"token punctuation\">.</span><span class=\"token function\">now</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> cached<span class=\"token punctuation\">.</span>timestamp <span class=\"token operator\">&lt;</span> <span class=\"token constant\">CACHE_TIME</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> cached<span class=\"token punctuation\">.</span>data<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token comment\">// ...</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"사용자-불만-2\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C-2\" aria-label=\"사용자 불만 2 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 불만</h3>\n<p>“데이터가 업데이트가 안 돼요.”\n“새로운 정보가 안 보여요.”\n“캐시를 지워야 하나요?”</p>\n<p>성능은 좋아졌지만, 데이터의 신선도가 떨어졌다.</p>\n<h2 id=\"전환점-사용자-피드백의-충격\" style=\"position:relative;\"><a href=\"#%EC%A0%84%ED%99%98%EC%A0%90-%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1%EC%9D%98-%EC%B6%A9%EA%B2%A9\" aria-label=\"전환점 사용자 피드백의 충격 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>전환점: 사용자 피드백의 충격</h2>\n<h3 id=\"사용자-불만-집계\" style=\"position:relative;\"><a href=\"#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C-%EC%A7%91%EA%B3%84\" aria-label=\"사용자 불만 집계 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>사용자 불만 집계</h3>\n<p>3개월이 지나면서 사용자 불만이 집계되었다.</p>\n<p><strong>이전:</strong></p>\n<ul>\n<li>사용자 만족도: 4.2/5.0</li>\n<li>이탈률: 15%</li>\n<li>지원 티켓: 주당 10개</li>\n</ul>\n<p><strong>최적화 후:</strong></p>\n<ul>\n<li>사용자 만족도: 3.5/5.0</li>\n<li>이탈률: 25%</li>\n<li>지원 티켓: 주당 30개</li>\n</ul>\n<p>성능 점수는 올랐지만, 사용자 만족도는 떨어졌다.</p>\n<h3 id=\"내-충격\" style=\"position:relative;\"><a href=\"#%EB%82%B4-%EC%B6%A9%EA%B2%A9\" aria-label=\"내 충격 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>내 충격</h3>\n<p>“내가 뭘 잘못했을까?”라는 생각이 들었다. 성능을 개선했는데 왜 사용자들이 불만을 표시할까?</p>\n<h2 id=\"반성과-개선\" style=\"position:relative;\"><a href=\"#%EB%B0%98%EC%84%B1%EA%B3%BC-%EA%B0%9C%EC%84%A0\" aria-label=\"반성과 개선 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>반성과 개선</h2>\n<h3 id=\"문제의-원인\" style=\"position:relative;\"><a href=\"#%EB%AC%B8%EC%A0%9C%EC%9D%98-%EC%9B%90%EC%9D%B8\" aria-label=\"문제의 원인 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>문제의 원인</h3>\n<p>문제의 원인을 분석했다:</p>\n<ol>\n<li><strong>점수에만 집중</strong>: Lighthouse 점수에만 집중하고 실제 사용자 경험을 간과</li>\n<li><strong>과도한 최적화</strong>: 모든 것을 최적화하려다가 오히려 나빠짐</li>\n<li><strong>사용자 테스트 부재</strong>: 실제 사용자에게 테스트하지 않고 점수만 확인</li>\n<li><strong>균형 부재</strong>: 성능과 사용자 경험의 균형을 잃음</li>\n</ol>\n<h3 id=\"개선-방향\" style=\"position:relative;\"><a href=\"#%EA%B0%9C%EC%84%A0-%EB%B0%A9%ED%96%A5\" aria-label=\"개선 방향 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>개선 방향</h3>\n<p><strong>1. 사용자 중심 접근</strong></p>\n<ul>\n<li>점수보다 실제 사용자 경험에 집중</li>\n<li>실제 사용자에게 테스트</li>\n<li>피드백 수집 및 반영</li>\n</ul>\n<p><strong>2. 균형잡힌 최적화</strong></p>\n<ul>\n<li>모든 것을 최적화하지 않고 필요한 부분만</li>\n<li>성능과 사용자 경험의 균형</li>\n<li>점진적 개선</li>\n</ul>\n<p><strong>3. 측정 지표 다양화</strong></p>\n<ul>\n<li>Lighthouse 점수뿐만 아니라 실제 사용자 메트릭</li>\n<li>이탈률, 체류 시간, 전환율 등</li>\n<li>정성적 피드백도 중요</li>\n</ul>\n<h2 id=\"개선된-버전\" style=\"position:relative;\"><a href=\"#%EA%B0%9C%EC%84%A0%EB%90%9C-%EB%B2%84%EC%A0%84\" aria-label=\"개선된 버전 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>개선된 버전</h2>\n<h3 id=\"되돌린-것들\" style=\"position:relative;\"><a href=\"#%EB%90%98%EB%8F%8C%EB%A6%B0-%EA%B2%83%EB%93%A4\" aria-label=\"되돌린 것들 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>되돌린 것들</h3>\n<p>과도하게 최적화한 것들을 되돌렸다:</p>\n<p><strong>코드 스플리팅:</strong></p>\n<ul>\n<li>큰 컴포넌트만 스플리팅</li>\n<li>작은 컴포넌트는 번들에 포함</li>\n</ul>\n<p><strong>이미지 최적화:</strong></p>\n<ul>\n<li>WebP 사용하되 품질 유지</li>\n<li>중요한 이미지는 고품질 유지</li>\n</ul>\n<p><strong>폰트 로딩:</strong></p>\n<ul>\n<li><code class=\"language-text\">font-display: optional</code> 사용</li>\n<li>레이아웃 변경 최소화</li>\n</ul>\n<p><strong>기능 복원:</strong></p>\n<ul>\n<li>애니메이션 효과 복원</li>\n<li>시각적 피드백 복원</li>\n</ul>\n<h3 id=\"결과\" style=\"position:relative;\"><a href=\"#%EA%B2%B0%EA%B3%BC\" aria-label=\"결과 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>결과</h3>\n<p><strong>Lighthouse 점수:</strong></p>\n<ul>\n<li>이전: 60점</li>\n<li>과도한 최적화: 95점</li>\n<li>균형잡힌 최적화: 85점</li>\n</ul>\n<p><strong>사용자 만족도:</strong></p>\n<ul>\n<li>이전: 4.2/5.0</li>\n<li>과도한 최적화: 3.5/5.0</li>\n<li>균형잡힌 최적화: 4.5/5.0</li>\n</ul>\n<p>점수는 약간 낮아졌지만, 사용자 만족도는 오히려 올라갔다.</p>\n<h2 id=\"배운-점들\" style=\"position:relative;\"><a href=\"#%EB%B0%B0%EC%9A%B4-%EC%A0%90%EB%93%A4\" aria-label=\"배운 점들 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>배운 점들</h2>\n<h3 id=\"1-점수보다-사용자-경험이-중요하다\" style=\"position:relative;\"><a href=\"#1-%EC%A0%90%EC%88%98%EB%B3%B4%EB%8B%A4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\" aria-label=\"1 점수보다 사용자 경험이 중요하다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 점수보다 사용자 경험이 중요하다</h3>\n<p>Lighthouse 점수는 참고용일 뿐이다. 실제 사용자 경험이 더 중요하다. 점수가 높아도 사용자가 불만을 느끼면 의미가 없다.</p>\n<h3 id=\"2-과도한-최적화는-독이-된다\" style=\"position:relative;\"><a href=\"#2-%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%B5%9C%EC%A0%81%ED%99%94%EB%8A%94-%EB%8F%85%EC%9D%B4-%EB%90%9C%EB%8B%A4\" aria-label=\"2 과도한 최적화는 독이 된다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 과도한 최적화는 독이 된다</h3>\n<p>모든 것을 최적화하려고 하지 말라. 필요한 부분만 최적화하고, 사용자 경험을 해치지 않는 선에서 진행하라.</p>\n<h3 id=\"3-균형이-중요하다\" style=\"position:relative;\"><a href=\"#3-%EA%B7%A0%ED%98%95%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\" aria-label=\"3 균형이 중요하다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 균형이 중요하다</h3>\n<p>성능과 사용자 경험의 균형이 중요하다. 성능만 추구하면 사용자 경험이 나빠질 수 있다.</p>\n<h3 id=\"4-실제-사용자에게-테스트하라\" style=\"position:relative;\"><a href=\"#4-%EC%8B%A4%EC%A0%9C-%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C-%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%98%EB%9D%BC\" aria-label=\"4 실제 사용자에게 테스트하라 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. 실제 사용자에게 테스트하라</h3>\n<p>개발자 환경에서만 테스트하지 말고, 실제 사용자에게 테스트하라. 실제 사용자의 피드백이 가장 중요하다.</p>\n<h3 id=\"5-점진적-개선이-중요하다\" style=\"position:relative;\"><a href=\"#5-%EC%A0%90%EC%A7%84%EC%A0%81-%EA%B0%9C%EC%84%A0%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\" aria-label=\"5 점진적 개선이 중요하다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. 점진적 개선이 중요하다</h3>\n<p>한 번에 모든 것을 최적화하지 말고, 점진적으로 개선하라. 각 변경사항의 영향을 측정하고, 사용자 피드백을 수집하라.</p>\n<h2 id=\"다른-개발자들에게\" style=\"position:relative;\"><a href=\"#%EB%8B%A4%EB%A5%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%97%90%EA%B2%8C\" aria-label=\"다른 개발자들에게 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>다른 개발자들에게</h2>\n<h3 id=\"성능-최적화를-진행한다면\" style=\"position:relative;\"><a href=\"#%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%9C%EB%8B%A4%EB%A9%B4\" aria-label=\"성능 최적화를 진행한다면 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>성능 최적화를 진행한다면</h3>\n<p>성능 최적화를 진행하는 개발자들에게 조언한다:</p>\n<ol>\n<li><strong>사용자 중심 접근</strong>: 점수보다 실제 사용자 경험에 집중</li>\n<li><strong>균형잡힌 최적화</strong>: 모든 것을 최적화하지 말고 필요한 부분만</li>\n<li><strong>실제 사용자 테스트</strong>: 개발자 환경뿐만 아니라 실제 사용자에게 테스트</li>\n<li><strong>점진적 개선</strong>: 한 번에 모든 것을 바꾸지 말고 점진적으로</li>\n<li><strong>다양한 지표</strong>: 점수뿐만 아니라 다양한 지표 확인</li>\n</ol>\n<h3 id=\"실패를-두려워하지-말라\" style=\"position:relative;\"><a href=\"#%EC%8B%A4%ED%8C%A8%EB%A5%BC-%EB%91%90%EB%A0%A4%EC%9B%8C%ED%95%98%EC%A7%80-%EB%A7%90%EB%9D%BC\" aria-label=\"실패를 두려워하지 말라 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>실패를 두려워하지 말라</h3>\n<p>과도한 최적화로 실패할 수 있다. 하지만 그 실패를 통해 균형을 배울 수 있다. 실패를 두려워하지 말고, 사용자 피드백을 받아들이라.</p>\n<h2 id=\"결론-균형의-중요성\" style=\"position:relative;\"><a href=\"#%EA%B2%B0%EB%A1%A0-%EA%B7%A0%ED%98%95%EC%9D%98-%EC%A4%91%EC%9A%94%EC%84%B1\" aria-label=\"결론 균형의 중요성 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>결론: 균형의 중요성</h2>\n<p>성능 최적화는 중요하다. 하지만 그것이 전부는 아니다. 사용자 경험, 기능성, 시각적 품질 등 모든 것을 고려해야 한다.</p>\n<p>Lighthouse 점수가 95점이어도 사용자가 불만을 느끼면 실패다. 점수가 85점이어도 사용자가 만족하면 성공이다.</p>\n<p>균형이 중요하다. 성능과 사용자 경험의 균형, 최적화와 기능의 균형, 점수와 실제 경험의 균형.</p>\n<p>이 경험이 다른 개발자들에게 도움이 되기를 바란다. 점수에만 집중하지 말고, 실제 사용자 경험에 집중하라.</p>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%8B%9C%EC%9E%91-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8\">시작: 성능 최적화 프로젝트</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%99%9C-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%96%88%EB%82%98\">왜 성능 최적화를 시작했나</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%B4%88%EA%B8%B0-%EC%84%B1%EA%B3%B5\">초기 성공</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%B2%AB-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%BD%94%EB%93%9C-%EC%8A%A4%ED%94%8C%EB%A6%AC%ED%8C%85\">첫 번째 함정: 과도한 코드 스플리팅</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%AA%A8%EB%93%A0-%EA%B2%83%EC%9D%84-%EC%8A%A4%ED%94%8C%EB%A6%AC%ED%8C%85%ED%95%98%EB%8B%A4\">모든 것을 스플리팅하다</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98-%EC%95%85%ED%99%94\">사용자 경험 악화</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1\">사용자 피드백</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%91%90-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%B5%9C%EC%A0%81%ED%99%94\">두 번째 함정: 과도한 이미지 최적화</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%AA%A8%EB%93%A0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-webp%EB%A1%9C\">모든 이미지를 WebP로</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C\">사용자 불만</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%84%B8-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%ED%8F%B0%ED%8A%B8-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%EB%B6%80%EC%9E%91%EC%9A%A9\">세 번째 함정: 폰트 최적화의 부작용</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%ED%8F%B0%ED%8A%B8-%EB%A1%9C%EB%94%A9-%EC%B5%9C%EC%A0%81%ED%99%94\">폰트 로딩 최적화</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98-%EC%95%85%ED%99%94-1\">사용자 경험 악화</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%84%A4-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EA%B8%B0%EB%8A%A5-%EC%A0%9C%EA%B1%B0\">네 번째 함정: 기능 제거</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%B6%88%ED%95%84%EC%9A%94%ED%95%9C-%EA%B8%B0%EB%8A%A5-%EC%A0%9C%EA%B1%B0\">“불필요한” 기능 제거</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C-1\">사용자 불만</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%8B%A4%EC%84%AF-%EB%B2%88%EC%A7%B8-%ED%95%A8%EC%A0%95-%EC%BA%90%EC%8B%B1%EC%9D%98-%EB%B6%80%EC%9E%91%EC%9A%A9\">다섯 번째 함정: 캐싱의 부작용</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%BA%90%EC%8B%B1\">과도한 캐싱</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C-2\">사용자 불만</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%A0%84%ED%99%98%EC%A0%90-%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1%EC%9D%98-%EC%B6%A9%EA%B2%A9\">전환점: 사용자 피드백의 충격</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%B6%88%EB%A7%8C-%EC%A7%91%EA%B3%84\">사용자 불만 집계</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%82%B4-%EC%B6%A9%EA%B2%A9\">내 충격</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%B0%98%EC%84%B1%EA%B3%BC-%EA%B0%9C%EC%84%A0\">반성과 개선</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%AC%B8%EC%A0%9C%EC%9D%98-%EC%9B%90%EC%9D%B8\">문제의 원인</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EA%B0%9C%EC%84%A0-%EB%B0%A9%ED%96%A5\">개선 방향</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EA%B0%9C%EC%84%A0%EB%90%9C-%EB%B2%84%EC%A0%84\">개선된 버전</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%90%98%EB%8F%8C%EB%A6%B0-%EA%B2%83%EB%93%A4\">되돌린 것들</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EA%B2%B0%EA%B3%BC\">결과</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%B0%B0%EC%9A%B4-%EC%A0%90%EB%93%A4\">배운 점들</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#1-%EC%A0%90%EC%88%98%EB%B3%B4%EB%8B%A4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\">1. 점수보다 사용자 경험이 중요하다</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#2-%EA%B3%BC%EB%8F%84%ED%95%9C-%EC%B5%9C%EC%A0%81%ED%99%94%EB%8A%94-%EB%8F%85%EC%9D%B4-%EB%90%9C%EB%8B%A4\">2. 과도한 최적화는 독이 된다</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#3-%EA%B7%A0%ED%98%95%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\">3. 균형이 중요하다</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#4-%EC%8B%A4%EC%A0%9C-%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C-%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%98%EB%9D%BC\">4. 실제 사용자에게 테스트하라</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#5-%EC%A0%90%EC%A7%84%EC%A0%81-%EA%B0%9C%EC%84%A0%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\">5. 점진적 개선이 중요하다</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EB%8B%A4%EB%A5%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%97%90%EA%B2%8C\">다른 개발자들에게</a></p>\n<ul>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%9C%EB%8B%A4%EB%A9%B4\">성능 최적화를 진행한다면</a></li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EC%8B%A4%ED%8C%A8%EB%A5%BC-%EB%91%90%EB%A0%A4%EC%9B%8C%ED%95%98%EC%A7%80-%EB%A7%90%EB%9D%BC\">실패를 두려워하지 말라</a></li>\n</ul>\n</li>\n<li><a href=\"/javascript/%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EC%9D%98-%ED%95%A8%EC%A0%95-Core-Web-Vitals-%EA%B0%9C%EC%84%A0%ED%95%98%EB%8B%A4%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%BD%ED%97%98%EC%9D%B4-%EB%82%98%EB%B9%A0%EC%A7%84-%EC%BC%80%EC%9D%B4%EC%8A%A4/#%EA%B2%B0%EB%A1%A0-%EA%B7%A0%ED%98%95%EC%9D%98-%EC%A4%91%EC%9A%94%EC%84%B1\">결론: 균형의 중요성</a></li>\n</ul>","wordCount":{"words":866},"fields":{"slug":"/javascript/성능-최적화의-함정-Core-Web-Vitals-개선하다가-사용자-경험이-나빠진-케이스/","image":null,"faq":[]},"frontmatter":{"title":"성능 최적화의 함정 - Core Web Vitals 개선하다가 사용자 경험이 나빠진 케이스","date":"2026년 1월 5일","dateISO":"2026-01-05T07:30:00.000Z","updatedISO":null,"category":"javascript","description":"Core Web Vitals 점수를 올리기 위해 성능 최적화를 진행했지만, 오히려 사용자 경험이 나빠진 경험을 공유한다. 점수는 올랐지만 사용자 불만이 증가한 이유와 균형점을 찾는 과정을 솔직하게 기록한다.","tags":["성능 최적화","Core Web Vitals","웹 성능","실패 경험","프로젝트 경험","개발자 경험","회고"]}}},"pageContext":{"slug":"/javascript/성능-최적화의-함정-Core-Web-Vitals-개선하다가-사용자-경험이-나빠진-케이스/","previous":{"fields":{"slug":"/etc/사이드-프로젝트가-실패한-이유-3개월-만에-포기한-프로젝트-회고/"},"frontmatter":{"title":"사이드 프로젝트가 실패한 이유 - 3개월 만에 포기한 프로젝트 회고","tags":["사이드 프로젝트","실패 경험","프로젝트 경험","개발자 경험","회고","교훈"]}},"next":{"fields":{"slug":"/etc/오픈소스-기여-첫-경험-작은-PR-하나가-주는-의미/"},"frontmatter":{"title":"오픈소스 기여 첫 경험 - 작은 PR 하나가 주는 의미","tags":["오픈소스","GitHub","기여","개발자 경험","회고","커뮤니티"]}}}},"staticQueryHashes":["213619243","3262363727"]}