ํจ๊ณผ์ ์ธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค ๊ฐ๋ฐ ๊ฐ์ด๋๋ฅผ ํตํด ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ์ ๋ง์คํฐํ์ธ์. JS ๋ถ์ผ์น๋ฅผ ์๋ณ, ํ ์คํธ ๋ฐ ํด๊ฒฐํ์ฌ ์ํํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ง์คํฐํ๊ธฐ: ํธํ์ฑ ๋งคํธ๋ฆญ์ค ๊ฐ๋ฐ์ ํ
์ค๋๋ ์ํธ ์ฐ๊ฒฐ๋ ๋์งํธ ์ธ์์์, ์๋ง์ ์น ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋๊ณ ์๋ฒฝํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋จ์ํ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ์๋๋ผ ๊ธฐ๋ณธ์ ์ธ ์๊ตฌ์ฌํญ์ ๋๋ค. ์น ๊ฐ๋ฐ์์๊ฒ ์์ด ์ด๋ฌํ ๋ค์ํ ํ๊ฒฝ ์ ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ์ ๋ณต์ก์ฑ์ ์ค์ํ๊ณ ์ง์์ ์ธ ๊ณผ์ ๋ฅผ ์ ๊ธฐํฉ๋๋ค. ๋ค์ํ ECMAScript ๊ตฌํ๋ถํฐ ๋ธ๋ผ์ฐ์ ๋ณ API ๋ฐ ๋ ๋๋ง์ ๋ฏธ๋ฌํ ์ฐจ์ด์ ์ด๋ฅด๊ธฐ๊น์ง, ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ข ์ข ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ๋ฌธ์ ์ ์ค์ฌ์ ์์ต๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค์ ์ ๋ต์ ๊ฐ๋ฐ ๋ฐ ํ์ฉ์ ๋ํด ์์ธํ ์ค๋ช ํฉ๋๋ค. ์ด ๊ฐ๋ ฅํ ๋๊ตฌ๋ ๋ณต์กํ ์น ๊ฐ๋ฐ์ ๋ฐ๋ค์์ ์ฌ๋ฌ๋ถ์ ํญํด ์ฐจํธ ์ญํ ์ ํ๋ฉฐ, ๋ถ์ผ์น๋ฅผ ์ฌ์ ์ ์๋ณ, ์ถ์ ๋ฐ ํด๊ฒฐํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ํด ์ด๋์๋ ์ํํ๊ฒ ์๋ํ๋๋ก ๋ณด์ฅํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฑํํจ์ผ๋ก์จ ๊ฐ๋ฐํ์ ํ ์คํธ๋ฅผ ๊ฐ์ํํ๊ณ ๋ฒ๊ทธ๋ฅผ ์ค์ด๋ฉฐ ๊ถ๊ทน์ ์ผ๋ก ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋์์๋ ๊ณผ์
"ํ ๋ฒ ์์ฑํ๋ฉด ์ด๋์๋ ์คํ๋๋ค"๋ ๋น์ ์ ์ข ์ข ์น ํ๋ซํผ์ ํ์ค๊ณผ ์ถฉ๋ํฉ๋๋ค. ํ์คํ๋ฅผ ํฅํ ์๋นํ ์ง์ ์ด ์์์์๋ ๋ถ๊ตฌํ๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฌ์ ํ ๋นํธํ์ฑ ๋ฌธ์ ์ ์ฃผ์ ์์ธ์ผ๋ก ๋จ์ ์์ต๋๋ค. ๊ทผ๋ณธ ์์ธ์ ์ดํดํ๋ ๊ฒ์ด ํจ๊ณผ์ ์ธ ์ํ์ ์ฒซ๊ฑธ์์ ๋๋ค:
- ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ง: ์น์ V8(ํฌ๋กฌ, ์ฃ์ง, ์คํ๋ผ), SpiderMonkey(ํ์ด์ดํญ์ค), JavaScriptCore(์ฌํ๋ฆฌ) ๋ฑ ๋ค์ํ ์์ง์ ์ํด ๋ ๋๋ง๋ฉ๋๋ค. ๊ฐ ์์ง์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ํด์ํ๊ณ ์คํํ๋ฉฐ, ์ต์ ECMAScript ๊ธฐ๋ฅ ๋ฐ ์น API์ ๋ํ ์ง์ ์์ค๋ ๋ค๋ฆ ๋๋ค.
- ECMAScript ๋ฒ์ ์ง์: ECMAScript์ ์๋ก์ด ๋ฒ์ (ES6, ES2017, ES2020 ๋ฑ)์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๋์ ํฉ๋๋ค. ์ต์ ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฅผ ๋น ๋ฅด๊ฒ ์ฑํํ์ง๋ง, ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ด๋ ์ ๋ฐ์ดํธ๊ฐ ๋ ๋น๋ฒํ ๋ธ๋ผ์ฐ์ ๋ ๋ค์ฒ์ ธ ๊ตฌ๋ฌธ ์ค๋ฅ๋ ์ง์๋์ง ์๋ ๊ธฐ๋ฅ์ ์ด๋ํ ์ ์์ต๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ณ API ๋ฐ ํน์ด์ : ํต์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์๋ ๋ธ๋ผ์ฐ์ ๋ ๋ฏธ๋ฌํ ์ฐจ์ด๋ ๊ณ ์ ํ ํ์ฅ์ ๊ฐ์ง ์น API(์: Fetch, ์น ์คํ ๋ฆฌ์ง, ์ง์ค๋ก์ผ์ด์
๋๋ ์๋น์ค ์์ปค)๋ฅผ ๊ตฌํํฉ๋๋ค. ์คํ์ ๊ธฐ๋ฅ์ ๋ํ ๋ฒค๋ ํ๋ฆฌํฝ์ค(์:
-webkit-
,-moz-
)๋ ํ์ค API์ ๋ํ ์ฌ์ฉ์ด ์ค์์์๋ ๋ถ๊ตฌํ๊ณ ๋ฌธ์ ๋ฅผ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. - ๊ธฐ๊ธฐ ๋ฐ ์ด์ ์ฒด์ ํํธํ: ๋์ผํ ๋ธ๋ผ์ฐ์ ๋ผ๋ ๋ค์ํ ์ด์ ์ฒด์ (Windows, macOS, Linux, Android, iOS)๋ ๊ธฐ๊ธฐ ์ ํ(๋ฐ์คํฌํฑ, ํ๋ธ๋ฆฟ, ํด๋ํฐ, ์ค๋งํธ TV, IoT ๊ธฐ๊ธฐ)์์ ๋ค๋ฅด๊ฒ ์๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํํธํ๋ ํ ์คํธ ๋ฒ์๋ฅผ ๋ฐฐ๊ฐ์ํต๋๋ค.
- ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ค์์ฑ: ์ ์ธ๊ณ ์ฌ์ฉ์๋ ๋งค์ฐ ๋ค์ํ ๋ธ๋ผ์ฐ์ ๋ฒ์ , ์ธํฐ๋ท ์๋ ๋ฐ ํ๋์จ์ด ์ฑ๋ฅ์ผ๋ก ์๋ํฉ๋๋ค. ์ต์ ํ๋์จ์ด๋ฅผ ๊ฐ์ถ ์ฃผ์ ๋๋์์ ์ฌ์ฉ์์๊ฒ ์๋ฒฝํ๊ฒ ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ตฌํ ๊ธฐ๊ธฐ๋ ์ฐ๊ฒฐ์ด ์ ํ๋ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ๋ ์์ ํ ์๋ํ์ง ์์ ์ ์์ต๋๋ค.
- ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ: React, Angular, Vue.js์ ๊ฐ์ ์ธ๊ธฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Lodash์ ๊ฐ์ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์คํ๊ฒ ๊ตฌ์ฑ๋์ง ์๊ฑฐ๋ ์ผ๊ด๋์ง ์์ ์ง์์ ๋ฐ๋ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ์์กดํ๋ ๊ฒฝ์ฐ ๋๋๋ก ๋ธ๋ผ์ฐ์ ๋ณ ๋ฌธ์ ๋ฅผ ๋ ธ์ถํ ์ ์์ต๋๋ค.
์ด ๋ฏธ๋ก๋ฅผ ํ์ํ๋ ค๋ฉด ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํ๋ฉฐ, ๋ฐ๋ก ์ด ์ง์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค๊ฐ ํ์ ๋ถ๊ฐ๊ฒฐํด์ง๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค๋ ์ ํํ ๋ฌด์์ธ๊ฐ?
์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค๋ ์ ์๋ ๋์ ๋ธ๋ผ์ฐ์ , ๋ฒ์ , ์ด์ ์ฒด์ ๋ฐ ๊ธฐ๊ธฐ ์งํฉ ์ ๋ฐ์์ ์ด๋ค ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ, API ๋ฐ ๋์์ด ์ง์๋๋์ง(๋๋ ์ง์๋์ง ์๋์ง, ๋ถ๋ถ์ ์ผ๋ก ์ง์๋๋์ง)๋ฅผ ๋ฌธ์ํํ๋ ์ฒด๊ณ์ ์ธ ๊ธฐ๋ก์ ๋๋ค. ์ด๋ ๊ฐ๋ฐ ๋ฐ QA ํ์ ์ํ ๋จ์ผ ์ ๋ณด ์์ค ์ญํ ์ ํ์ฌ ์ ์ฌ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ์์น์ ๋ํ ๋ช ํํ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฒฌ๊ณ ํ ํธํ์ฑ ๋งคํธ๋ฆญ์ค์ ์ฃผ์ ๊ตฌ์ฑ ์์:
- ๊ธฐ๋ฅ/API: ํน์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ์กฐ(์:
Promise
,async/await
,Map
,fetch()
,IntersectionObserver
) ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ๋ง์ถค ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ. - ๋ธ๋ผ์ฐ์ : ๋์ ์น ๋ธ๋ผ์ฐ์ ๋ชฉ๋ก(์: ํฌ๋กฌ, ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ, ์ฃ์ง, ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ โ ์ฌ์ ํ ์ฌ์ฉ์์๊ฒ ๊ด๋ จ์ด ์๋ ๊ฒฝ์ฐ).
- ๋ธ๋ผ์ฐ์ ๋ฒ์ : ํน์ ๋ฒ์ ๋๋ ๋ฒ์ ๋ฒ์(์: ํฌ๋กฌ 80+, ํ์ด์ดํญ์ค ESR, ์ฌํ๋ฆฌ 13+). ์ข ์ข ์ต์ ์ง์ ๋ฒ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ด์ ์ฒด์ : ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ๋๋ OS(์: Windows 10, ์ต์ macOS, Android 11, iOS 14).
- ๊ธฐ๊ธฐ ์ ํ: ํฐ์น ์ด๋ฒคํธ๋ ํ๋ฉด ํฌ๊ธฐ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ๋ฐ์คํฌํฑ, ํ๋ธ๋ฆฟ, ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ๊ตฌ๋ถํฉ๋๋ค.
- ์ง์ ์ํ: ํธํ์ฑ์ ๋ช ํํ๊ฒ ๋ํ๋ด๋ ์งํ(์: "์์ ์ง์", "ํด๋ฆฌํ๋ก ๋ถ๋ถ ์ง์", "๋ฏธ์ง์", "์๋ ค์ง ๋ฒ๊ทธ").
- ์ฐธ๊ณ /ํด๊ฒฐ ๋ฐฉ๋ฒ: ํน์ ๋นํธํ์ฑ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ธ๋ถ ์ ๋ณด, ํด๋ฆฌํ ์๊ตฌ ์ฌํญ ๋๋ ์๋ ค์ง ํด๊ฒฐ ๋ฐฉ๋ฒ.
ํธํ์ฑ ๋งคํธ๋ฆญ์ค ๊ฐ๋ฐ์ ์ด์ :
- ์ฌ์ ๋ฌธ์ ์๋ณ: ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฒ๊ทธ๊ฐ ๋๊ธฐ ์ ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํฉ๋๋ค.
- ๋๋ฒ๊น ์๊ฐ ๋จ์ถ: ๋ฒ๊ทธ๊ฐ ๋ณด๊ณ ๋์์ ๋, ๋งคํธ๋ฆญ์ค๋ ๊ทธ๊ฒ์ด ์๋ ค์ง ํธํ์ฑ ๋ฌธ์ ์ธ์ง ์ ์ํ๊ฒ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ ๋ณด์ ๊ธฐ๋ฐํ ๊ธฐ์ ์ ํ: ์ด๋ค ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ง, ๋๋ ํด๋ฆฌํ/ํธ๋์คํ์ผ๋ง์ด ํ์ํ์ง์ ๋ํ ๊ฒฐ์ ์ ์๋ดํฉ๋๋ค.
- ๊ฐ์ํ๋ ํ ์คํธ: ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ์๋ ค์ง ์ค์ํ ๋ธ๋ผ์ฐ์ /๊ธฐ๋ฅ ์กฐํฉ์ ํ ์คํธ ๋ ธ๋ ฅ์ ์ง์ค์ํต๋๋ค.
- ๊ฐ์ ๋ ์ปค๋ฎค๋์ผ์ด์ : ๊ฐ๋ฐ, QA ๋ฐ ์ ํ ํ ์ ๋ฐ์ ๊ฑธ์ณ ํธํ์ฑ ๊ธฐ๋์น์ ๋ํ ๊ณต์ ๋ ์ดํด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ธ๋ผ์ฐ์ง ํ๊ฒฝ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ ์ผ๊ด๋๊ณ ์ ๋ขฐํ ์ ์๋ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ๋๋ฌ ์ด์ง: ๋ค์ํ ํ๊ฒฝ์ ๊ณ ๋ คํจ์ผ๋ก์จ ๋ค์ํ ์ค์ ์ ์ฌ์ฉํ๋ ๋ ๋์ ๊ตญ์ ์ฌ์ฉ์์ธต์ ๋ง์กฑ์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค ๊ฐ๋ฐ: ๋จ๊ณ๋ณ ๊ฐ์ด๋
ํจ๊ณผ์ ์ธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์ ์คํ ๊ณํ๊ณผ ์ง์์ ์ธ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ ๋ฐ๋ณต์ ์ธ ๊ณผ์ ์ ๋๋ค.
1๋จ๊ณ: ๋์ ์ฌ์ฉ์ ๋ฐ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ ์ ์
ํธํ์ฑ์ ๋ฌธ์ํํ๊ธฐ ์ ์ ์ฌ์ฉ์๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค. ์ด๋ ํนํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ ๋ ์ค์ํ ์ฒซ ๋จ๊ณ์ ๋๋ค.
- ์ฌ์ฉ์ ๋ถ์ ๋ฐ์ดํฐ ๋ถ์: ๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค, ์ด๋๋น ์ ๋๋ฆฌํฑ์ค ๋๋ ์ ์ฌํ ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ฌ์ฉ์๊ฐ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ธ๋ผ์ฐ์ , ๋ธ๋ผ์ฐ์ ๋ฒ์ , ์ด์ ์ฒด์ ๋ฐ ๊ธฐ๊ธฐ ์ ํ์ ์๋ณํฉ๋๋ค. ์ง์ญ์ ์ฐจ์ด์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์. ์๋ฅผ ๋ค์ด, ํฌ๋กฌ์ด ์ ์ธ๊ณ์ ์ผ๋ก ์ฐ์ธํ ์ ์์ง๋ง ํน์ ์ง์ญ์์๋ ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ ๋๋ ํน์ ์๋๋ก์ด๋ ์น๋ทฐ์ ์ฌ์ฉ๋ฅ ์ด ๋ ๋์ ์ ์์ต๋๋ค.
- ์ง๋ฆฌ์ ๊ณ ๋ ค ์ฌํญ: ์ผ๋ถ ๊ตญ๊ฐ๋ ์ธ๊ตฌ ์ง๋จ์ ๊ฒฝ์ ์ ์์ธ, ๋ฌธํ์ ์ ํธ๋ ๋๋ ์์ฅ ์นจํฌ์จ๋ก ์ธํด ๊ตฌํ ๊ธฐ๊ธฐ๋ ํน์ ๋ธ๋ผ์ฐ์ ์ ๋ณด๊ธ๋ฅ ์ด ๋ ๋์ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ค์ ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ฐ์ํ๋์ง ํ์ธํ์ธ์.
- ์ต์ ์ง์ ๋ฑ๊ธ ์ ์: ๋ถ์ ๋ฐ ๋น์ฆ๋์ค ๋ชฉํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ช ํํ ๋ธ๋ผ์ฐ์ ์ง์ ๋ฑ๊ธ์ ์ค์ ํฉ๋๋ค(์: "์ฌ์ฉ์์ 95%์ ๋ํด ์์ ์ง์", "๊ตฌํ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ ์ง์ ๊ธฐ๋ฅ ์ ํ").
- ์ ๊ทผ์ฑ ํ์ค: ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ๋ณด์กฐ ๊ธฐ์ ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ชจ๋ ์ ๊ทผ์ฑ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํฉ๋๋ค.
2๋จ๊ณ: ์ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ ๋ฐ API ์๋ณ
์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ฒฝํ์ ํ์์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ๋ชฉ๋กํํฉ๋๋ค.
- ํต์ฌ ECMAScript ๊ธฐ๋ฅ: ์์กดํ๋ ์ต์ ๊ตฌ๋ฌธ ๋ฐ ๊ธฐ๋ฅ ๋ชฉ๋ก(์:
let/const
, ํ์ดํ ํจ์, ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด, Promises,async/await
, ๋ชจ๋,.flat()
๊ณผ ๊ฐ์ ์๋ก์ด ๋ฐฐ์ด ๋ฉ์๋). - ์น API: ์ค์ํ ๋ธ๋ผ์ฐ์ API ํฌํจ(์:
fetch
,localStorage/sessionStorage
,WebSocket
,Geolocation
,Canvas
,WebRTC
, DOM ์กฐ์ ๋ฉ์๋, ์๋ก์ด CSSOM API). - ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ: ์ธ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ ๋ฐ ๊ทธ๋ค์ด ๋ช ์ํ ๋ธ๋ผ์ฐ์ ์ง์์ ๊ธฐ๋กํฉ๋๋ค. ๊ทธ๋ค์ ์์กด์ฑ์ ์ดํดํ์ธ์.
- ๋ง์ถค ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง: ๋ธ๋ผ์ฐ์ ์ฐจ์ด์ ๋ฏผ๊ฐํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ ์ ์ ๋ณต์กํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ก์ง์ ์์ง ๋ง์ธ์.
3๋จ๊ณ: ๋ธ๋ผ์ฐ์ ์ง์ ๋ฐ์ดํฐ ์กฐ์ฌ
๋ฌด์์ ํ ์คํธํด์ผ ํ ์ง ์๊ฒ ๋๋ฉด, ๊ทธ๊ฒ์ด ์ผ๋ง๋ ์ ์ง์๋๋์ง ์์๋ด ๋๋ค.
- MDN ์น ๋ฌธ์: Mozilla Developer Network(MDN)๋ ๋๋ถ๋ถ์ ์น API ๋ฐ ECMAScript ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ํธํ์ฑ ํ๋ฅผ ์ ๊ณตํ๋ ๊ท์คํ ๋ฆฌ์์ค์ ๋๋ค. "๋ธ๋ผ์ฐ์ ํธํ์ฑ" ์น์ ์ ์ฐพ์๋ณด์ธ์.
- Can I use...: ์ด ๋๋ฆฌ ์ฌ์ฉ๋๋ ์น์ฌ์ดํธ๋ ๋ค์ํ ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฒ์ ์ ๊ฑธ์น ํ๋ก ํธ์๋ ์น ๊ธฐ์ ์ง์์ ๋ํ ๋น ๋ฅด๊ณ ์๊ฐ์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋น ๋ฅธ ํ์ธ์ ํ์ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด ๋ฌธ์: ๊ตฌ๊ธ(Chrome Developers), ์ ํ(Safari Web Technologies), ๋ง์ดํฌ๋ก์ํํธ(Edge Developer), ๋ชจ์ง๋ผ(MDN)์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
- "State of JS" ๋ณด๊ณ ์: "State of JS"์ ๊ฐ์ ์ฐ๊ฐ ์ค๋ฌธ ์กฐ์ฌ๋ ๋ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ ๋ฐ ๋๊ตฌ์ ๋ํ ๊ฐ๋ฐ์ ์ฑํ ๋ฐ ๋ธ๋ผ์ฐ์ ์ง์ ๋ํฅ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
4๋จ๊ณ: ๋งคํธ๋ฆญ์ค ๊ตฌ์ฑ
์ฝ๊ณ , ์ ๋ฐ์ดํธํ๊ณ , ๊ณต์ ํ๊ธฐ ์ฌ์ด ํ์์ ์ ํํฉ๋๋ค.
- ์คํ๋ ๋์ํธ(์: Excel, Google Sheets): ์ผ๋ฐ์ ์ด๊ณ ์ ์ฐํ ์์์ ์ ๋๋ค. ์ด์๋ "๊ธฐ๋ฅ", "ํฌ๋กฌ(์ต์ ๋ฒ์ )", "ํ์ด์ดํญ์ค(์ต์ ๋ฒ์ )", "์ฌํ๋ฆฌ(์ต์ ๋ฒ์ )", "์ฃ์ง(์ต์ ๋ฒ์ )", "iOS ์ฌํ๋ฆฌ(์ต์ ๋ฒ์ )", "์๋๋ก์ด๋ ํฌ๋กฌ(์ต์ ๋ฒ์ )", "์ฐธ๊ณ /ํด๋ฆฌํ" ๋ฑ์ ํฌํจํ ์ ์์ต๋๋ค. ์ ์ ์ง์ ์ํ๋ฅผ ๋ํ๋ ๋๋ค(์: "โ", "๋ถ๋ถ", "X", "ํด๋ฆฌํ ํ์").
- ์ ์ฉ ๋๊ตฌ/ํ๋ซํผ: ๋๊ท๋ชจ ํ์ ๊ฒฝ์ฐ, ํธํ์ฑ ๋ฐ์ดํฐ๋ฅผ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋๊ตฌ์ ํตํฉํ๊ฑฐ๋ ์ ๋ฌธ ํ ์คํธ ํ๋ซํผ(์ข ์ข ์ด๋ฅผ ์๋ฌต์ ์ผ๋ก ์ถ์ ํจ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
- ์์ ํ ๊ตฌ์กฐ:
- ๊ธฐ๋ฅ:
Array.prototype.flat()
- ํฌ๋กฌ: 69+ (์์ ์ง์)
- ํ์ด์ดํญ์ค: 62+ (์์ ์ง์)
- ์ฌํ๋ฆฌ: 12+ (์์ ์ง์)
- ์ฃ์ง: 79+ (์์ ์ง์)
- IE: N/A (๋ฏธ์ง์)
- iOS ์ฌํ๋ฆฌ: 12+ (์์ ์ง์)
- ์๋๋ก์ด๋ ํฌ๋กฌ: 69+ (์์ ์ง์)
- ์ฐธ๊ณ : ๊ตฌํ ๋ธ๋ผ์ฐ์ ์๋ ํด๋ฆฌํ์ด ํ์ํฉ๋๋ค.
- ๊ธฐ๋ฅ:
5๋จ๊ณ: ๋งคํธ๋ฆญ์ค ์ฑ์ฐ๊ธฐ ๋ฐ ์ ์ง ๊ด๋ฆฌ
์ด๊ธฐ ์ฑ์ฐ๊ธฐ๋ ํฐ ๋ ธ๋ ฅ์ด์ง๋ง, ์ง์์ ์ธ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ค์ํฉ๋๋ค.
- ์ด๊ธฐ ๋ฐ์ดํฐ ์ ๋ ฅ: ์๋ณ๋ ๊ธฐ๋ฅ์ ์ฒด๊ณ์ ์ผ๋ก ๊ฒํ ํ๊ณ ์กฐ์ฌํ ์ง์ ๋ฐ์ดํฐ๋ก ๋งคํธ๋ฆญ์ค๋ฅผ ์ฑ์๋๋ค.
- ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ํตํฉ: ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ด๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ํ ๋ ๋งคํธ๋ฆญ์ค๋ฅผ ์ฐธ์กฐํ๊ณ ์ ๋ฐ์ดํธํ๋ ์ต๊ด์ ๋ค์ ๋๋ค.
- ์ ๊ธฐ์ ์ธ ๊ฒํ ๋ฐ ์ ๋ฐ์ดํธ: ๋ธ๋ผ์ฐ์ ๋ ์๋ก์ด ๋ฒ์ ์ ์์ฃผ ์ถ์ํฉ๋๋ค. ์ต์ ํธํ์ฑ ์ ๋ณด๋ก ๋งคํธ๋ฆญ์ค๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ธ ๊ฒํ (์: ์๋ณ, ๋ถ๊ธฐ๋ณ)๋ฅผ ๊ณํํฉ๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ, ์ฌ์ฉ ์ค๋จ ๋ฐ ๋ฒ๊ทธ ์์ ์ ํ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: ๋ฌธ์ ๊ธฐ๋ฐ ๋งคํธ๋ฆญ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ์ด๋ ฅ ๊ธฐ๋ก์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฒ์ ๊ด๋ฆฌ(์: Git) ํ์ ๋ก๋๋ค.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ ์คํธ๋ฅผ ์ํ ๋๊ตฌ ๋ฐ ์ ๋ต
ํธํ์ฑ ๋งคํธ๋ฆญ์ค๋ ๊ณํ ๋๊ตฌ์ ๋๋ค. ๊ทธ ์ ํ์ฑ์ ๊ฒ์ฆํ๊ณ ์ค์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ํด ๊ฒฌ๊ณ ํ ํ ์คํธ ์ ๋ต์ผ๋ก ๋ณด์๋์ด์ผ ํฉ๋๋ค.
์๋ํ ํ ์คํธ ํ๋ ์์ํฌ
์๋ํ๋ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๊ธฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๋ ๋ฐ ํต์ฌ์ ๋๋ค.
- Selenium: ๋ธ๋ผ์ฐ์ ์๋ํ๋ฅผ ์ํ ๊ณ ์ ์ ์ธ ์ ํ์ ๋๋ค. ํฌ๋กฌ, ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ, ์ฃ์ง ๋ฑ์์ ์คํ๋๋ ํ ์คํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ฐ๋ ฅํ์ง๋ง ์ค์ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ณต์กํ ์ ์์ต๋๋ค.
- Playwright & Cypress: Selenium์ ํ๋์ ์ด๊ณ ๊ฐ๋ฐ์ ์นํ์ ์ธ ๋์์ ๋๋ค. Playwright๋ ํฌ๋กฌ, ํ์ด์ดํญ์ค, WebKit(์ฌํ๋ฆฌ)์ ์ง์ํ๋ฉฐ ์๋ํฌ์๋ ํ ์คํธ๋ฅผ ์ํ ๊ฐ๋ ฅํ API๋ฅผ ์ ๊ณตํฉ๋๋ค. Cypress๋ ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ์ ํ์ํ๋ฉฐ ํฌ๋กฌ, ํ์ด์ดํญ์ค, ์ฃ์ง๋ฅผ ์ง์ํฉ๋๋ค.
- Puppeteer: ํค๋๋ฆฌ์ค ํฌ๋กฌ ๋๋ ํฌ๋ก๋ฏธ์์ ์ ์ดํ๋ ๊ณ ์์ค API๋ฅผ ์ ๊ณตํ๋ Node.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. UI ํ ์คํธ ์๋ํ, ์คํฌ๋ํ ๋ฐ ์ฝํ ์ธ ์์ฑ์ ์ ํฉํฉ๋๋ค.
- ํค๋๋ฆฌ์ค ๋ธ๋ผ์ฐ์ : ํค๋๋ฆฌ์ค ๋ชจ๋(๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์ด)๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ๋ ๊ฒ์ ์๋์ ํจ์จ์ฑ์ ์ํด CI/CD ํ์ดํ๋ผ์ธ์์ ์ผ๋ฐ์ ์ ๋๋ค.
ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ธ๋ผ์ฐ์ ๋ฉ
์ด๋ฌํ ์๋น์ค๋ ์๋ฐฑ ๊ฐ์ ์ค์ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๊ธฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ ๊ด๋ฒ์ํ ์ฌ๋ด ํ ์คํธ ์ธํ๋ผ๋ฅผ ์ ์งํ ํ์๋ฅผ ์์ ์ค๋๋ค.
- BrowserStack, Sauce Labs, LambdaTest: ์ด ํ๋ซํผ๋ค์ ์ฌ์ฉํ๋ฉด ๋ฐฉ๋ํ ์ค์ ๋ธ๋ผ์ฐ์ , ์ด์ ์ฒด์ ๋ฐ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ๊ทธ๋ฆฌ๋์์ ์๋ํ๋ ํ ์คํธ๋ฅผ ์คํํ๊ฑฐ๋ ์๋ ํ ์คํธ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ๋ค์ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ํ๊ฒฝ์ ํฌ๊ดํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ง์ ์๋น์ค๊ฐ ๋ค๋ฅธ ์ง์ญ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํ ์ง๋ฆฌ์ ์์น ํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ฆฐํฐ ๋ฐ ์ ์ ๋ถ์
์คํ ์ ์ ์ผ๋ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ค๋ฅ์ ์คํ์ผ ๋ถ์ผ์น๋ฅผ ํฌ์ฐฉํฉ๋๋ค.
- ESLint: ์ฝ๋ฉ ํ์ค์ ๊ฐ์ ํ๊ณ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํฌํจํ ์ ์ฌ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๋ ๋ฐ ๋์์ด ๋๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ฆฐํฐ์ ๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ ํน์ ECMAScript ๊ธฐ๋ฅ์ ํ์ธํ ์ ์์ต๋๋ค.
- TypeScript: ์๋ฐํ ๋งํด ๋ฆฐํฐ๋ ์๋์ง๋ง, TypeScript์ ์ ์ ํ์ ๊ฒ์ฌ๋ ๋ค๋ฅธ ํ๊ฒฝ์์ ์๊ธฐ์น ์์ ๋ฐ์ดํฐ ํ์ ์ด๋ API ์ฌ์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ์ธ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ง์ด ์ก์๋ผ ์ ์์ต๋๋ค.
ํด๋ฆฌํ ๋ฐ ํธ๋์คํ์ผ๋ง
์ด ๊ธฐ์ ๋ค์ ์ฌ์ฉํ๋ฉด ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด์๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- Babel: ์ต์ ECMAScript ์ฝ๋๋ฅผ ํ์ ํธํ ๋ฒ์ ์ผ๋ก ๋ณํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ์
๋๋ค.
@babel/preset-env
๋ฅผ ์ฌ์ฉํ๋ฉด, Babel์ ์ง์ ๋ ๋์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ(ํธํ์ฑ ๋งคํธ๋ฆญ์ค์์ ์ง์ ํ์๋ ์ ์์)์ ๋ฐ๋ผ ์ง๋ฅ์ ์ผ๋ก ์ฝ๋๋ฅผ ํธ๋์คํ์ผ๋งํ ์ ์์ต๋๋ค. - Core-js: ์๋ก์ด ECMAScript ๊ธฐ๋ฅ ๋ฐ ์น API์ ๋ํ ํด๋ฆฌํ์ ์ ๊ณตํ๋ ๋ชจ๋์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Babel๊ณผ ์ํํ๊ฒ ์๋ํ์ฌ ๋์ ๋ธ๋ผ์ฐ์ ์ ํ์ํ ํด๋ฆฌํ๋ง ํฌํจํฉ๋๋ค.
๊ธฐ๋ฅ ํ์ง ๋ ๋ธ๋ผ์ฐ์ ์ค๋ํ
ํญ์ ๊ธฐ๋ฅ ํ์ง๋ฅผ ์ฐ์ ์ํ์ธ์.
- ๊ธฐ๋ฅ ํ์ง: ํน์ ๊ธฐ๋ฅ์ด๋ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค(์:
if ('serviceWorker' in navigator) { ... }
). ์ด๋ ์ ์ฌ์ ์ผ๋ก ์ ๋ขฐํ ์ ์๋ ์ฌ์ฉ์ ์์ด์ ํธ ๋ฌธ์์ด์ด ์๋ ์ค์ ๊ธฐ๋ฅ์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๊ฒฌ๊ณ ํฉ๋๋ค. Modernizr์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณต์กํ ๊ธฐ๋ฅ ํ์ง์ ๋์์ด ๋ ์ ์์ต๋๋ค. - ๋ธ๋ผ์ฐ์ ์ค๋ํ: ๋ธ๋ผ์ฐ์ ์ ๋ฒ์ ์ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉ์ ์์ด์ ํธ ๋ฌธ์์ด์ ํ์ธํ๋ ๊ฒ์ ํผํ์ธ์. ์ด๋ ์์กฐ๋ ์ ์๊ณ , ์ข ์ข ์ ๋ขฐํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ฅ ์ง์์ ์ง์ ์ ์ผ๋ก ๋ํ๋ด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ ํ ์คํธ ๋ฐ ์ฌ์ฉ์ ํผ๋๋ฐฑ
์๋ํ๋ ํ ์คํธ๋ ๊ฐ๋ ฅํ์ง๋ง, ์ค์ ๊ธฐ๊ธฐ์์์ ์ธ๊ฐ ์ํธ ์์ฉ์ ์ข ์ข ๋ฏธ๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํฉ๋๋ค.
- ํ์์ ํ ์คํธ: QA ์์ง๋์ด๊ฐ ๋ํ์ ์ธ ๋ธ๋ผ์ฐ์ ๋ฐ ๊ธฐ๊ธฐ ์ํ์์ ์ค์ํ ์ฌ์ฉ์ ํ๋ฆ์ ์๋์ผ๋ก ํ ์คํธํ๋๋ก ํฉ๋๋ค. ํนํ ๋งคํธ๋ฆญ์ค์ ๊ธฐ๋ฐํ์ฌ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ์๋ ค์ง ๊ฒ๋ค์ ๋ํด ํ ์คํธํฉ๋๋ค.
- ์ฌ์ฉ์ ์์ฉ ํ ์คํธ(UAT): ์ค์ ์ฌ์ฉ์๋ฅผ ํ ์คํธ ๊ณผ์ ์ ์ฐธ์ฌ์์ผ ์ค์ ๊ฒฝํ์ ํฌ์ฐฉํฉ๋๋ค. ํนํ ๋ค์ํ ์ง๋ฆฌ์ ์์น๋ ๋ค์ํ ๊ธฐ์ ์ค์ ์ ๊ฐ์ง ์ฌ์ฉ์๋ฅผ ํฌํจ์ํต๋๋ค.
- ๋ฒ ํ ํ๋ก๊ทธ๋จ: ์ฌ์ฉ์์ธต์ ์ผ๋ถ์๊ฒ ๋ฒ ํ ํ๋ก๊ทธ๋จ์ ์ถ์ํ์ฌ ๊ด๋ฒ์ํ ํ๊ฒฝ์ ๊ฑธ์ณ ํธํ์ฑ ๋ฐ ์ฑ๋ฅ์ ๋ํ ํผ๋๋ฐฑ์ ์์งํฉ๋๋ค.
๊ธ๋ก๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๋งคํธ๋ฆญ์ค ๋ฐ ํ ์คํธ ๋๊ตฌ๋ฅผ ๋์ด์, ํน์ ๊ฐ๋ฐ ์ฒ ํ์ ์ฑํํ๋ฉด ๊ธ๋ก๋ฒ ํธํ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ ์ง์ ํฅ์ & ์ ์ง์ ๊ธฐ๋ฅ ์ ํ:
- ์ ์ง์ ํฅ์: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋ ๊ธฐ๋ณธ ๊ฒฝํ์ผ๋ก ์์ํ ๋ค์, ์ต์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ๊ณ ๊ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ํต์ฌ ์ฝํ ์ธ ๋ฐ ๊ธฐ๋ฅ์ ๋ํ ๋ณดํธ์ ์ธ ์ ๊ทผ์ ๋ณด์ฅํฉ๋๋ค.
- ์ ์ง์ ๊ธฐ๋ฅ ์ ํ: ์ต์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ๋จผ์ ์ค๊ณํ๋, ๊ณ ๊ธ ๊ธฐ๋ฅ์ด ์ง์๋์ง ์๋ ๊ฒฝ์ฐ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ ๋์ฒด ๊ฒฝํ์ด๋ ํด๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋์ ์ฝ๋ ๋ฐ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ: ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ ๋ชจ๋์ด๋ ์ปดํฌ๋ํธ๋ก ๋ถํดํ๋ฉด ๊ฐ๋ณ ๋ถ๋ถ์ ํธํ์ฑ์ ํ ์คํธํ๊ณ ๋ฌธ์ ๋ฅผ ๊ฒฉ๋ฆฌํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
- ์ ๊ธฐ์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ๊ธฐ๊ธฐ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ(์: ๋ก๋ฉ ์๊ฐ, ์ํธ ์์ฉ ์ง์ฐ)์ ์ ์ธ๊ณ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ณ๋ชฉ ํ์์ ์ผ์ผํฌ ์ ์๋ ์ง์ญ์ด๋ ๊ธฐ๊ธฐ๋ฅผ ์๋ณํฉ๋๋ค. WebPageTest๋ Google Lighthouse์ ๊ฐ์ ๋๊ตฌ๋ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ ๊ทผ์ฑ ๊ณ ๋ ค ์ฌํญ: ์๋ฐ์คํฌ๋ฆฝํธ ์ํธ ์์ฉ์ด ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ , ์ ๊ทผ์ฑ ์ ๋ต์ด ๋์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์๋งจํฑ HTML๊ณผ ARIA ์์ฑ์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
- ๋ฌธ์ํ ๋ฐ ์ง์ ๊ณต์ : ์๋ ค์ง ํธํ์ฑ ๋ฌธ์ , ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฐ ๋ธ๋ผ์ฐ์ ์ง์์ ๊ดํด ๋ด๋ ค์ง ๊ฒฐ์ ์ ๋ํ ๋ช ํํ ๋ฌธ์๋ฅผ ์ ์งํฉ๋๋ค. ์ด ์ง์์ ํ ๋ด์ ๋๋ฆฌ ๊ณต์ ํ์ฌ ๋ฐ๋ณต์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ๊ฐ๋ฐฉํ ํ์ค ๋ฐ ์ปค๋ฎค๋ํฐ ์์ฉ: ์น ํ์ค ๊ฐ๋ฐ(ECMAScript, W3C)์ ๋ํ ์ ๋ณด๋ฅผ ๊ณ์ ์ ํ๊ณ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํ๊ฑฐ๋ ํ๋ก์ฐํฉ๋๋ค. ๊ธ๋ก๋ฒ ์น ์ปค๋ฎค๋ํฐ์ ์ง๋จ ์ง์์ ๊ฐ๋ ฅํ ๋ฆฌ์์ค์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ์ ๊ณผ์ ์ ๋ฏธ๋ ๋ํฅ
์น์ ์ญ๋์ ์ธ ํ๋ซํผ์ด๋ฉฐ, ํธํ์ฑ์ ๊ณผ์ ๋ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค:
- ๋์์์ด ์งํํ๋ ์น ํ์ค: ์๋ก์ด ECMAScript ๊ธฐ๋ฅ๊ณผ ์น API๊ฐ ์ง์์ ์ผ๋ก ๋์ ๋์ด ํธํ์ฑ ์ง์๊ณผ ํ ์คํธ ์ ๋ต์ ๋ํ ์ง์์ ์ธ ์ ๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
- ์๋ก์ด ๊ธฐ๊ธฐ ์นดํ ๊ณ ๋ฆฌ: ์ค๋งํธ TV, ์จ์ด๋ฌ๋ธ, VR/AR ํค๋์ , ์น ๊ธฐ๋ฅ์ ๊ฐ์ถ IoT ๊ธฐ๊ธฐ์ ํ์ฐ์ ๊ณ ์ ํ ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๊ณ ๋ ค ์ฌํญ์ ๊ฐ์ง ์ ์๋ ์๋ก์ด ํผ ํฉํฐ์ ์คํ ํ๊ฒฝ์ ๋์ ํฉ๋๋ค.
- WebAssembly (Wasm): ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋์ฒดํ์ง๋ ์์ง๋ง, Wasm์ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ก์ด ์ปดํ์ผ ๋์์ ์ ๊ณตํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ๊ณผ์ ์ํธ ์์ฉ์ ํธํ์ฑ ์ฐ๋ ค๊ฐ ์ปค์ง๋ ์์ญ์ด ๋ ๊ฒ์ ๋๋ค.
- ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ค์ฌ์ ๋ธ๋ผ์ฐ์ ๋ณ๊ฒฝ: ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฟ ํค, ์คํ ๋ฆฌ์ง ๋ฐ ์๋ํํฐ ์คํฌ๋ฆฝํธ์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ํฅ์ ์ค ์ ์๋ ์ง๋ฅํ ์ถ์ ๋ฐฉ์ง(ITP) ๋ฐ ๊ฐํ๋ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ ์ด์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ์ ๋ ๋ง์ด ๊ตฌํํ๊ณ ์์ต๋๋ค.
- "์ํผ ์ฑ" ๋ฐ ๋ด์ฅ ์น๋ทฐ์ ๋ถ์: ์ ์ธ๊ณ์ ์ผ๋ก ๋ง์ ์ธ๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ (์: ์์ฑ, ์์ธ ์ฑ, ๋ฑ ํน ์ฑ)์ ์น๋ทฐ๋ฅผ ํตํด ์น ์ฝํ ์ธ ๋ฅผ ๋ด์ฅํฉ๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์ ์ข ์ข ๋ ๋ฆฝ ์คํํ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ฅธ ๊ณ ์ ํ ํน์ฑ๊ณผ ํธํ์ฑ ํ๋กํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ฒฐ๋ก : ๋ชจ๋๋ฅผ ์ํ ์ํํ ์น ๊ฒฝํ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ชจ๋ ๋๋ฅ์ ์ฌ์ฉ์๋ค์ด ์์ํ ์ ์๋ ๋ชจ๋ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ ์ํ๋ ์ธ์์์, ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ์ ์ํ ๊ฒฌ๊ณ ํ ์ ๋ต์ ์ฌ์น๊ฐ ์๋๋ผ ํ์์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํธํ์ฑ ๋งคํธ๋ฆญ์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์ ์งํ๋ ๊ฒ์ ๊ฐ๋ฐํ์ด ๋ ํ๋ ฅ ์๊ณ , ์ ๋ขฐํ ์ ์์ผ๋ฉฐ, ๋ณดํธ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ํ์ ์ค์ด์ฃผ๋ ์ฌ์ ์ ์ด๊ณ ์ ๋ต์ ์ธ ํฌ์์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์์ ๊ผผ๊ผผํ๊ฒ ๋ฌธ์ํํ๊ณ , ๊ฐ๋ ฅํ ํ ์คํธ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ์ ์ง์ ํฅ์๊ณผ ๊ฐ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํจ์ผ๋ก์จ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋ณต์ก์ฑ์ ์ด์ํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ฐ์ ๊ณ ์ถฉ๊ณผ ๋ฒ๊ทธ ์์ ์ ์ต์ํํ ๋ฟ๋ง ์๋๋ผ, ์ ์ฒด ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ทผ๋ณธ์ ์ผ๋ก ํฅ์์์ผ ๋์งํธ ์ ํ์ด ์ง์ ์ผ๋ก ๋ชจ๋ ์ฌ๋์ ์ํด, ์ด๋์๋ ์๋ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ค๋ ๋ฐ๋ก ํธํ์ฑ ๋งคํธ๋ฆญ์ค ๊ตฌ์ถ์ ์์ํ์ฌ ๋ ์ผ๊ด๋๊ณ ํฌ์ฉ์ ์ธ ์น ๊ฒฝํ์ ์ํ ๊ธธ์ ๋ฆ์ผ์ธ์!