-
Notifications
You must be signed in to change notification settings - Fork 0
๐ ์ฑ๋ฅ๋ฆฌํฌํธ โ ํ์ ์๋น์ค ์ต์ ํํ๊ธฐ

ํ์์ light house ์ ์์ด๋ค.
3G Fast ๋ชจ๋ฐ์ผ ํ๊ฒฝ ๊ธฐ์ค 46์ ์ LCP 11์ด, ๋ค์ ์ถฉ๊ฒฉ์ ์ธ ๊ฒฐ๊ณผ์ด๋ค.
ํ์์ ๊ฒฝ์ฐ ์ด๊ธฐ ๋ฉ์ธ ํ๋ฉด์ api ํต์ ์ด ๋ง๊ณ , ์ด๋ฏธ์ง๊ฐ ๋ง์ ๋ก๋ฉ์ ๋ง์ ์๋๊ฐ ๊ฑธ๋ฆฐ๋ค.
ํนํ ์ฝ 7000๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ์ํ ๋ชฉ๋ก์ ๊ฒฝ์ฐ ๋ฌดํ ์คํฌ๋กค์ ์ด์ฉํ๊ณ ์๋๋ฐ ์ด๋ฏธ์ง๊ฐ ๋ฆ๊ฒ ๋ ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ค.
์ด๋ฅผ ๊ฐ์ ํด ๋ณด๋๋ก ํ์.
์ฑ๋ฅ ๊ฐ์ ์ ์์ด ๊ธฐ๋ฅ์ ์ผ๋ก ๊ฐ์ฅ ํต์ฌ์ด ๋๋ ์๊ตฌ์ฌํญ์ ์ ํด๋ณด์.
- ๋ฆฌ๋ทฐ ๋ฐ ๊ฟ์กฐํฉ ์์ฑ (์ด๋ฏธ์ง ์ ๋ก๋ ๋ถ๋ถ)
- ์ด๋ฏธ์ง ๋ก๋ฉ
ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ์ ์ํ ์ ์๋ค.
๊ฐ์ฅ ํฐ ์นดํ ๊ณ ๋ฆฌ๋ก๋ณด์๋ฉด ์ด๋ฏธ์ง์ด๋ค.
-
์ ๋ ๊ธฐ๋ฐ ์งํ (quantity based metrics)
- ์นดํ ๊ณ ๋ฆฌ api ์์ฒญ ์บ์ฑ: ์นดํ ๊ณ ๋ฆฌ api๋ฅผ ํํ๋ฉด์์ ๊ณ์ ๋ถ๋ฌ์ค๋๋ฐ ๋ณํ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์์ด์ ์บ์ฑ์ ํ๊ธฐ๋ก ํ๋ค.
-
์๊ฐ ๊ธฐ๋ฐ ์งํ (timing based metrics / milestone metrics)
- TBT: ์ฌ์ง์ ํผ์ ์ ๋ก๋ ํ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค ์ด๋ฅผ ์ถ์์ํค๊ณ ์ ํ๋ค.
- LCP: ์ฐ๋ฆฌ ์๋น์ค์ LCP๋ ์ด๋ฏธ์ง์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ํ๋ฉด LCP๊ฐ ์ค์ด๋ค ๊ฒ์ด๋ผ๊ณ ์์ํ๋ค.
- CLS: ๋คํธ์ํฌ ์ํฉ์ด ์ข์ง ์์ ๋ Layout Shift๊ฐ ์ผ์ด๋๋ฉด ๋ฒ๋ฒ ๊ฑฐ๋ฆด ์ ์๋ค.
-
๊ท์น ๊ธฐ๋ฐ ์งํ (rule based metrics)
- Lighthouse: ์ฌ์ฉ์๊ฐ ์์ด๋ ๋ถ์ํ ์ ์๊ณ , ์ผ๊ด๋ ํ๊ฒฝ์์ ํ์ด์ง๋ฅผ ๋น ๋ฅด๊ฒ ๋ถ์ํ ์ ์๋ค.
- device: ๋ชจ๋ฐ์ผ
- Network throttling speed: 3G Fast
- lighthouse 85์ ์ด์
- ๋ฆฌ๋ทฐ ์ ๋ก๋ ํ์ด์ง์ TBT(Total Blocking Time) 300ms ๋ฏธ๋ง
- CLS 0.1 ๋ฏธ๋ง
์ด์ ์ด ์์ฐ๋ค์ ๋ฐํ์ผ๋ก ๊ฐ์ ํฌ์ธํธ๋ฅผ ์ก์๋ณด์.
ํ์ฌ ๋ฉ์ธ ํ์ด์ง์์ ๋ถ๋ฌ์ค๋ ์ฌ์ง์ ๊ฐ์๊ฐ ๋ง๊ณ ์ฉ๋์ด ํฌ๋ค.
์ ์ ์ ์ฝ 10MB ์ด์์ resources๋ฅผ ๊ฐ์ ธ์จ๋ค.
๋ฉ์ธ UI๋ฅผ ๋ฐ๊ฟ ํ๋ฉด์์ ๋ถ๋ฌ์ค๋ ์ฌ์ง์ ๊ฐ์์ ์ฉ๋์ ์ค์ผ ์ ์๋ค.
์ด๋ฏธ์ง์ ์ ๋ก๋ ์๋๋ฅผ ํฅ์์ํจ๋ค.
๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๋ฉด์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ ๋ browser-image-compression ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด์ ์์ถ์ ํ๊ณ ์์๋ค.
ํ์ง๋ง ์์ถํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ ๋ถ์์ฉ์ด ์์๋ค.
(๋ชจ๋ฐ์ผ 3G ํ๊ฒฝ์์ 2MB ์ฉ๋์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๋๋ฐ 10์ด ์ด์ ์์)
AWS์ ๋๋ค๋ฅผ ์ ์ฉํด ๋ณผ๊น ํ์ง๋ง ๋น์ฉ ๋ฌธ์ ๋ก ๋ฐ๋ ค๋์๊ณ , form์ ์ ์ถํ๋ ์์ ์ ์์ถ์ ์งํํ๋ ค ํ์ผ๋ ์ด๋ ์กฐ์ผ๋ชจ์ฌ์ธ ๋๋์ด๋ผ ๋ฐ๋ ค๋์๋ค.
๊ฒฐ๊ตญ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ง์ ์ ์ฉํ๊ธฐ๋ก ํ์๋ค.
- ์ด๋ฏธ์ง์ ํ์ฅ์๋ฅผ png/jpeg์์ ์ฉ๋์ด 2~30% ์ ์ webp๋ก ๋ณํํ๋ค.
- ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค.
๋ฒ๋ค ์ฌ์ด์ฆ๋ฅผ ์ค์ด๊ณ code splitting์ ํ๋ค.
ํ์ฌ ๊ธฐ์ค 447KB์ด๋ค.
ํ์ฌ ๋ฐฐ๋ ์ด๋ฏธ์ง์ Layout Shift๊ฐ ์ผ์ด๋๋ค.
๋, ๋ฐ๋ก ์ค์ผ๋ ํค์ด๋ ๋ก๋ฉ ์ ๋๋ฉ์ด์ ์ด ์์ด ์ฌ์ฉ์๊ฐ ๋ก๋ฉ ์ค์ธ ์ํ์ธ์ง ์ธ์งํ๊ธฐ ์ด๋ ต๋ค.
- ๋ก๋ฉ UI๋ฅผ ๊ตฌํํ๋ค.
- ๋ฉ์ธ ํ์ด์ง์ ๋ฐฐ๋ ์ด๋ฏธ์ง์ width์ height ์์ฑ์ ์ถ๊ฐํ๋ค.
- ์นดํ ๊ณ ๋ฆฌ ์ด๋ฏธ์ง๋ฅผ ์์ถํ๋ค.

Pretendard๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ ๋น์ฅ ์ฌ์ฉํ์ง ์๋ ํฐํธ๊น์ง ๋ชจ๋ ๋ค๊ณ ์ค๊ณ ์๋ค.
์ฝ 2.5MB ์ ๋ ์ฐจ์งํ๊ณ ์์ด ์ฑ๋ฅ์ ์ ํํ๋ค.
- ํฐํธ๋ฅผ css์์ link๋ก ๊ฐ์ ธ์ค๋๋ก ๋ณ๊ฒฝํ๋ค.
- preload๋ฅผ ์ค์ ํ๋ค.
์นดํ ๊ณ ๋ฆฌ๋ ์ด 2๊ฐ์ง, '๊ฐํธ ์์ฌ/๊ณผ์๋ฅ' ๋ฑ ์ํ ์ข ๋ฅ์ 'CU/GS25' ๋ฑ ํธ์์ ์ข ๋ฅ๋ก ๋๋์ด์ ธ ์๋ค.
์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋๋์ด ์ฌ์์ฒญ์ ๋ณด๋ด์ง ์๋๋ก ํ๋ค.
- Cloudfront๋ฅผ ์ฌ์ฉํด ์ด๋ฏธ์ง๋ฅผ ์บ์ฑํ๋ค. ์น ๋ฆฌ์์ค๋ฅผ ์์ถํ๊ณ ์บ์ฑํ๋ค.
- React ๋น๋ ํ์ผ์ S3์ ์ ๋ก๋ํ๊ณ ์ ์ ํ์ผ์ ์๋นํ๋ค.
- ์ด๋ฏธ์ง ํ์ผ์ S3์ ์ ๋ก๋ํ๊ณ ์ ์ ํ์ผ์ ์๋นํ๋ค.
๋ฉ์ธ UI๋ฅผ ๊ฐ์ ํ์ฌ ์ ์ ์ธ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๊ฒ ํด api ์์ฒญ์ ์ต์ํํ๋ค.
์ด๋ฅผ ํตํด ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ 10MB์์ ์ฝ 7MB๋ก ์ค์๋ค.
- ๊ธฐ์กด UI
- ๋ฐ๋ UI
๋ฆฌ๋ทฐ ์์ฑ ์ ์ด๋ฏธ์ง๋ ์๋ณธ ๊ทธ๋๋ก ๋ฐ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค.
S3์์ ์ฌ์ง์ ๋ค์ด๋ก๋ํ ํ imagemin-cli ํด์ ์ฌ์ฉํด ์์ถ๊ณผ webp ๋ณํ์ ์งํํ์๋ค.
์ด์ฉ๋์ 156MB์์ 22MB๋ก ์ค์ด๊ณ , 145๊ฐ์ ์ด๋ฏธ์ง์ ํ์ฅ์๋ฅผ webp๋ก ๋ณ๊ฒฝํ์๋ค.
๋ํ, ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ ์ค์ฌ ์ฉ๋์ ์ค์๋ค.
lazy์ suspense๋ฅผ ์ฌ์ฉํด ๋ฒ๋ค๋ง์ ์งํํ์๋ค.
447KB์์ 374KB๋ก ์ค์๋ค.
๊ฐ์ฅ ํจ๊ณผ๋ฅผ ๋ง์ด ๋ณธ ๊ฒ์ ๊ฐ๋ฐ ํ๊ฒฝ์ผ ๋์ ๋ฒ๋ค๋ง ์ฉ๋์ธ๋ฐ
์ฝ 2MB ์ด์์ ์ฉ๋์ 442KB๋ก ์ค์ผ ์ ์์๋ค.
- ๊ฐ์ ์
- ๊ฐ์ ํ
๋ก๋ฉ์ ๊ตฌํํด ์ฝํ ์ธ ๋ก๋ฉ ์ ํ์ ๊ฐ๊ทน์ ์์ด๋ค.
๋ก๋ฉ ํ๋ฉด๊ณผ ์ค์ผ๋ ํค์ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ๋ก๋ฉ ์ํ์์ ์ธ์ํ ์ ์๋๋ก ํ์๋ค.
๋, LCP๊ฐ ์ผ์ด๋๋ ๋ฐฐ๋ ์ด๋ฏธ์ง์ ๋์ด ๊ฐ์ ์ถ๊ฐํ๋ค.
CLS๊ฐ ์๋์ ๊ฐ์ด ๊ฐ์ํ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋์์ธ ์์คํ ์์ ํฐํธ๋ฅผ ๊ฐ์ ธ์ ์ ์ฉํ๊ณ ์์๋ค.
์ด๋ฅผ ์ญ์ ํ๊ณ ํ์ ๋ณธ ํ๋ก์ ํธ html์์ link๋ก ๋ฃ์๋ค.
<link
rel="preload"
as="font"
crossorigin
href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.8/dist/web/variable/pretendardvariable-dynamic-subset.css"
onload="this.onload=null; this.rel='stylesheet'"
/>

๋ํ ์์ ๊ฐ์ด FOUT ํ์์ด ๋ฐ์ํ๊ณ ์์๋ค.
์ด๋ฅผ preload๋ฅผ ์ฌ์ฉํด ๋ฏธ๋ฆฌ ํฐํธ๋ฅผ ๊ฐ์ ธ์๊ณ FOUT ํ์์ ๋ฐฉ์งํ์๋ค.

2.5MB์ ํด๋นํ๋ Pretendard ํฐํธ์ ์ฉ๋์ 425KB๋ก ์ค์๋ค.
๊ฐ๋ณ ๋ค์ด๋ด๋ฏน ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ฉํ๊ณ , ๊ธฐ์กด ์๋ธ์ ๋ณด๋ค ํ์ ํ ์ ์ ์ฉ๋์ผ๋ก ์ฌ์ฉํ ์ ์์๋ค.
์นดํ ๊ณ ๋ฆฌ๊ฐ 2๊ฐ์ง๋ก ๋๋์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์นดํ ๊ณ ๋ฆฌ ๊ฐ์ด ๋ฐ๋ ๋๋ง๋ค ์์ฒญ์ด ์ผ์ด๋๋ค.
์นดํ ๊ณ ๋ฆฌ ๋ฐ์ดํฐ๋ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์ ์์๊ณผ ์์ ์นดํ ๊ณ ๋ฆฌ๋ก ๋๋๊ณ stale time์ Infinity๋ก ์ฃผ์๋ค.
๋ฐ๋ผ์ ์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก์ ์ฒซ ๋ฒ์งธ ์์ฒญ ํ ์ฌ์์ฒญ์ ํ์ง ์๋๋ค.
์ง์ ์์ถ ๋ฑ ๊ฐ์ ์ ๊ฑฐ์น ์ด๋ฏธ์ง๋ฅผ S3์ ๋ค์ ์ ๋ก๋ํ๊ณ , Cloudfront๋ก CDN์ ์ ์ฉํ๋ค.
max-age=31536000์ผ๋ก ์ค์ ํด ๋ธ๋ผ์ฐ์ ์ ์ด๋ฏธ์ง๋ฅผ ์บ์ฑํ๋ค.
์น ๋ฆฌ์์ค ์บ์ฑ์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ค์ ํด ์ฃผ์๋ค.
- HTML ๋ฆฌ์์ค: s-maxage=31536000, max-age=0 ์ค์
- JS ๋ฐ ๊ธฐํ ๋ฆฌ์์ค: ํด์๋ฅผ ์ถ๊ฐํด max-age=31536000 ์ค์
HTML ํ์ผ์ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง ๋๋ง๋ค ๊ฐ์ด ๋ฐ๋ ์ ์๋ค.
๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ๋ ํญ์ ์๋ก์ด ๋ฐฐํฌ๊ฐ ์๋์ง ํ์ธํด์ผ ํ๋ค.
(์ฌ๊ธฐ์ s-maxage๋ ์ค๊ฐ ์๋ฒ์์๋ง ์ ์ฉ๋๋ max-age ๊ฐ์ ์ค์ ํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ค.
s-maxage=31536000, max-age=0๋ก ์ค์ ์ CDN์์๋ 1๋
๊ฐ ์บ์ ๋๊ณ , ๋ธ๋ผ์ฐ์ ์์๋ ๋งค๋ฒ ์ฌ๊ฒ์ฆ ์์ฒญ์ ๋ณด๋ธ๋ค)
JS ๋ฐ ๊ธฐํ ๋ฆฌ์์ค์ ๊ฒฝ์ฐ chunk์ hash๋ฅผ ์ถ๊ฐํด ์บ์ ๋ฒ์คํ ์ ์ ์ฉํ์๋ค.
374KB์๋ ์ฉ๋์ด 120KB๋ก ์ค์ด๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ๊ฐ์ ์
- ๊ฐ์ ํ

- lighthouse 85์ ์ด์
- ๋ฆฌ๋ทฐ ์ ๋ก๋ ํ์ด์ง์ TBT(Total Blocking Time) 300ms ๋ฏธ๋ง
- CLS 0.1 ๋ฏธ๋ง
๋ชจ๋ ์ฑ๋ฅ ์์ฐ์ ํต๊ณผํ์์ ์ ์ ์๋ค.
๋ํ, ์ด๊ธฐ์ ๋ถ๋ฌ์ค๋ ๋ฆฌ์์ค๋ ์ฝ 10MB์๋๋ฐ ์ต์ข ๊ฒฐ๊ณผ 2.9MB๋ก ์ค์ด๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ๐ฅณ ์๋น์ค ์๊ฐ
- ๐คธ ํฅ์คํ ๋ฏธํ
- ๐ ์ฐ๋ฆฌ ์ฌ์ฉ ์ค๋ช ์
- โค๏ธโ๐ฅ ํ๋ฌธํ
- ๐ ๊ธฐ๋ฅ ๋ช ์ธ์
- ๐ณ git ๋ธ๋์น ์ ๋ต
- ๐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ฌธ์
- ๐ ๋ธ๋ผ์ฐ์ ์ง์ ๋ฒ์
- ๐งช ํ๋ก ํธ์๋ ํ ์คํธ ์ ๋ต
- [์น ์ ๊ทผ์ฑ] a tag์ button์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
- multipart
- SvgSprite ์ปดํฌ๋ํธ ์ฌ์ฉํ๊ธฐ
- [INFRA] ํ๋ก ํธ์๋ CI/CD ๊ตฌ์ถ
- [๊ธฐ์ ๊ฒํ ] ๋ฆฌ์กํธ ์ฟผ๋ฆฌ ๋์ ์ด์
- [๊ธฐ์ ] ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋์ ๊ธฐ
- ๐ S3 ๋ฐฐํฌ ์บ์ฑ ์ค๋ฅ
- ์ด๋ฏธ์ง๋ฅผ ์ํ S3์ Cloudfront ์ค์ ํ๊ธฐ
- ๐ ์ฑ๋ฅ๋ฆฌํฌํธ โ ํ์ ์๋น์ค ์ต์ ํํ๊ธฐ
- ํ์ SEO ๊ฐ์ ํ๊ธฐ
- ๐ ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฌธ์
- intellij์์ private DB ์ฐ๊ฒฐํ๊ธฐ
- [INFRA 0] ์ ์ฒด infra ๊ตฌ์กฐ - ver1
- [INFRA 1] infra ์๋ฒ ์ธํ
- [INFRA 2] ๋ฐฑ์๋ CI/CD ๊ตฌ์ถ
- [INFRA 3] ๋ฐฑ์๋ DB ์ฐ๊ฒฐ
- [INFRA 4] ๊นํ๋ธ PR ๋ผ๋ฒจ์ ๊ธฐ์ค์ผ๋ก ์ ํจ์ค ๋น๋ํ๊ธฐ
- [LOG] ๋ก๊ทธ ์ธํ
- [Trouble Shooting] ์ผ๊ด๋ ํ ์คํธ ๊ฒฉ๋ฆฌ ์ ์ฉํ๊ธฐ
- [Trouble Shooting] ํ๋ก์๋ก ๋์ํ๋ @Transactional, ์ ํ ์ต์ ๊ด๋ฆฌ
- [2023โ07โ18] 1์ฐจ ์ ๊ธฐ ํ์
- [2023โ07โ25] 2์ฐจ ์ ๊ธฐ ํ์
- [2023โ08โ01] 3์ฐจ ์ ๊ธฐ ํ์
- [2023โ08โ08] 4์ฐจ ์ ๊ธฐ ํ์
- [2023โ08โ16] 5์ฐจ ์ ๊ธฐ ํ์
- [2023-08-31] 6์ฐจ ์ ๊ธฐ ํ์
- [2023-09-05] 7์ฐจ ์ ๊ธฐ ํ์
- [2023-09-12] 8์ฐจ ์ ๊ธฐ ํ์
- [2023-09-19] 9์ฐจ ์ ๊ธฐ ํ์
- [2023-09-26] 10์ฐจ ์ ๊ธฐ ํ์