3.MSW
Service worker
์๋น์ค ์์ปค๋ ์ฃผ๋ก ์คํ๋ผ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๋ค์์ ์๋น์ค ์์ปค์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ์ผ๋ถ์ด๋ค.
๋ฆฌ์์ค ์บ์ฑ: ์๋น์ค ์์ปค๋ HTML, CSS, JavaScript, ์ด๋ฏธ์ง ๋ฑ์ ๋ฆฌ์์ค๋ฅผ ์บ์ฑํ์ฌ ์ฌ์ฉ์๊ฐ ์คํ๋ผ์ธ ์ํ์ด๊ฑฐ๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ๊ฒฝ์ฐ์๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค.
๋คํธ์ํฌ ์์ฒญ์ ์๋ต: ์๋น์ค ์์ปค๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋คํธ์ํฌ ์์ฒญ์ ๊ฐ๋ก์ฑ์ ์ฒ๋ฆฌํ์ฌ ์บ์๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐํ: ์๋น์ค ์์ปค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณด๋ธ ๋คํธ์ํฌ ์์ฒญ์ ์ ์ฅํ๋ค๊ฐ ๋์ค์ ์ฌ์ฉ์๊ฐ ๋ค์ ์จ๋ผ์ธ ์ํ๊ฐ ๋๋ฉด ๋ค์ ์ ์กํ์ฌ ์์ ์ฑ์ ๋์ด๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ค.
ํธ์ ์๋ฆผ: ์๋น์ค ์์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ฌ ์ด๋ ค ์์ง ์๋๋ผ๋ ํธ์ ์๋ฆผ์ ์์ ํ์ฌ ์ฌ์ฉ์์๊ฒ ํ์ํ ์ ์๋ค.
์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๊ด๋ฆฌ: ์๋น์ค ์์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋คํธ์ํฌ ์์ฒญ์ ๋ํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ด๋ฆฌํ์ฌ ๋ฆฌ์์ค์ ๋ํ ์์ ํ ์ก์ธ์ค๋ฅผ ํ์ฉํ ์ ์๋ค.
์ ๋ฐ์ ์ผ๋ก ์๋น์ค ์์ปค๋ ํนํ ์ฌ์ฉ์์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์ ํ์ ์ด๊ฑฐ๋ ๋ถ์์ ํ ์ํฉ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๊ฐ์ ํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด๋ค.
MSW(Mock Service Worker)
๋ชจ์ ์๋น์ค ์์ ์(MSW - Mock Service Worker)๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ HTTP ์์ฒญ์ ๋ชจ์ ํ ์คํธํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๊ฐ๋ฐ์๋ MSW๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณธ ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ๋ ๋คํธ์ํฌ ์์ฒญ์ ๊ฐ๋ก์ฑ์ ๋ชจ์ ํ ์คํธํ ์ ์๋ค.
MSW๋ ์ค์ ๋คํธ์ํฌ ์์ฒญ์ ํ๋ ๋์ ๋ฐ์ ๋คํธ์ํฌ ์์ฒญ์ ๊ฐ๋ก์ฑ ๋ฏธ๋ฆฌ ์ ์๋ ์๋ต์ ๋ฐํํ๋ ๋ชจ์ ์๋น์ค ์์ปค๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์์ฒญ์ ๋ฐ๋ผ ์ด๋ฌํ ์๋ต์ ์ ์ํ ์ ์์ผ๋ฏ๋ก ์ค์ API์ ์์กดํ์ง ์๊ณ ๋ ๋ค์ํ ์๋๋ฆฌ์ค์ ์ฃ์ง ์ผ์ด์ค๋ฅผ ํ ์คํธํ ์ ์๋ค.
MSW๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ API๊ฐ ์์ง ์์ ํ ๊ฐ๋ฐ๋์ง ์์๊ฑฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ์์ ํ๊ฒฝ ๋๋ ๊ฐ๋ฐ์๊ฐ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐํ์ง ์๊ณ ๋ ํน์ ์๋ต์ ํ ์คํธํ๋ ค๋ ๊ฒฝ์ฐ์ ํนํ ์ ์ฉํ๋ค.
์ด ์์ ์์๋ MSW๋ฅผ ์ฌ์ฉํ์ฌ fetchData ํจ์๊ฐ ํธ์ถํ๋ API ์๋ํฌ์ธํธ์ ์๋ต์ ๋ชจํนํ๋ค. ์ํ ์ฝ๋ 200๊ณผ ์ผ๋ถ ๋ชจ์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ JSON ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ /api/data ์๋ํฌ์ธํธ์ ๋ํ ๋ชจ์ ์๋ต์ ์ ์ํ๋ค. ๊ทธ๋ฐ ๋ค์ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ ์ ๋ชจ์ ์๋ฒ๋ฅผ ์์ํ๊ณ ๋์ค์ ์ค์งํ๋ค.
fetchData ํ ์คํธ๋ฅผ ์คํํ๋ฉด MSW๋ ํจ์๊ฐ ๋ณด๋ธ ๋คํธ์ํฌ ์์ฒญ์ ๊ฐ๋ก์ฑ์ ์ค์ ๋คํธ์ํฌ ์์ฒญ ๋์ ๋ฏธ๋ฆฌ ์ ์ํ ๋ชจ์ ์๋ต์ ๋ฐํํ๋ค. ๊ทธ๋ฐ ๋ค์ ๋ชจ์ ์๋ฒ๊ฐ ๋ฐํํ ๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ์์ ๋์์ ํ ์คํธํ ์ ์๋ค.
MSW๋ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ์์ HTTP ์์ฒญ์ ๋ชจ์ํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก, ๊ฐ๋ฐ์๊ฐ API๋ก ์์ ํ ๋ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ ์ฝํ ์ ์๋ค.
5์ฃผ์ฐจ ๊ณผ์ ๋ฅผ ์งํํ๋ฉด์ ์ฒ์ ์ฌ์ฉํด ๋ณด์๋๋ฐ api์์ฒญ mockingํ๋ ๋ถ๋ถ์์ ์์ฒญ๋ ์ ๊ฐํจ๊ณผ๋ฅผ ๋ณด์๋ ๊ฒ ๊ฐ๋ค.
polyfill(ํด๋ฆฌํ)
ํด๋ฆฌํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋์ง ์๋ ๊ธฐ๋ฅ์ ์น ๋ธ๋ผ์ฐ์ ์ ์ถ๊ฐํ๋ ์ฝ๋ ์กฐ๊ฐ์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฉ์ด์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ์น ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํตํด ๋๋ฝ๋ ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ง์๋์ง ์๋ ๊ธฐ๋ฅ์ ๋ํ ๋์ฒด ์ต์ ์น ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์น ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋์ง ์๋ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ API๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฝ๋๊ฐ ์๋ํ ๋๋ก ์คํ๋๋๋ก ํ๊ธฐ ์ํด ํด๋ฆฌํ์ ์ฌ์ฉํ ์ ์๋ค.
ํด๋ฆฌํ์ ์ฌ์ฉํ์ฌ ์๋ก์ด HTML ์์, CSS ๊ธฐ๋ฅ ๋๋ ๊ฐ์ ธ์ค๊ธฐ API ๋๋ ํ๋ก๋ฏธ์ค์ ๊ฐ์ JavaScript API์ ๋ํ ์ง์์ ์ถ๊ฐํ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ๊ธฐ๋ฅ์ ์ง์ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฐ์งํ๊ณ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ ๋๋ฝ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ํ์ํ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
ํด๋ฆฌํ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ผํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ํน์ ๋ธ๋ผ์ฐ์ ์์ ๋นํ์ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ JavaScript์ ๊ธฐ๋ฅ์ ์ก์ธ์ค ํ ์์๋ ํ์ค ์ค์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ์ค๋๋ ๋งค์ฐ ๋๋ฌผ์ง๋ง ๊ฐ ๋ธ๋ผ์ฐ์ ๊ฐ Javascript๋ฅผ ๋งค์ฐ ๋ค๋ฅด๊ฒ ๊ตฌํ ํ IE6, Netscape ๋ฐ NNav ์๋์ ํนํ ๋๋ฆฌ ํผ์ก๋ค. JQuery์ ์ฒซ๋ฒ์งธ ๋ฒ์ ์ด ํด๋ฆฌํ์ ์ด๊ธฐ ์์ด๋ค. ๋น์ ์๋ฐ ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์๋ ์น ์ฌ์ดํธ๊ฐ ์์ ํ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐ๋์ด์ผํ๊ณ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ ธ์ผํ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ถ์ผ์น๋ก ์ธํด ๋ชจ๋ ์ฅ์น์์ ์น ์ฌ์ดํธ๋ฅผ ์๋ ์ํค๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์๋ค. ๋ฐ๋ผ์ JavaScript ๊ฐ๋ฐ์๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๊ฑฐ์ ์ผ๊ด๋๊ฒ ์๋ํ๋ ์์ฃผ ์์ ์์์ JavaScript API์๋ง ์ก์ธ์ค ํ ์ ์์๋ค. ํ๋ ๋ธ๋ผ์ฐ์ ๋ ๋๋ถ๋ถ ํ์ค ์๋งจํฑ์ ๋ฐ๋ผ ๊ด๋ฒ์ํ API ์ธํธ๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ํด๋ฆฌํ์ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๋ณ ๊ตฌํ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ค๋๋ ์ค์ ๋ก ์กด์ฌํ์ง ์๋ค.
Reference
Last updated