๐ฑ ์น ํ์ค ๋ฏธ๋์ฑ์ ์ด๋ ค์
๋น๊ทผ์์ R&D ์์ง๋์ด ์ธํด์ผ๋ก ์ฌ์งํ๋ฉด์ ์ผํ ์น ํ์ค ๋ฏธ๋์ฑ์ ๊ธฐ์ ์ ์ธ ๋ฐฐ๊ฒฝ๊ณผ ํ ์ง์ฒ๋์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๋ ค๊ณ ํ๋ค.
๋น๊ทผ๋ฏธ๋ ์ฝ์์ ํตํด ์น ํ์ค ๋ฏธ๋์ฑ์ ๋ง๋ค๊ณ ๋ฐฐํฌํ ์ ์๋ค. ์์ง์ ์คํ ์์ ! ๋๊ตฌ๋ณด๋ค ๋น ๋ฅด๊ฒ ์จ๋ณด๊ณ ์ถ๋ค๋ฉด ๋ค์ด๊ฐ์ Waitlist์ ์ด๋ฆ์ ์ฌ๋ ค๋์.
๐ฑ ๋ฏธ๋์ฑ
๋ฏธ๋์ฑ์ ์ํผ์ฑ ์์์ ๊ตฌ๋๋๋ ์ 3์ฌ ์๋น์ค๋ค์ ์งํฉ์ด๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ด๋ฒ ์ผํ ์ํผ ์ฑ์ด ์กด์ฌํ๊ณ , ๋ค์ด๋ฒ ์ผํ API๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์คํ ์ด๋ค์ด ์๊ทธ๋งํ ๋ฏธ๋์ฑ์ผ๋ก ์ผํ ์ฑ์ ์ ์ ํ๋ ๊ฒ์ด๋ค. ํฌ๋ํํค ์ํผ ์ฑ์ด ์กด์ฌํ๊ณ , ๊ทธ ์์ ์๋ง์ ์ธ๋ ๊ฒ์ ๋ฏธ๋์ฑ๋ค์ด ์ ์ ํ๋ ๊ฒ์ด๋ค. ํ ์ค ์ํผ ์ฑ์ด ์กด์ฌํ๊ณ , ๊ทธ ์์ ์๋ง์ ๊ธ์ต ์๋น์ค ๋ฏธ๋์ฑ๋ค์ด ์ ์ ํ๋ ๊ฒ์ด๋ค.
์ด๊ฒ ํ์ฌ๋ ๋ฌด์์ด ๋ค๋ฅด๋๊ณ ? ์น์ ๋ง๋๋ ๊ฒฝํ(๊ฐ๋จํ JS ๊ธฐ๋ฐ ๊ฐ๋ฐ)์ผ๋ก ์์๊ฐ์ ์ฑ(๋๋ฌ๋ฅ ์ต๊ณ , ๋ฆฌํ ์ ์ต๊ณ )์ผ๋ก ๋ฐ์นญํ ์ ์๋ค. ๋์์ ์ํผ์ฑ์ ํตํฉ ๊ณ์ ์ ์ฌ์ฉํด ๋ก๊ทธ์ธํ๊ณ , ์ฑ ๋ด์์ ๊ฒฐ์ ๋ฅผ ํ ์ ์๋ค (๋ถํธํ ํ์๊ฐ์ , ๊ฐ์ธ ์ ๋ณด ์ ๋ ฅ ์์). ์ฆ,
- ์ง์ ์ฑ์ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ณ ์ฝ๊ณ ,
- ์ง์ ์น์ฌ์ดํธ๋ฅผ ๋ฐ์นญํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ์์ฐ์ค๋ฝ๊ฒ ๋ ธ์ถ๋๊ณ ,
- ์ง์ ์ฑ์ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์์ผ๋ฉฐ,
- ์ง์ ์๋น์ค๋ฅผ ๋ฐ์นญํ๋ ๊ฒ๋ณด๋ค ์๋์ ์ธ ๋๋ฌ๋ฅ ๊ณผ ๋ฆฌํ ์ ๊ณผ ๊ฑฐ๋ ๋น์จ์ ๋ณด์ฅํ๋ค.
์คํ๊ถ์์๋ ์ด๋ฏธ BAT (๋ฐ์ด๋, ์๋ฆฌ๋ฐ๋ฐ, ํ ์ผํธ) 3์ฌ๊ฐ ๋ฏธ๋์ฑ์ผ๋ก ์์ฅ์ ์ฅ์ ํ์์ผ๋ฉฐ ๊ทธ ์ค 1์์ธ WeChat์ ๋ฏธ๋์ฑ์ ์ผ๊ฐ ์ฌ์ฉ์๊ฐ 4์ต๋ช ์ด ๋๊ณ , ์๊ฐ ์ฌ์ฉ์๋ 9์ต๋ช ์ ์ํํ๋ค. ๋ํ Apple๊ณผ Google์ด ์คํ๊ถ์์ ์ฑ์คํ ์ด, ํ๋ ์ด์คํ ์ด๋ฅผ ์ด์ฉํ ํ๋ซํผ ํ์๋ฅผ ์ง๋์ง ๋ชปํ๋ ์ด์ ๊ฐ ๋ฐ๋ก ๋ฏธ๋์ฑ์ด๋ค. ์คํ๊ถ ์ฌ์ฉ์๋ค์๊ฒ ์ฑ์คํ ์ด์ ํ๋ ์ด์คํ ์ด๋ ๋ง์น ๊ณผ๊ฑฐ ๋ง์ดํฌ๋ก์ํํธ์ ๋ด์ฅ๋ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ์ ๊ฐ๋ค. ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ์ ์ ์ผํ ์ฉ๋๊ฐ Chrome์ ์ฐพ๊ณ ์ค์นํ๋ ๊ฒ์ด๋ฏ, ์คํ๊ถ ์ฑ์คํ ์ด์ ํ๋ ์ด์คํ ์ด์ ์ฌ์ค์ ์ ์ผํ ์ฉ๋๋ WeChat์ ์ค์นํ๋ ๊ฒ๋ฟ์ด๋ค.
์ด๋ ๊ตญ์ ์ ์ผ๋ก๋ ์๋ก์ด ํ์์ด ์๋๋ค. Snap์ Snap Mini๋ผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ์ค์ด๊ณ , Line์ Line Mini App์ ๋ง๋ค๊ณ ์๋ค. ๋น๊ทผ๋ ๋ฏธ๋์ฑ์ ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ค๊ณ ํ๋ค. ๋ฏธ๋์ฑ์ด ๋ฌด์์ธ์ง, ๊ทธ ํ๊ธ๋ ฅ์ด ๋ฌด์์ธ์ง๋ Google์ ๋ฏธ๋์ฑ ๋ฌธ์๋ฅผ ์ ๋ถ ๋ฒ์ญํด๋์๋ค. (PR ๋๊ธฐ ์ค) ์ฌ๊ธฐ์ ์ด์ผ๊ธฐํ๊ธฐ์๋ ๋ด์ฉ์ด ๊ณผํ๊ฒ ๊ธธ์ด์งํ ๋ ํด๋น ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๊ธฐ ๋ฐ๋๋ค.
- ๋ฏธ๋์ฑ์ ์ฝ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ(์น๊ณผ ์ ์ฌํ ๊ฐ๋ฐ ๊ฒฝํ)๋ก ์ต๋ ๋น์ฆ๋์ค ํจ๊ณผ(๋ชจ๋ฐ์ผ ์ฑ ๊ฒฝํ)๋ฅผ ์ ๊ณตํ๋ค.
- ๋น๊ทผ์ ๋ด๋ถ, ์ธ๋ถ์ ํ์ด ๋น๊ทผ์ ๋ฏธ๋์ฑ์ ํตํด ์ ์ ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋ค.
- ๋ฐ๋ผ์ ๋น๊ทผ์ ์ํผ์ฑ์ผ๋ก์ ์ผ์ข ์ ๋ฏธ๋์ฑ ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ถ์ดํ๋ค.
- ๋น๊ทผ์ ๋ชจ๋ ์ํผ์ฑ์ด ๋ฏธ๋์ฑ ํ๊ฒฝ์ ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ๋ชจ๋ ์ํผ์ฑ์ด ๋ฏธ๋์ฑ ํ๊ฒฝ์ ๋ง๋ ๋ค๋ฉด ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ด ํํธํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
- ๋ชฉํ. ํ๊ตญ, ์ผ๋ณธ, ๋ฏธ๊ตญ, ์๊ตญ ๋ฑ์์ ์ฑ๊ณตํ ์ ์๋ ๋ฏธ๋์ฑ ๋ชจ๋ธ์ ๋ง๋ค์ด๋ผ.
๐ฅ ๋ง์ ๋ฏธ๋์ฑ์ ์ํด
์์ ์ธ๊ธํ BAT์ ๊ฒฝ์ฐ ์น์์ ์๊ฐ์ ๋ฐ์ ๋ฏํ ๋ ์์ ์ธ ์ธ์ด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ฐ๋ฐํ์ฌ ๊ทธ ๋ด๋ถ๋ฅผ ์์ ๋ค์ ๋ง์๋๋ก ๋ฏ์ด๊ณ ์ณค๋ค. ์คํ๊ถ์ BAT์ ๊ฒฝ์ฐ ๋ ์ ๊ท๊ฒฉ์ ์ฌ์ฉํ๊ณ , ๊ทธ 3์ฌ์ ๋น์ฆ๋์ค ํ์๊ฐ ์๋นํ๊ธฐ ๋๋ฌธ์ ํ์ฌ ๊ฐ๋ฐ์๋ค์๊ฒ ์ฌ๋ฌ๊ฐ์ง ์๊ตฌ๋ฅผ ํ ์ ์๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ (์์) ์ํผ์ฑ๋ค์ ์๋น์ค๊ฐ ๊ฐ๋ ฅํ๊ธฐ๋ ํด๋, ์์ฌ์ SDK๋ฅผ ์ด์ฉํด ์ฌ๊ฐ๋ฐํ๋ผ๊ฑฐ๋, ์ํผ์ฑ์ผ๋๋ง ๋ค๋ฅด๊ฒ ๋์ํ๋ ๋ก์ง ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ์๊ตฌํ๋ ๋ฑ ํ์ฌ ๊ฐ๋ฐ์๋ค์๊ฒ ๋ฌด๋ฆฌํ ์๊ตฌ๋ฅผ ํ์ง๋ ๋ชปํ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ๊ตณ์ด ๊ตฌํ์ฌ ๋ฏธ๋์ฑ์ ๋ง๋ค์ง ์์ ๊ฒ์ด๋ค. ๊ทธ ๋ ธ๋ ฅ์ผ๋ก iOS, Android ์ฑ์ ์ ๋ง๋๋ ๊ฒ์ด ๋ ์ฑ๊ณต ํ๋ฅ ์ด ๋ณด์ฅ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฅผ ์ํด ํ์ค ๋ฏธ๋์ฑ์ ์น ํ์ค์ ์ค์ํด์ผ ํ๋ค. ์ด๋ค ์น์ฑ์ผ์ง๋ผ๋ ์ฝ๊ฐ์ ์์ ์ ํตํด ๋ฏธ๋์ฑ์ผ๋ก๋ ์น์ฑ์ผ๋ก๋ ์ฝ๋ ๋ณ๊ฒฝ ์์ด ๋์ํ ์ ์๋๋ก ํด์ผํ๋ค.
๐ป ์์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด
์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ์๋นํ ์ค์ํ๋ค. ํนํ ๊ถํ์ ์๊ตฌํ๋ ํ๋ฉด์ ๋์ฑ ๊ทธ๋ ๋ค. ์ด๋ ํ ๋งฅ๋ฝ๋ ์์ด ์๋น์ค๊ฐ ์์น๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ดํฉ๋๋ค๊ณ ๊ฐ์๊ธฐ ๋ฌผ์ด๋ณธ๋ค๋ฉด ์ฌ์ฉ์๋ ๊ฑฐ์ ์ ๋๋ฅผ ํ๋ฅ ์ด ๋๊ณ , ๊ทธ๋ฌ๋ฉด ์๋น์ค์ ์ด์์ ์ง์ฅ์ด ์๊ธธ ์ ์๋ค. ์ฆ ๊ถํ ์๊ตฌ ์ฐฝ์ ์ค๋๋ ฅ์ด ์์ด์ผ ํ๋ค. ๊ทธ๋ฅผ ์ํด์๋ ๊ทธ์ ํฉ๋นํ ์ธํฐํ์ด์ค์ ๋์์ธ์ผ๋ก ๊ฐ์ถฐ์ ธ์ผ ํ๋ค. ์ฆ, ์๋ป์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ์คํ๋ฒ ์ค ์น, ์ฑ, ๋ฏธ๋์ฑ์์ ์์น ์ ๋ณด๋ฅผ ์๊ตฌํ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. ์ด๋ค ๊ถํ ์๊ตฌ ์ฐฝ์ ์น์ธํ๊ณ ์ด๋ค ๊ถํ ์๊ตฌ ์ฐฝ์ ๊ฑฐ์ ํ ๊ฒ ๊ฐ์๊ฐ?

๋ณด๋ค ๋ ๋ง์ ๋งฅ๋ฝ์ด ์ฃผ์ด์ง๋ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ์๋ก ์น์ธํ ์ฌ์ฉ์๊ฐ ๋ง์ ๊ฒ์ด๋ค. ๋๋ฌธ์ ํ์ค ๋ฏธ๋์ฑ์ ์ต์ํ ๊ฐ์ด๋ฐ๋งํผ์ ๋งฅ๋ฝ์ ์ ๊ณตํ ์ ์์ด์ผ ํ๋ค.
๐จ ์์ ๊ถํ ์๊ตฌ ์ฐฝ์ ์ํด
์์ ์ด์ผ๊ธฐํ ์์๋ฅผ ์ด์ด๋ณด์๋ฉด ์์น ์ ๋ณด ๊ถํ ์๊ตฌ ์ฐฝ์ Geolocation API๊ฐ ๋ถ๋ฆด ๋ ๋ฐ์ํ๋ค. ๋ณ๊ฑฐ ์๋ค. ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ฐ๋ก ๋์จ๋ค.
navigator.geolocation.getCurrentPosition()
๋ฐฐ๊ฒฝ 1๊ณผ ๋ฐฐ๊ฒฝ 2์ ๊ทผ๊ฑฐํด, ์ ์ฝ๋๊ฐ ์คํ๋์์ ์ (์น ํ์ค ๋ฐฉ์์ผ๋ก ์์น ์ ๋ณด๋ฅผ ์์ฒญ ์) ์ฌ์ฉ์๋ฅผ ์ค๋ํ ์ ์๋ ๋ฐฐ๊ฒฝ ์ ๋ณด์ ๋์์ธ์ ๊ฐ์ถ ๊ถํ ์๊ตฌ์ฐฝ์ด ๋ํ๋์ผ ํ๋ค.
๐ ํ์ง๋ง ๊ทธ๊ฑด ๋ธ๋ผ์ฐ์ ์ ์ผ์ธ๋ฐ?
์ ๋ ๊ฒ ์๋ฆผ์ฐฝ์ ๋์ฐ๋ ๊ฒ์ ๋ธ๋ผ์ฐ์ ์ ์์ญ์ด๋ค. ๋๋ฌธ์, ์น๋ทฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํด์ (iOS์ ๊ฒฝ์ฐ WKWebView) ๋ฏธ๋์ฑ์ ๊ตฌ๋ํ๋ ๊ฒฝ์ฐ ์ ๋ ๊ฒ ์์น ๊ถํ ์๊ตฌ ์ฐฝ์ด ๊ทธ๋๋ก ๋ํ๋๊ฒ ๋๋ค. ์ด ๋ฌธ์ ๋ ํ์ฌ ๋น๊ทผ์ ๊ตฌํ๋ ๋น๊ทผ๋ฏธ๋์๋ ๋ฐ์ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฌ๊ธฐ์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํ ๊น? ์๋ก์ด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ง๋ค์ด์ผ ํ ๊น?

๐ญ ์ด์ฐจํผ ๋๊ฐ ๋๊ตฐ์ง ๋ชจ๋ฅธ๋ค
99.99%์ ์น์ฑ์ ๊ฒฝ์ฐ ๊ทธ๋ฅ ๊ถํ์ด ํ์ํ ๊ณณ์ getCurrentPosition()ํ ๋ฟ์ด์ง
๊ทธ๊ฒ์ด ์ง์ง ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋๊ฑด์ง๋ ๊ด์ฌ์ด ์๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ง์ฝ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ง navigator๋ฅผ ๋ง๋ ๋ค๋ฉด ์ด๋จ๊น?
const navigator = {
geolocation: {
getCurrentPosition(success, error) {
// do some random stuff...
},
},
}
JavaScript๋ navigator์ ์ง์๋ฅผ ๊ฒ์ฌํ์ง ์๊ธฐ์ ์ํ๋ ๋์์ ์ฌ์ด์ ์ฃผ์
ํ ์ ์๋ค.
์ด๋ฅผ Shim์ด๋ผ๊ณ ํ๋ค.
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ(shim)์ API ํธ์ถ์ ํฌ๋ช ํ๊ฒ ๊ฐ๋ก์ฑ๊ณ ์ ๋ฌ๋ ์ธ์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋, ์์ ์์ฒด๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋, ๋ค๋ฅธ ๊ณณ์ผ๋ก ์์ ์ ๋ฆฌ๋๋ ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. (In computer programming, a shim is a library that transparently intercepts API calls and changes the arguments passed, handles the operation itself, or redirects the operation elsewhere.) โ Shim (computing)
๊ณ ์์ด๊ฐ ์์น ๊ถํ์ ๋ฌ๋ผ๊ณ ์๊ตฌํ๋ ๋ฐ๋ชจ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.

์ฆ, ์ด๋ฅผ ์กฐ๊ธ ๋ ๊ณ ๋ํํด์ ์์ document,
์ฆ DOM ์์ฒด๋ฅผ JavaScript๋ก ๊ตฌํํ์ฌ ์ํ๋ ๋ถ๋ถ๋ง ๊ต์ฒดํ๋ฉด
๋ฏธ๋์ฑ์ค๋ฌ์ด ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ค.
๐ฟ ์ผ๊ด์ ์ธ ๊ฒฝํ์ ์ํด
๋ฏธ๋์ฑ์ ์ผ๊ด์ ์ธ ๊ฒฝํ์ ์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ง์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ ๋ ์๋ก๊ณ ์นจ, ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ด์ ํ์ด์ง, ์ฐฝ๋ซ๊ธฐ์ ์์น๊ฐ ๋ณํ์ง ์๋ฏ์ด ์ฌ๋ฌ ๋ฏธ๋์ฑ์ ์์ด์๋ ๋์ผํ ๊ฒฝํ์ ์ฃผ์ด์ผ ํ๋ค. ์ด๋ ๋ด๊ฐ ๋ฒ์ญํ ๋ฏธ๋์ฑ ๋ฌธ์์๋ ์ธ๊ธ๋์ด ์๋ค. ์ด๋ฅผ ์ํด์๋ ๊ณตํต ์ปดํฌ๋ํธ์ ์ผ๋ถ๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ฃผ์ ํด์ผ ํ๋ค.
โก๏ธ ๋น ๋ฅธ ๊ฒฝํ์ ์ํด
์๋ก ๋ค๋ฅธ ๋ฏธ๋์ฑ์ ์ด๊ณ ๋ซ์ ๋ ๋น ๋ฅด๊ฒ ์ฑ์ ์ด๊ณ ๋ซ๊ธฐ ์ํด
์ฑ์ ๋ฐ์ดํฐ๋ฅผ prefetch ํด์ฌ ์ ์๋ค.
ํ์ง๋ง ์ฑ์ ์ด๊ณ ๋ซ์ ๋๋ง๋ค ๋ฐ์ดํฐ๊ฐ ์ ์ง๋์ด์ผ ํ๊ธฐ์,
iframe ์์ ๋ฏธ๋์ฑ์ ๋ด์๋๊ณ
์ธ๋ถ์์๋ ์ํผ์ฑ์ ์น๋ทฐ๊ฐ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ
prefetchํ๋ ๋ฐฉ์์ ์๊ฐํ ์ ์๋ค.
์ด ๊ณผ์ ์์ iframe ๋ด๋ถ์ ์ฝ๋๊ฐ ์ธ๋ถ๋ก ๊ณต๊ฒฉ ์ฝ๋๋ฅผ ์ฃผ์
ํ๋ ๊ฒ ๋ฑ์ ๋ง๊ธฐ ์ํด crossOriginIsolated์
Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy ํค๋ ์ค์ ์ด ํ์ํ ๊ฒ์ด๋ค.
๐ฅถ ๊ฒฐ๋น ๋ฌธ์ ๋ ์ด๋ป๊ฒ ํด๊ฒฐํ์ จ๋?

ํ์ง๋ง ์ฌ๊ธฐ์ ๋๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
iframe์ ๋จ์ผ ์ฐ๋ ๋์์ ๋์ํ๋ค.
์ฆ, ๋ฏธ๋์ฑ์ด ๋ฉ์ถ๋ฉด ์ํผ์ฑ์ ์ข
๋ฃ ๋ฒํผ ๋ํ ๋จนํต์ด ๋๋ค.
๐ธ ์น์์ ๋ฉํฐ์ฐ๋ ๋
๋ฐ์ ๋ง๊ณ ๋ฐ์ ํ๋ฆฌ๋ค.
- ๋ธ๋ผ์ฐ์ ์์ JavaScript์ Single-Threadedํ๋ค.
- ํ์ง๋ง Web Worker๋ผ๋ ๋ณ๋์ ์ฅ์น๋ฅผ ํตํด Multi-Thread ์ฐ์ฐ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด Web Worker์์ iframe์ ๊ตฌ๋ํ๋ค๋ฉด
๋ฏธ๋์ฑ์ด ๋ฉ์ถ์ด๋ ์ํผ์ฑ์ ๋ฉ์ถ์ง ์์ ๊ฒ์ด๋ค.
๐งโ๐ง Worker ์์๋ DOM API๊ฐ ์๋ค
Web Worker ์์์๋ DOM API๋ฅผ ์ ๊ทผํ ๋ฐฉ๋ฒ์ด ์๋ค. DOM API๋ผ๋ ๊ฒ๋ ๊ฒฐ๊ตญ ๋ง ๊ทธ๋๋ก JavaScript ๊ธฐ๋ฐ์ Object Model์ด๊ธฐ ๋๋ฌธ์ DOM API์ ๋๊ฐ์ด ์๊ธด ๊ฐ์ง DOM์ Worker ์์ ๋ด๋ ค์ฃผ๊ณ , ๊ทธ ๊ฐ์ง DOM์ ์กฐ์๋ ๋ชจ๋ ๊ฒ๋ค์ ์ง์ง DOM์ ๊ทธ๋๋ก ๊ฐ์ ธ๋ค๊ฐ ์ ์ฉํ ์ ์๋ค๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๋ํ ์ด ์ฌ์ด์์ ๊ทธ๋๋ก ๊ฐ์ ธ๋ค๊ฐ ์ ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ์ด๊ฒ ์ ํฉํ ์์ ์ธ์ง ๊ฒ์ฌํ ์ ์๋ค๋ฉด, ์์ฒ์ ์ผ๋ก ์ด๋ทฐ์ง์ ์ฐจ๋จํ ์ ์๋ค.
๐ป ๋ฏธ์ ์ํ์๋ธ์ ์ฐ๋๋ค

๋คํํ๋ ๋น์ทํ ์ฐ๊ตฌ๊ฐ ์ ํ๋์ด ์๋ค. Google ์ฌ์์ AMP์ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก WorkerDOM์ด๋ผ๋ ๊ฒ์ ๋ง๋ค์๊ณ , BuilderIO ์ฌ์์ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฅผ Worker์ ๋ถ๋ฆฌํ ๋ชฉ์ ์ผ๋ก Partytown์ด๋ผ๋ ๊ฒ์ ๋ง๋ค์๋ค. ํ์ง๋ง ์ด ๋ ๋ค ์์ ํ ๊ตฌํ์ฒด๋ ์๋๋ค. WorkerDOM์ Spectre ๋ณด์ ์ฌ๊ณ ๊ฐ ํ์ฐฝ์ผ ๋ ์ ์๋์๊ธฐ์ SharedArrayBuffer์ Atomics๋ฅผ ํ์ฉํ ๋๊ธฐ์ ๋ฐ์ดํฐ ๊ตํ์ด ๋ถ๊ฐ๋ฅํ๋ค. Partytown์ Event Prevent Default๋ฅผ ํ ์ ์๋ค. ํ์ง๋ง ๋ณธ์ง์ ์ผ๋ก, ๋ฏธ์ ์ํ์๋ธ ๋ชจ๋ธ์ ์ฌ์ฉํด์ ๊ฐ์ด๋ฐ์์ ์ ์ ํ๊ฒ ์จ๋ํํฐ ์ฝ๋๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
๐ฝ ๋๊ธฐ์ ๋ฐ์ดํฐ ๊ตํ์ด ๋ถ๊ฐ๋ฅํ๋ค
Web Worker ์๊ณผ ๋ฐ์ ๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ตํ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋๊ธฐ์ ๋ฐ์ดํฐ ๊ตํ์ ์๋นํ ๋ง์ ๊ณณ์ ํ์ํ๋ค. ์๋ฅผ ๋ค์ด, ๋จ์ํ ์ ๋๋ฉ์ด์ ์ ๊ทธ๋ฆฌ๊ฑฐ๋ ์ง๋๋ฅผ ํ์ํ ๋๋ ๋๊ธฐ์ ์ผ๋ก ํ๋ฉด์ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ๋ค์ ํ๋ ์์ ๊ทธ๋ ค์ผ ํ๋ค. ํ์ง๋ง Worker ๋ด๋ถ์์๋ ๋๊ธฐ์ DOM API๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ ๋ชจ๋ ์ ๋๋ฉ์ด์ ์ฝ๋๊ฐ ๋์ํ์ง ์์ ๊ฒ์ด๋ค.
๐ค ๋๊ธฐ์ ์ผ๋ก ๋ง๋ค๋ฉด ๋์ง!
๊ธฐ๋ณธ์ ์ผ๋ก JavaScript๋ ์ฌ์ฉ์ ๋ฐ์์ด ํ์์ ์ธ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฏ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ค. ๊ทธ๋์ ์น ๊ฐ๋ฐ์๋ค์ ๋จ๊ฒ ๋ง๋๋ ๋ ธ๋ต ์ผํ์ (Callbacks, Promise, Async/Await)๊ฐ ์๋ ๊ฒ์ด ์๋๊ฐ. ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ JavaScript๋ฅผ ๋๊ธฐ์ ์ผ๋ก ๋ง๋ ๋ค๋ ๋ป์, ๋ด๊ฐ ์ด๋ค ํจ์๋ฅผ ํธ์ถํ์ ๋ ๊ทธ ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ณ์ฐ๋๋ ๋์ ๋๋จธ์ง ๋ชจ๋ ์ฐ์ฐ์ด ์ ์ง๋ ์ฑ๋ก ๊ฐ๋งํ ์๋๋ค๋ ๋ป์ด๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ๋๊ธฐ์ ์ผ๋ก ๋ง๋ค ์ ์๋ค.
- Synchronous XMLHttpRequest
- ๋๊ธฐ์ ์ธ XMLHttpRequest๋ฅผ ๊ฐ์ง๋ก ํ๋ ๋ณด๋ด๋๋ฉด ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ด ๋ฐํ๋ ๋๊น์ง ๋ค๋ฅธ JavaScript ์ฐ์ฐ์ ์ ์ง์ํฌ ์ ์๋ค. ํ์ง๋ง Deprecated๋ ๋ฐฉ๋ฒ์ด๊ณ ์ฝ๊ฐ์ ํธ๋ฒ์ ๊ฐ๊น์ด ๋ด์ฉ์ด๋ค. Synchronous and asynchronous requests - Web APIs | MDN
- SharedArrayBuffer and Atomics
- SharedArrayBuffer๋ Web Worker์ Main Thread ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค. Atomics๋ ์ด๋ฐ ์ฐ์ฐ์ Thread-Safeํ๊ฒ ๋ง๋ค ์ ์๊ฒ SharedArrayBuffer์ ์ ๊ทผํ๋ ๊ตํต ์ ๋ฆฌ๋ฅผ ๋์์ฃผ๋๋ก ์ค๊ณ๋์๋ค. ํ์ง๋ง ๋์์, Atomics๋ฅผ ํ์ฉํ์ฌ ์ฐ์ฐ์ ๋๊ธฐ์ ์ผ๋ก ์ ์ง์ํค๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
๋ฏธ๋์ฑ์ ๊ฒฝ์ฐ์๋ Web Worker๋ฅผ ์ด๋ฏธ ์ฌ์ฉํ๋ฏ๋ก SharedArrayBuffer์ Atomics๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ํฉํ๋ค๊ณ ํ๋จํ๋ค.
โ๏ธ ์คํ๋ผ์ธ์์ ์ ์์ด ์ด๋ ต๋ค
๊ธฐ์กด์ ์น ํ๊ฒฝ์์๋ ์คํ๋ผ์ธ ํ๊ฒฝ์์ ์ ์์ด ๋ถ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค์ด ๊ณ์ฐ๊ธฐ ๋ฏธ๋์ฑ์ด ์กด์ฌํ๋ฉด, ๋คํธ์ํฌ ์์ด๋ ์ ์ํ ์ ์์ด์ผ ํ๋ค. ์ด๋ ์ด๊ธฐ ๋ก๋ฉ ์๋์๋ ํฌ๊ฒ ์ฐ๊ด๋๋ค. Progressive Web App์ ํ์ฉํ์ฌ ์คํ๋ผ์ธ์์ ์ฌ์ฉํ ์ ์์ง๋ง, PWA ๋ํ ์ด๊ธฐ์ ์๋ง์ ๋คํธ์ํฌ ์์ฒญ์ ๋ณด๋ด์ ์นํ์ด์ง๋ฅผ ์ ์ฅํด์ผํ๋ค๋ ์ ์์ ์ฌ์ ํ ๋นํจ์จ์ ์ด๋ค.
๐ฆ ๋ฌถ์ด์ ํ ๋ฒ์ ๋ณด๋ธ๋ค

์ด ๋ํ ํ๋์ ํด๊ฒฐ์ฑ ์ด ์๋ค. Google์์ CBOR ํ์์ ๊ธฐ๋ฐํ WebBundle์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์น๋ฒ๋ค์ ์ฌ๋ฌ HTML, CSS, JS, ์ด๋ฏธ์ง ๋ฑ์ ํ๋์ ์์ถ๋ ํ์ผ๋ก ๋ฌถ์ด์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค. ์ด๋ฏธ Chrome์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด๊ณ , Google์์ ์คํ์ ์ผ๋ก ๋ค์ํ๊ฒ ์ฐ๊ตฌํ๊ณ ์๋ ๊ธฐ๋ฅ์ด๋ค. ๋ฌผ๋ก Google์ ๋ณธ ๋ชฉ์ ์ ์ด ๋ฌถ์ ๋ฐฐ์ก์ ํตํด URL ๊ธฐ๋ฐ์ ๊ด๊ณ ์ฐจ๋จ ๊ธฐ์ ์ ๋ฌด๋ ฅํํ๊ธฐ ์ํ ๋ชฉ์ ์ด์ง๋ง. ๊ด๋ จ ๊ธํ๋
๐ฆ ์ ์ฑ ์ฝ๋๋ก ๋ฐ๋๋ฉด?
GitHub์์ ๋ฉ์ฉกํด๋ณด์ด๋ ์ฝ๋๋ NPM์์๋ ๊ณต๊ฒฉ ์ฝ๋๊ฐ ์ฝ์ ๋ ์ฑ๋ก ์กด์ฌํ ์ ์๋ค. ์ค์ ๋ก ์๊ฐ 4์ฒ๋ง๋ฒ ์ด์ ๋ค์ด๋ก๋๋๋ UAParser.js ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ NPM ์ ์ฅ์๊ฐ ํดํน๋์ด ์ ์ฑ ์ฝ๋๊ฐ ์ฝ์ ๋์ด ๋ฐฐํฌ๋ ์ ์๋ค. ์ฌ๊ณ ๊ธฐ๋ก

๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๋ค ํํ๋ก๋ ์ํผ์ฑ์ ์ ์ฅ์์๋ ๋ฏธ๋์ฑ ์ ์์ฌ์ ํจํค์ง๋ฅผ ์ง์ ๋ฐ์์ ๊ฒ์๋ฅผ ํ๊ณ ๋ค๋ฅธ ์ฝ๋๋ก ๋ฐ๊ฟ์น์ง ๋ชปํ๋๋ก ์ค์ค๋ก ํธ์คํ ํด์ผ ํ๋ค.

๐ ๊ฒฐ๋ก
์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋ค ํด๊ฒฐํ๋ฉด ์ ๋๋ก ๋ ๋ฏธ๋์ฑ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๋ค. ๋ค๋ง ์ด์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด ๋ฌธ์ ์ ๋์ด๋๊ฐ ๋ชจ๋ ์๋นํ๋ค. ํนํ ๋๋ ์ธํด ๊ธฐ๊ฐ ๋์ 2๋ฒ๊ณผ 3๋ฒ ๋ฌธ์ ์ ์ง์คํ์ง๋ง ์๋ ๊น์ ์์ญ์ผ๋ก ํ๊ณ ๋ค๋ค ๋ณด๋ ๊ด๋ จ ํค์๋๋ฅผ ๊ฒ์ํด๋ ์ด๋ฏธ ๋ณธ ์ฌ์ดํธ ๋ช ๊ฐ๋ง ๋์ค๋ ๋ฑ ์ด๋ ค์์ด ๋ง์๋ค.
์คํ๊ถ๊ณผ ๊ฐ์ด ํน์ํ ํ๊ฒฝ์ ๊ณ ๋ฆฝ๋์ง ์๊ณ โ ๊ตญ์ ์ ์ผ๋ก ์์ ๋กญ๊ณ โก ํ์ฅ์ฑ ์์ผ๋ฉฐ โข ์น ํ์ค๊ณผ ์ํธ ํธํ๋๊ณ โฃ ์ ์์์ ์ฌ์ฉ์์ ๊ฐ์น๋ฅผ ๊ทน๋ํํ๋ ๋ฏธ๋์ฑ ํ๊ฒฝ์ด ์กด์ฌํ๊ธธ ๋ฐ๋๋ค. ๋ค๋ง ๊ธฐ์ ์ ์ด๋ ค์์ผ๋ก ๋น ๋ฅธ ์์ผ ๋ด์๋ ๋ง๋๊ธฐ ์ด๋ ค์ธ ๋ฏ ํ๋ค.