๐ฃ Hook: ์ฑ๋ฅ์ ์ฌ๋ ธ๋๋ ์ธํฐ๋ท์ด ๋๊ฒผ๋ค?
ํด๋ผ์ฐ๋ํ๋ ์ด ์์ง๋์ด๋ค์ 1.1.1.1 ๋ฆฌ์กธ๋ฒ์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฝ๋๋ฅผ ์์ ํ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ๋ฅผ ์ค์ด๊ธฐ ์ํด, DNS ์๋ต ํจํท์ CNAME ๋ ์ฝ๋๋ฅผ ๋ง์ง๋ง์ ๋ถ์ด๋๋ก ๋ณ๊ฒฝํ์ฃ .
์ด ์์ ๋ณํ๊ฐ ์์ฒญ๋ ํ์ฅ์ ์ผ์ผ์ผฐ์ต๋๋ค. ์ผ๋ถ ํด๋ผ์ด์ธํธ๋ค์ด ๋๋ฉ์ธ ์ฃผ์๋ฅผ 1.1.1.1๋ก ์กฐํํ์ง ๋ชปํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๐ ๏ธ The Analysis: ์์๊ฐ ์ค์ํ๊ฐ?
1987๋ ์ ๋ชจํธํจ (RFC 1034)
DNS ํ์ค ๋ฌธ์๋ ์ด๋ ๊ฒ ๋งํฉ๋๋ค.
"The answer to the query, possibly preface by one or more CNAME RRs..." (์๋ต์ ์๋ง๋ CNAME๋ค๋ก ๋จผ์ ์์๋ ๊ฒ์ด๋ค...)
"MUST"๊ฐ ์๋๋ผ "possibly"์ ๋๋ค. ์ฆ, CNAME์ด ๋จผ์ ์์ผ ํ๋ค๋ ๊ฐ์ ์กฐํญ์ ์์ต๋๋ค. ํ์ง๋ง ๋ง์ ๊ตฌํ์ฒด๋ค์ด "๋น์ฐํ CNAME์ด ๋จผ์ ์ค๊ฒ ์ง"๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ง์ฌ์ ธ ์์์ต๋๋ค.
์ ๊นจ์ก๋๊ฐ? (Naive Stub Resolvers)
๋จ์ํ ๋ฆฌ์กธ๋ฒ๋ค์ ์๋ต์ ์์ฐจ์ (Sequential)์ผ๋ก ํ์ฑํฉ๋๋ค.
- ๊ธฐ์กด (CNAME โ A):
- "์ด?
www.example.com์ CNAME์ดcdn.example.com์ด๋ค? (๊ธฐ์ต)" - "์ด?
cdn.example.com์ A ๋ ์ฝ๋๊ฐ1.2.3.4๋ค? (๋งค์นญ ์ฑ๊ณต!)"
- "์ด?
- ๋ณ๊ฒฝ ํ (A โ CNAME):
- "์ด?
cdn.example.com์ A ๋ ์ฝ๋๊ฐ ์๋ค? ๋www.example.com์ ์ฐพ๋๋ฐ? (๋ฒ๋ฆผ)" - "์ด? ์ด์ CNAME์ด ์๋ค? ...๊ทผ๋ฐ ์๊น A ๋ ์ฝ๋๋ ์ด๋ฏธ ๋ฒ๋ ธ๋๋ฐ?" -> ๊ฒฐ๊ณผ ์์(NXDOMAIN)
- "์ด?
MAX5์ ์๊ฐ ๐ฏ
๐ ํต์ฌ ๊ตํ
"ํ์ค์ ์ง์ผฐ๋ค"๋ ๊ฒ์ด "์ ์๋ํ๋ค"๋ ๋ง์ ์๋์ผ. ํ์ค ์ธ๊ณ๋ ์ง์ ๋ถํ๊ณ (Legacy), ์๋ฌด๋ RFC๋ฅผ ์ ๋ ํ์ง ์๊ณ ์ฝ๋๋ฅผ ์ง. ๋ด ์์คํ ์ด '์์งํ๊ฒ(Naive)' ๋์ํ๊ณ ์์ง ์์์ง ์์ฌํด์ผ ํด.
๐ ๋ด ์ํฉ์ ์ ์ฉํ๋ค๋ฉด
์ธ๋ถ API๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ธ ๋ '๊ฐ์ (Assumption)'์ ์ค์ฌ์ผ ํด.
- JSON ํ๋ ์์๊ฐ ๋ฐ๋์ด๋ ๊นจ์ง์ง ์๋๊ฐ?
- DNS ์๋ต ์์๋ HTTP ํค๋ ์์์ ์์กดํ๋ ํ์ฑ ๋ก์ง์ ์๋๊ฐ?
โ ๏ธ ์ฃผ์ํ ์
๋จ์ ํํ๊ธฐ ์ ์ ๋ด ์ฝ๋์ '๊ด๋ํจ(Robustness)'์ ์ฑ๊ฒจ. "์ค๋ค๊ฐ ์์๋ฅผ ๋ฐ๊ฟ์ ๋ด ์ฑ์ด ์ฃฝ์์ด!"๋ผ๊ณ ํ๋ด๋ดค์, ์๋น์ค๊ฐ ๋ฉ์ถ ๊ฑด ๋ด ์ฑ ์์ด์ผ.
์นดํ
๊ณ ๋ฆฌ: tech_deep_dive, ``