
์ฝ 9๋ ์ ๋ง ํด๋ Cloudflare๋ ์์ฃผ ์์ ํ์ฌ์๊ณ ์ ๋ ๊ฑฐ๊ธฐ์ ์ผํ์ง๋ ์์๊ณ ๊ทธ์ ๊ณ ๊ฐ์ผ ๋ฟ์ด์์ต๋๋ค. Cloudflare๊ฐ ์ถ์๋ ์ง ํ ๋ฌ ํ, ๋ด ์น์ฌ์ดํธ๊ฐ ์ญ์ ๋์๋ค๋ ์๋ฆผ์ ๋ฐ์์ต๋๋ค. DNS๊ฐ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Cloudflare๊ฐ ๋ณ๊ฒฝํ์ต๋๋ค. , DNS๊ฐ ์์๋์์ต๋๋ค.
๋๋ ์ฆ์ "๋ด DNS๋ ์ด๋์ ์์ต๋๊น?"๋ผ๋ ์ ๋ชฉ์ผ๋ก Matthew Prince์๊ฒ ํธ์ง๋ฅผ ์ผ๊ณ ๊ทธ๋ ๊ธธ๊ณ ๊ธฐ์ ์ ์ธ ๋ต๋ณ์ ๋ณด๋์ต๋๋ค.), ์ด์ ๋ด๊ฐ ๋ตํ์ต๋๋ค:
๋ณด๋ธ ์ฌ๋: John Graham-Cumming
๋ ์ง: 7๋ 2010์ 9์ผ, 14:XNUMX
์ ๋ชฉ: Re: ๋ด DNS๋ ์ด๋์ ์๋์?
๋ฐ๋ ์ฌ๋: ๋งคํ ํ๋ฆฐ์คํ๋ฅญํ ๋ณด๊ณ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๊ผญ ์ ํ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋ชจ๋ ๊ธฐ์ ์ ์ธ ์ ๋ณด๋ฅผ ์์งํ ํ์ ์ด์ ๋ํ ๊ธ์ ์ฐ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๋๋ค์ ์์งํ๊ณ ๊ณต๊ฐ์ ์ธ ์ด์ผ๊ธฐ๋ฅผ ์ข์ํ ๊ฑฐ๋ผ๊ณ ์๊ฐํด์. ํนํ ์ถ์ ์ดํ ํธ๋ํฝ์ด ์ด๋ป๊ฒ ์ฆ๊ฐํ๋์ง ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ํ๋ฅผ ์ฒจ๋ถํ๋ค๋ฉด ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ ๋ ์ฌ์ดํธ๋ฅผ ์ ๋ชจ๋ํฐ๋งํ๊ณ ์์ผ๋ฉฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋๋ง๋ค SMS๋ฅผ ๋ฐ์ต๋๋ค. ๋ชจ๋ํฐ๋ง ๊ฒฐ๊ณผ, ์ฅ์ ๋ 13:03:07๋ถํฐ 14:04:12๊น์ง ๋ฐ์ํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ฒ์ฌ๋ XNUMX๋ถ๋ง๋ค ์ค์๋ฉ๋๋ค.
๋น์ ์ ๋ค ์์๋ผ ์ ์์ ๊ฑฐ๋ผ๊ณ ํ์ ํด์. ์ ๋ฝ์ ๋น์ ์ ๋จ์๊ฐ ํ์ ์๋ค๊ณ ํ์ ํด์? ๐
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋๋ตํ๋ค:
๋ณด๋ธ ์ฌ๋: Matthew Prince
๋ ์ง: 7๋ 2010์ 9์ผ, 57:XNUMX
์ ๋ชฉ: Re: ๋ด DNS๋ ์ด๋์ ์๋์?
๋ฐ๋ ์ฌ๋: John Graham-Cumming๊ฐ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํธ์ง๋ฅผ ์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๋ต์ฅํ์ต๋๋ค. ์ ๋ ์ง๊ธ ์ฌ๋ฌด์ค๋ก ๊ฐ๋ ๊ธธ์ ๋๋ค. ๋ธ๋ก๊ทธ์ ๊ธ์ ์ฐ๊ฑฐ๋ ๊ฒ์ํ์ ๊ณต์ ๊ฒ์๋ฌผ์ ๊ฒ์ํ๊ฒ ์ต๋๋ค. ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ์ ์งํจ์ด ๋ฌด์๋ณด๋ค ์ค์ํฉ๋๋ค.
ํด๋ผ์ฐ๋ํ๋ ์ด๋ ์ ๋ง ํฐ ํ์ฌ์ด๊ณ , ์ ๋ ๊ทธ๊ณณ์์ ์ผํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๋ ์ฐ๋ฆฌ์ ์ค์, ๊ทธ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ํ๋์ ๋ํด ๊ณต๊ฐ์ ์ผ๋ก ๊ธ์ ์จ์ผ ํฉ๋๋ค.
2์ XNUMX์ผ์ ์ด๋ฒคํธ
2์ XNUMX์ผ, ์ฐ๋ฆฌ๋ WAF์ฉ ๊ด๋ฆฌ ๊ท์น์ ์๋ก์ด ๊ท์น์ ๋ฐฐํฌํ์ต๋๋ค. ์ ์ธ๊ณ Cloudflare ๋คํธ์ํฌ์์ HTTP/HTTPS ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๋ชจ๋ CPU ์ฝ์ด์์. ์ฐ๋ฆฌ๋ ์๋ก์ด ์ทจ์ฝ์ ๊ณผ ์ํ์ ๋์ํ์ฌ WAF์ ๋ํ ๊ด๋ฆฌ ๊ท์น์ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 5์์๋ ์ฐ๋ฆฌ๋ ์๋๋ฅด๋ฉฐ SharePoint์ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. WAF์ ํต์ฌ์ ๊ท์น์ ์ ์ํ๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค.
๋ถํํ๋, ์ง๋ ๋ชฉ์์ผ ์ ๋ฐ์ดํธ์๋ ๋ฐฑํธ๋ํน์ HTTP/HTTPS CPU๋ฅผ ๋๋ฌด ๋ง์ด ๋ญ๋นํ๋ ์ ๊ท ํํ์์ด ํฌํจ๋์ด ์์์ต๋๋ค. ์ด๋ก ์ธํด ํต์ฌ ํ๋ก์, CDN ๋ฐ WAF ๊ธฐ๋ฅ์ด ์ํฅ์ ๋ฐ์์ต๋๋ค. ๊ทธ๋ํ๋ ๋คํธ์ํฌ์ ์๋ฒ์์ HTTP/HTTPS ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ CPU ๋ฆฌ์์ค๊ฐ ๊ฑฐ์ 100%์ ๋๋ฌํ์์ ๋ณด์ฌ์ค๋๋ค.
์ฌ๊ณ ๋ฐ์ ์ค ์ ์ ์ง์ ์ค ํ๋์ CPU ์ฌ์ฉ๋
๊ฒฐ๊ณผ์ ์ผ๋ก, ๋น์ฌ ๊ณ ๊ฐ(๋ฐ ๋น์ฌ ๊ณ ๊ฐ์ ๊ณ ๊ฐ)์ Cloudflare ๋๋ฉ์ธ์์ 502 ์ค๋ฅ ํ์ด์ง๋ฅผ ์ ํ๊ฒ ๋์์ต๋๋ค. 502 ์ค๋ฅ๋ Cloudflare์ ํ๋ฐํธ์๋ ์น ์๋ฒ์์ ๋ฐ์ํ๋๋ฐ, ์ด ์๋ฒ์๋ ์ฌ์ ํ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ์ด๊ฐ ์์์ง๋ง HTTP/HTTPS ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ํ๋ก์ธ์ค์ ์ ์ํ ์ ์์์ต๋๋ค.

์ฐ๋ฆฌ๋ ์ด ์ฌ๊ฑด์ผ๋ก ์ธํด ๊ณ ๊ฐ ์ฌ๋ฌ๋ถ๊ป ์ผ๋ง๋ ๋ง์ ๋ถํธ์ ๋ผ์ณ๋๋ ธ๋์ง ์๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋ง ๋ถ๋๋ฝ์ต๋๋ค. ์ด๋ฌํ ์คํจ๋ก ์ธํด ์ฐ๋ฆฌ๋ ์ฌ๊ณ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ง์ฝ ์ฌ๋ฌ๋ถ์ด ๊ทธ๋ฐ ๊ณ ๊ฐ ์ค ํ ๋ช
์ด์๋ค๋ฉด, ์๋ง๋ ๋ฌด์์, ๋ถ๋
ธ, ๋ถ์พ๊ฐ์ ๋๊ผ์ ๊ฒ๋๋ค. ๊ฒ๋ค๊ฐ ์ฐ๋ฆฌ๋ 6๋
๋์ ํ๋๋ ๊ฐ์ง๊ณ ์์ง ์์์ด์ . CPU ์ฌ์ฉ๋์ด ๋์ ์ด์ ๋ ์ ๋๋ก ๊ตฌ์ฑ๋์ง ์์ ์ ๊ท ํํ์์ ์ฌ์ฉํ๋ ๋จ์ผ WAF ๊ท์น์ผ๋ก ์ธํด ๊ณผ๋ํ ๋ฐฑํธ๋ํน์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฃ์ฑ
๊ฐ์ ๋ํ๋ด๋ ํํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))
๊ทธ ์์ฒด๋ก ํฅ๋ฏธ๋ก์ด ์ฌ์ค์ด์ง๋ง(์๋์์ ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค) Cloudflare๊ฐ 27๋ถ๊ฐ ๋ค์ด๋ ์ด์ ๋ ์๋ชป๋ ์ ๊ท ํํ์ ๋๋ฌธ๋ง์ ์๋์์ต๋๋ค. ์คํจ์ ์ด๋ฅด๊ธฐ๊น์ง์ ์ผ๋ จ์ ์ฌ๊ฑด์ ์ค๋ช ํ๋ ๋ฐ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ ธ๊ธฐ ๋๋ฌธ์ ๋์์ด ๋๋ ธ์ต๋๋ค. ๊ธ์ ๋ง์ง๋ง ๋ถ๋ถ์์๋ ์ ๊ท ํํ์์์์ ๋ฐฑํธ๋ํน์ ๋ํด ์ค๋ช ํ๊ณ , ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ง ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ฌด์จ ์ผ์ด ์์๋์ง
์์๋๋ก ์์ํด ๋ณด์ฃ . ์ฌ๊ธฐ์ ๋ชจ๋ ์๊ฐ์ UTC ๊ธฐ์ค์ ๋๋ค.
์คํ 13์ 42๋ถ, ๋ฐฉํ๋ฒฝ ํ์ ์์ง๋์ด๊ฐ ํ์ง ๊ท์น์ ์ฝ๊ฐ ๋ณ๊ฒฝํ์ต๋๋ค. ์๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด์ ๋ฐ๋ผ ๋ณ๊ฒฝ ์์ฒญ ํฐ์ผ์ด ์์ฑ๋์์ต๋๋ค. ์ด๋ฌํ ํฐ์ผ์ Jira๋ฅผ ํตํด ๊ด๋ฆฌํฉ๋๋ค(์๋ ์คํฌ๋ฆฐ์ท ์ฐธ์กฐ).
3๋ถ ์ด๋ด์ ์ฒซ ๋ฒ์งธ PagerDuty ํ์ด์ง๊ฐ ๋ํ๋ WAF์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๋ณด๊ณ ๊ฐ ๋์์ต๋๋ค. ์ด๋ Cloudflare ์ธ๋ถ์ WAF(์๋ฐฑ ๊ฐ๊ฐ ์์) ๊ธฐ๋ฅ์ ์ ๊ฒํ์ฌ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ์ข ํฉ ํ ์คํธ์์ต๋๋ค. ๊ทธ ํ ๋ค๋ฅธ ์๋ํฌ์๋ Cloudflare ์๋น์ค ํ ์คํธ ์คํจ, ๊ธ๋ก๋ฒ ํธ๋ํฝ ๋ฌธ์ , ๊ด๋ฒ์ํ 502 ์ค๋ฅ, ์ ์ธ๊ณ ๋์์ ์๋ PoP(Points of Presence)์์ CPU ๋ณ๋ชฉ ํ์์ ๋ํ๋ด๋ ์๋ง์ ๋ณด๊ณ ์ ๋ํ ๊ฒฝ๊ณ ํ์ด์ง๊ฐ ๋น ๋ฅด๊ฒ ์ด์ด์ก์ต๋๋ค.


์ ๋ ์ด๋ฌํ ์๋ฆผ์ ๋ช ๊ฐ ๋ฐ๊ณ ํ์์ฅ์ ๋์์ ํ์์ค๋ก ๊ฐ๋ ์ค ์๋ฃจ์ ์ฑ ์์๊ฐ ํธ๋ํฝ์ 80%๊ฐ ์์ค๋์๋ค๊ณ ๋งํ์ต๋๋ค. ์ ๋ ์ด๋ฏธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ ์ค์ด์๋ SRE ์์ง๋์ด์๊ฒ ๋ฌ๋ ค๊ฐ์ต๋๋ค. ์ฒ์์๋ ์๋ ค์ง์ง ์์ ๊ณต๊ฒฉ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.

Cloudflare์ SRE ์์ง๋์ด๋ ์ ์ธ๊ณ์ ์์นํ๊ณ ์์ผ๋ฉฐ 0์๊ฐ ๋ด๋ด ์ํฉ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์๋ฆผ์ ๋ฒ์๊ฐ ์ ํ๋ ๊ตฌ์ฒด์ ์ด๊ณ ์ง์ญ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ฆฌ๊ณ , ๋ด๋ถ ๋์๋ณด๋์์ ์ถ์ ํ๋ฉฐ, ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ํด๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํ์ด์ง์ ์๋ฆผ์ ๋งค์ฐ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ๋ํ๋๊ณ , SRE ์์ง๋์ด๋ ์ฆ์ ์ฌ๊ฐ๋ ์์ค์ PXNUMX๋ก ์ ์ธํ๊ณ ๊ฒฝ์์ง๊ณผ ์์คํ ์์ง๋์ด์๊ฒ ์ฐ๋ฝํ์ต๋๋ค.
๊ทธ ์๊ฐ ๋ฐ๋์ ์์ง๋์ด๋ค์ ๋๊ฐ๋น์์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์์ต๋๋ค. ๊ฐ์๋ ์ค๋จ๋์ด์ผ ํ๊ณ , ๋ชจ๋๊ฐ ํฐ ํ์์ค์ ๋ชจ์์ผ๋ฉฐ, ๋ ๋ง์ ์ ๋ฌธ๊ฐ๋ค์ด ๋ถ๋ ค์์ต๋๋ค. ์ด๋ SRE๊ฐ ์ค์ค๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๊ฐ ์๋์์ต๋๋ค. ์ ํฉํ ์ ๋ฌธ๊ฐ๋ฅผ ๊ธด๊ธํ ์ฐธ์ฌ์ํค๋ ๊ฒ์ด ํ์ํ์ต๋๋ค.
14:00์ ์ฐ๋ฆฌ๋ ๋ฌธ์ ๊ฐ WAF์ ์๋ค๋ ๊ฒ์ ํ์ธํ๊ณ , ๊ณต๊ฒฉ์ ์์์ต๋๋ค. ์ฑ๋ฅ ํ์ด CPU ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ณธ ๊ฒฐ๊ณผ, WAF๊ฐ ์์ธ์ด๋ผ๋ ์ฌ์ค์ด ๋ถ๋ช ํด์ก์ต๋๋ค. ๋ ๋ค๋ฅธ ์ง์์ strace๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ด๋ก ์ ํ์ธํ์ต๋๋ค. ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ๋ก๊ทธ์์ WAF์ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํ์ต๋๋ค. ์คํ 14์ 02๋ถ์ ์ ์ฒด ํ์ด ์ ์๊ฒ ์ฐพ์์์ ๊ธ๋ก๋ฒ ํฌ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค๋ ์ ์์ ํ์ต๋๋ค. ๊ธ๋ก๋ฒ ํฌ์ Cloudflare์ ๋ด์ฅ๋ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ ์ธ๊ณ์์ ํ๋์ ๊ตฌ์ฑ ์์๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
WAF๋ฅผ ์ ์ธ๊ณ์ ์ผ๋ก ์ฑ๊ณต์ ์ผ๋ก ์ด์ํ ๊ฒ์ ๋ณ๊ฐ์ ์ด์ผ๊ธฐ์ ๋๋ค. ๊ทธ๋ ๊ฒ ๊ฐ๋จํ ์ผ์ ์๋๋๋ค. ์ ํฌ๋ ์ ํฌ๋ง์ ์ ํ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ ํฌ์ ์๋น์ค๋ ์๋ํ์ง ์์๊ณ , ์ธ์ฆ์ ๋ฐ์ง ๋ชปํ๊ณ ๋ด๋ถ ์ ์ดํ์ ๋ก๊ทธ์ธํ ์ ์์์ต๋๋ค(๋ชจ๋ ๊ฒ์ ํด๊ฒฐํ๊ณ ๋์์ผ ๋ด๋ถ ์ ์ดํ์ ์ฅ์๊ฐ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๊ฒฉ ์ฆ๋ช ์ ๋นํ์ฑํํ๋ ๋ณด์ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ์ผ๋ถ ํ์์ด ์ก์ธ์ค ๊ถํ์ ์์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค).
Jira๋ ๋น๋ ์์คํ ๊ฐ์ ๋ด๋ถ ์๋น์ค์ ์ ๊ทผํ ์๋ ์์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ์ง ์๋ ํด๊ฒฐ์ฑ ์ด ํ์ํ์ต๋๋ค(์ด๊ฒ ์ญ์ ํด๊ฒฐํด์ผ ํ ๊ฒ์ ๋๋ค). ๋ง์นจ๋ด ํ ์์ง๋์ด๊ฐ 14:07์ WAF๋ฅผ ๋นํ์ฑํํ๋ ๋ฐ ์ฑ๊ณตํ๊ณ , 14:09์๋ ๋ชจ๋ ๊ณณ์ ํธ๋ํฝ๊ณผ CPU ์์ค์ด ์ ์์ผ๋ก ๋์์์ต๋๋ค. Cloudflare์ ๋๋จธ์ง ๋ณด์ ๋ฉ์ปค๋์ฆ์ ์ ์์ ์ผ๋ก ์๋ํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ WAF๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์์ํ์ต๋๋ค. ์ํฉ์ด ํ์์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ณ๋์ ํธ๋ํฝ์ ์ฌ์ฉํ์ฌ ํ ๋์์์ ๋ถ์ ์ ํ ์คํธ(์ด ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๋ง ๋ฌธ์ ์ธ์ง ์๋ฌธํ๋ ๊ฒ)์ ๊ธ์ ์ ํ ์คํธ(๋กค๋ฐฑ์ด ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ)๋ฅผ ์คํํ๊ณ , ๊ทธ๊ณณ์์ ์ ๋ฃ ๊ณ ๊ฐ์ ์ด๋์์ผฐ์ต๋๋ค.
14:52์ ์ฐ๋ฆฌ๋ ์์ธ์ ํ์ ํ๊ณ ์์ ์กฐ์น๋ฅผ ์ทจํ ํ WAF๋ฅผ ๋ค์ ํ์ฑํํ์ต๋๋ค.
ํด๋ผ์ฐ๋ํ๋ ์ด ์๋ ๋ฐฉ์
Cloudflare์๋ WAF ๊ด๋ฆฌ ๊ท์น์ ์ ๋ดํ๋ ์์ง๋์ด ํ์ด ์์ต๋๋ค. ๊ทธ๋ค์ ํ์ง์จ์ ๋์ด๊ณ , ๊ฑฐ์ง ์์ฑ ํ์ ์ ๋ฎ์ถ๊ณ , ์๋ก์ด ์ํ์ด ๋ํ๋๋ฉด ์ ์ํ ๋์ํ๊ธฐ ์ํด ๋ ธ๋ ฅํฉ๋๋ค. ์ง๋ 60์ผ ๋์ WAF ๊ด๋ฆฌ ๊ท์น์ ๋ํ ๋ณ๊ฒฝ ์์ฒญ 476๊ฐ๊ฐ ์ฒ๋ฆฌ๋์์ต๋๋ค(ํ๊ท ์ ์ผ๋ก 3์๊ฐ๋ง๋ค XNUMX๊ฐ).
์ด ํน์ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ฎฌ๋ ์ด์ ๋ชจ๋์์ ๋ฐฐํฌ๋์ด์ผ ํ๋ฉฐ, ์ค์ ๊ณ ๊ฐ ํธ๋ํฝ์ ๊ท์น์ ํต๊ณผํ์ง๋ง ์๋ฌด๊ฒ๋ ์ฐจ๋จ๋์ง ์์ต๋๋ค. ์ด ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ท์น์ ํจ๊ณผ๋ฅผ ํ ์คํธํ๊ณ ๊ฑฐ์ง ์์ฑ ๋ฐ ๊ฑฐ์ง ์์ฑ์ ๋น์จ์ ์ธก์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋ฎฌ๋ ์ด์ ๋ชจ๋์์๋ ๊ท์น์ ์ค์ ๋ก ์คํํด์ผ ํ๋ฉฐ, ์ด ๊ฒฝ์ฐ ๊ท์น์ CPU ๋ฆฌ์์ค๋ฅผ ๋๋ฌด ๋ง์ด ์๋ชจํ๋ ์ ๊ท ํํ์์ด ํฌํจ๋์ด ์์์ต๋๋ค.
์์ ๋ณ๊ฒฝ ์์ฒญ์์ ๋ณผ ์ ์๋ฏ์ด ์ด๋ฌํ ์ ํ์ ๋ฐฐํฌ์๋ ๋ฐฐํฌ ๊ณํ, ๋กค๋ฐฑ ๊ณํ ๋ฐ ๋ด๋ถ ํ์ค ์ด์ ์ ์ฐจ(SOP)์ ๋ํ ์ฐธ์กฐ๊ฐ ์์ต๋๋ค. ๊ท์น์ ๋ณ๊ฒฝํ๊ธฐ ์ํ SOP(ํ์ค์ด์์ ์ฐจ)๋ฅผ ํตํด ์ ์ธ๊ณ์ ์ผ๋ก ๊ณต๊ฐํ ์ ์์ต๋๋ค. ์ฌ์ค, Cloudflare์์๋ ์ํฉ์ด ๋งค์ฐ ๋ค๋ฅด๊ฒ ์ค์ ๋์ด ์์ผ๋ฉฐ SOP์ ๋ฐ๋ฅด๋ฉด ๋จผ์ ์ํํธ์จ์ด๋ฅผ ํ ์คํธ ๋ฐ ๋ด๋ถ ์ฌ์ฉ์ ์ํด ์ง์์ด ์ฌ์ฉํ๋ ๋ด๋ถ ์ ์ ์ง์ (PoP)์ผ๋ก ๋ณด๋ธ ๋ค์, ๊ฒฉ๋ฆฌ๋ ์์น์ ์๋ ์์์ ๊ณ ๊ฐ์๊ฒ ๋ณด๋ธ ๋ค์, ๊ทธ๋ฐ ๋ค์ ๋ค์์ ๊ณ ๊ฐ์๊ฒ ๋ณด๋ธ ํ, ๊ทธ๋ฐ ๋ค์์์ผ ์ ์ธ๊ณ๋ก ๋ณด๋ ๋๋ค.
์ด๊ฒ์ด ๊ทธ ๋ชจ์ต์ ๋๋ค. ์ฐ๋ฆฌ๋ BitBucket์ ํตํด ๋ด๋ถ์ ์ผ๋ก git์ ์ฌ์ฉํฉ๋๋ค. ๋ณ๊ฒฝ ์์ ์ ์งํํ๋ ์์ง๋์ด๋ TeamCity์์ ๋น๋๋ ์ฝ๋๋ฅผ ์ ์ถํ๊ณ , ๋น๋๊ฐ ํต๊ณผ๋๋ฉด ๊ฒํ ์๊ฐ ํ ๋น๋ฉ๋๋ค. ํ ๋ฆฌํ์คํธ๊ฐ ์น์ธ๋๋ฉด ์ฝ๋๊ฐ ๋น๋๋๊ณ ์ผ๋ จ์ ํ ์คํธ๊ฐ (๋ค์) ์คํ๋ฉ๋๋ค.
๋น๋์ ํ ์คํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด Jira์ ๋ณ๊ฒฝ ์์ฒญ์ด ์์ฑ๋๊ณ ํด๋น ๊ด๋ฆฌ์ ๋๋ ๋ฆฌ๋๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์น์ธํด์ผ ํฉ๋๋ค. ์น์ธ๋๋ฉด ๋ฐฐ์น๋ ์์ "PoP ๋๋ฌผ์"์ธ DOG, PIG๋ก ์งํ๋ฉ๋๋ค. (๊ฐ, ๋ผ์ง, ์นด๋๋ฆฌ์).
DOG PoP๋ Cloudflare ์ง์๋ง ์ฌ์ฉํ๋ Cloudflare PoP(๋ค๋ฅธ ๋์์ ๋ง์ฐฌ๊ฐ์ง๋ก)์ ๋๋ค. ๋ด๋ถ์ฉ PoP๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ ๊ฐ ํธ๋ํฝ์ด ์๋ฃจ์ ์ผ๋ก ์ ์ ๋๊ธฐ ์ ์ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ ์ ์์ต๋๋ค. ์ ์ฉํ ์ ๋ณด.
DOG ํ
์คํธ๋ฅผ ํต๊ณผํ๋ฉด ์ฝ๋๋ PIG(๊ธฐ๋ํผ๊ทธ) ๋จ๊ณ๋ก ์ด๋ํฉ๋๋ค. ์ด๋ ์๋์ ๋ฌด๋ฃ ๊ณ ๊ฐ ํธ๋ํฝ์ด ์๋ก์ด ์ฝ๋๋ฅผ ํตํด ์ ๋ฌ๋๋ Cloudflare PoP์
๋๋ค.
๋ชจ๋ ๊ฒ์ด ์๋๋ฉด ์ฝ๋๋ Canary์ ํธ์๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์ 3๊ฐ์ Canary PoP๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ์ฝ๋์์๋ ์ ๋ฃ ๋ฐ ๋ฌด๋ฃ ๊ณ ๊ฐ์ ํธ๋ํฝ์ด ์๋ก์ด ์ฝ๋๋ฅผ ํต๊ณผํ๋ฉฐ, ์ฌ๊ธฐ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ์ต์ข
๊ฒ์ฌ๊ฐ ์ํ๋ฉ๋๋ค.
Cloudflare์ ์ํํธ์จ์ด ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค
Canary์์ ์ฝ๋๊ฐ ๋ฌธ์ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ฆด๋ฆฌ์คํฉ๋๋ค. DOG, PIG, Canary, ์ ์ธ๊ณ ๋ฑ ๋ชจ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ ๋ฐ๋ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๋ช ์๊ฐ์์ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฝ๋๋ค. Cloudflare๋ ๋ค์ํ ๋คํธ์ํฌ์ ๊ณ ๊ฐ์ ๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ์ธ๊ณ ๋ชจ๋ ๊ณ ๊ฐ์๊ฒ ์ถ์ํ๊ธฐ ์ ์ ์ฝ๋๋ฅผ ์ฒ ์ ํ ํ ์คํธํฉ๋๋ค. ํ์ง๋ง WAF๋ ์ํ์ ์ ์ํ ๋์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํ๋ก์ธ์ค๋ฅผ ํน๋ณํ ๋ฐ๋ฅด์ง ์์ต๋๋ค.
WAF ์ํ
์ต๊ทผ ๋ช ๋
๋์ ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ํ์ด ํฌ๊ฒ ์ฆ๊ฐํ์ต๋๋ค. ์ด๋ ์ํํธ์จ์ด ํ
์คํ
๋๊ตฌ์ ๊ฐ์ฉ์ฑ์ด ๋์์ก๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ์ต๊ทผ์ ๋ค์์ ๋ํด ์ผ์ต๋๋ค. ).

์ถ์ฒ :
๊ฐ๋ ์ฆ๋ช ์ด ์์ฑ๋์ด ์ฆ์ Github์ ๊ฒ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋งค์ฐ ๋ง์ผ๋ฏ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง ๊ด๋ฆฌํ๋ ํ์ด ์ด๋ฅผ ๋น ๋ฅด๊ฒ ํ ์คํธํ๊ณ ๋ณด์์ด ์ ์ ํ ์ ์ง๋๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Cloudflare๋ ๊ณ ๊ฐ์ด ์ํํธ์จ์ด์ ํจ์น๋ฅผ ์ ์ฉํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ต๋ํ ๋นจ๋ฆฌ ์๋ก์ด ๊ณต๊ฒฉ์ ๋์ํ ์ ์์ด์ผ ํฉ๋๋ค.
Cloudflare์ ์ ์ํ ๋์์ ๋ํ ์ข์ ์๋ 5์์ SharePoint ์ทจ์ฝ์ฑ์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ถ์ํ ๊ฒ์ ๋๋ค.). ๊ณต์ง ์ฌํญ์ ๊ฒ์ํ ์งํ, ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ์ SharePoint ์ค์น์์ ํด๋น ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ค๋ ์๋๊ฐ ์์ฒญ๋๊ฒ ๋ง์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ฐ๋ฆฌ ์ง์๋ค์ ๋์์์ด ์๋ก์ด ์ํ์ ๋ชจ๋ํฐ๋งํ๊ณ ๊ณ ๊ฐ์ ๋ณดํธํ๊ธฐ ์ํด ๊ท์น์ ์์ฑํฉ๋๋ค.
๋ชฉ์์ผ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ๊ท์น์ XSS(๊ต์ฐจ ์ฌ์ดํธ ์คํฌ๋ฆฝํ )๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ด์์ต๋๋ค. ์ต๊ทผ ๋ช ๋ ๋์ ์ด๋ฐ ๊ณต๊ฒฉ์ด ํจ์ฌ ๋ ๋น๋ฒํด์ก์ต๋๋ค.

์ถ์ฒ :
WAF์ ๊ด๋ฆฌ ๊ท์น์ ๋ณ๊ฒฝํ๊ธฐ ์ํ ํ์ค ์ ์ฐจ๋ ๊ธ๋ก๋ฒ ๋ฐฐํฌ์ ์์ CI(์ง์์ ์ธ ํตํฉ) ํ ์คํธ๋ฅผ ์ํํ๋ ๊ฒ์ ๋๋ค. ์ง๋ ๋ชฉ์์ผ์ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์คํํ๊ณ ๊ท์น์ ๋ฐํํ์ต๋๋ค. ์คํ 13์ 31๋ถ์ ํ ์์ง๋์ด๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ด์ ์น์ธ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ต๋๋ค.

13:37์ TeamCity๋ ๊ท์น์ ์์งํ๊ณ ํ ์คํธ๋ฅผ ์คํํ ํ ์น์ธ์ ๋ด๋ ธ์ต๋๋ค. WAF ํ ์คํธ ๋ชจ์์ WAF์ ํต์ฌ ๊ธฐ๋ฅ์ ๊ฒ์ฌํ๋ฉฐ ๊ฐ๋ณ ๊ธฐ๋ฅ์ ๋ํ ๋ค์์ ๋จ์ ํ ์คํธ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋จ์ ํ ์คํธ ํ, ์ฐ๋ฆฌ๋ ์์ฒญ๋ ์์ HTTP ์์ฒญ์ ํตํด WAF ๊ท์น์ ํ ์คํธํ์ต๋๋ค. HTTP ์์ฒญ์ WAF์์ ์ด๋ค ์์ฒญ์ ์ฐจ๋จํด์ผ ํ๋์ง(๊ณต๊ฒฉ์ ๊ฐ๋ก์ฑ๊ธฐ ์ํด)์ ์ด๋ค ์์ฒญ์ ํ์ฉํด์ผ ํ๋์ง(๋ชจ๋ ๊ฒ์ ์ฐจ๋จํ๊ณ ๊ฑฐ์ง ๊ธ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด) ํ์ธํฉ๋๋ค. ํ์ง๋ง ๊ณผ๋ํ CPU ์ฌ์ฉ๋ฅ ์ ๋ํ ํ ์คํธ๋ ํ์ง ์์๊ณ , ์ด์ WAF ๋น๋์ ๋ก๊ทธ๋ฅผ ์ดํด๋ณด๋ฉด ๊ท์น์ ์ ์ฉํ ํ ์คํธ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ์ง ์์์ผ๋ฉฐ, ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์์ฌํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
ํ ์คํธ๊ฐ ํต๊ณผ๋์๊ณ TeamCity๋ ์คํ 13์ 42๋ถ์ ์๋์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐํฌํ๊ธฐ ์์ํ์ต๋๋ค.
์์
WAF ๊ท์น์ ์ํ์ ์ฆ์ ํด๊ฒฐํ๋๋ก ์ค๊ณ๋์์ผ๋ฏ๋ก Quicksilver์ ๋ถ์ฐ ํค-๊ฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ท์น์ ๋ฐฐํฌํ๋ฉด ๋ช ์ด ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ญ์ผ๋ก ์ ํ๋ฉ๋๋ค. ๋ชจ๋ ๊ณ ๊ฐ์ ๋์๋ณด๋๋ API๋ฅผ ํตํด ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ๋ ์ด ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ด ๊ธฐ์ ๋๋ถ์ ๋น์ฌ๋ ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅธ ์๋๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋์ํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํต์ค๋ฒ์ ๋ํด ๋ณ๋ก ์ด์ผ๊ธฐํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ฉํ๊ณค ํ์ด์ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ํค-๊ฐ ์ ์ฅ์์์ง๋ง ์ด์์์ ๋ฌธ์ ๊ฐ ์์๊ธฐ ๋๋ฌธ์ 180๊ฐ ์ด์์ ๋์์ ๋ณต์ ๋ ์์ฒด ์ ์ฅ์๋ฅผ ์์ฑํ์ต๋๋ค. ์ด์ Quicksilver๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํ๊ณ , WAF ๊ท์น์ ์ ๋ฐ์ดํธํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ JavaScript๋ฅผ Cloudflare Workers์ ๋ฐฐํฌํฉ๋๋ค.
๋์๋ณด๋์์ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ API๋ฅผ ํธ์ถํ๋ ๊ฒ๋ถํฐ ์ ์ธ๊ณ์ ์ผ๋ก ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ถ๊ณผ ๋ช ์ด์ ๋๋ค. ๊ณ ๊ฐ๋ค์ ์ด๋ฌํ ์ค์ ์๋๋ฅผ ์ข์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Workers๋ ๊ทธ๋ค์๊ฒ ๊ฑฐ์ ์ฆ๊ฐ์ ์ธ ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๋ฐฐํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๊ท ์ ์ผ๋ก Quicksilver๋ ์ด๋น ์ฝ 350๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ํํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํต์ค๋ฒ๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์๋ํฉ๋๋ค. ํ๊ท ์ ์ผ๋ก ์ ์ธ๊ณ ๋ชจ๋ ์ปดํจํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ํ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ 99% ์๊ฐ์ 2,29์ด์์ต๋๋ค. ์๋๋ ๋๊ฐ ์ข์ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ตญ, ์ด๋ค ๊ธฐ๋ฅ์ ์ผ๊ฑฐ๋ ์บ์๋ฅผ ์ง์ฐ๋ฉด ๊ทธ ์ผ์ ๊ฑฐ์ ์ฆ์ ๋ชจ๋ ๊ณณ์์ ์ผ์ด๋ฉ๋๋ค. Cloudflare Workers๋ฅผ ํตํ ์ฝ๋ ์ ์ก์ ๋์ผํ ์๋๋ก ์งํ๋ฉ๋๋ค. Cloudflare๋ ๊ณ ๊ฐ์๊ฒ ํ์ํ ๋ ๋น ๋ฅธ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ ๊ฒ์ ์ฝ์ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฒ ๊ฒฝ์ฐ, ์๋๋ ์ฐ๋ฆฌ์๊ฒ ์์ธํ ์ฅ๋์ ์ณค๊ณ , ๋ช ์ด ๋ง์ ๋ชจ๋ ๊ณณ์ ๊ท์น์ด ๋ฐ๋์์ต๋๋ค. WAF ์ฝ๋๊ฐ Lua๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋์ฌ๊ฒจ๋ณด์ จ์ ๊ฒ๋๋ค. Cloudflare๋ ํ๋ก๋์ ์์ Lua๋ฅผ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๊ณ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฐ๋ฆฌ . Lua WAF๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค. ๋ด๋ถ์์ ์ญ์ถ์ ์ ์ฌ์ฉํ์ฌ ์ผ์น์ํต๋๋ค. ํต์ ๋ถ๋ฅ์ ํํ์ ๋ฐฉ์งํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ์๋์์ ์ด ๋ฌธ์ ์ ์ด์ ๋ํ ์ฐ๋ฆฌ์ ๋์ ๋ฐฉ์์ ๋ํด ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๊ท์น์ด ๋ฐฐํฌ๋๊ธฐ ์ ์๋ ๋ชจ๋ ๊ฒ์ด ์์กฐ๋กญ๊ฒ ์งํ๋์์ต๋๋ค. ํ ๋ฆฌํ์คํธ๊ฐ ์์ฑ๋์ด ์น์ธ๋์๊ณ , CI/CD ํ์ดํ๋ผ์ธ์ด ์ฝ๋๋ฅผ ๋น๋ํ๊ณ ํ ์คํธํ์ผ๋ฉฐ, ๋ฐฐํฌ ๋ฐ ๋กค๋ฐฑ์ ๊ท์ ํ๋ SOP์ ๋ฐ๋ผ ๋ณ๊ฒฝ ์์ฒญ์ด ์ ์ถ๋์๊ณ , ๋ฐฐํฌ๊ฐ ์๋ฃ๋์์ต๋๋ค.
Cloudflare WAF ๋ฐฐํฌ ํ๋ก์ธ์ค
๋ฌด์์ด ์๋ชป ๋์์ต๋๊น?
์ ๊ฐ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ, ์ฐ๋ฆฌ๋ ๋งค์ฃผ ์์ญ ๊ฐ์ ์๋ก์ด WAF ๊ท์น์ ๋ฐฐํฌํ๊ณ ์ด๋ฌํ ๋ฐฐํฌ์ ๋ถ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ง์ ๋ณดํธ ์์คํ
์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌด์์ธ๊ฐ ์๋ชป๋ ๋๋ ๋ณดํต ์ฌ๋ฌ๊ฐ์ง ์ํฉ์ด ๋ณตํฉ์ ์ผ๋ก ์ฝํ ๋ฐ์ํฉ๋๋ค. ๋จ ํ๋์ ์ด์ ๋ฅผ ์ฐพ์ผ๋ฉด ํ์คํ ์์ฌ์ด ๋์ง๋ง, ํญ์ ํ์ค๊ณผ ์ผ์นํ๋ ๊ฒ์ ์๋๋๋ค. HTTP/HTTPS ์๋น์ค๊ฐ ์คํจํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ง๋์ด๊ฐ ๊ณผ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ ์ ๊ท ํํ์์ ์์ฑํ์ต๋๋ค. .
- ๋ช ์ฃผ ์ WAF ๋ฆฌํฉํ ๋ง ์ค์ ์ ๊ท ํํ์์ด CPU๋ฅผ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ ๊ธฐ๋ฅ์ด ์ค์๋ก ์ ๊ฑฐ๋์์ต๋๋ค. ์ด ๋ฆฌํฉํ ๋ง์ WAF๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ ์๋ชจํ๋๋ก ํ๊ธฐ ์ํด ํ์ํ์ต๋๋ค.
- ์ ๊ท ํํ์ ์์ง์ ๋ณต์ก์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
- ํ ์คํธ ๋ชจ์์ ๊ณผ๋ํ CPU ์ฌ์ฉ๋์ ๊ฐ์งํ์ง ๋ชปํ์ต๋๋ค.
- SOP ์ ์ฐจ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋จ๊ณ์ ๊ณผ์ ์์ด ๊ธด๊ธํ์ง ์์ ๊ท์น ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ธ๊ณ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- ๋กค๋ฐฑ ๊ณํ์ ์คํํ๋ ค๋ฉด ์ ์ฒด WAF ๋น๋๋ฅผ ๋ ๋ฒ ์คํํด์ผ ํ๋ฏ๋ก ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค.
- ์ธ๊ณ์ ๊ตํต ๋ฌธ์ ์ ๋ํ ์ฒซ ๋ฒ์งธ ๊ฒฝ๊ณ ๋ ๋๋ฌด ๋ฆ๊ฒ ๋์์ต๋๋ค.
- ์ํ ํ์ด์ง ์ ๋ฐ์ดํธ๊ฐ ๋๋ ธ์ต๋๋ค.
- ๊ฒฐํจ์ผ๋ก ์ธํด ์์คํ ์ ์ ๊ทผํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ผ๋ฉฐ ํด๊ฒฐ ์ ์ฐจ๊ฐ ์ ๋๋ก ๊ฐ๋ฐ๋์ง ์์์ต๋๋ค.
- ๋ณด์์์ ์ด์ ๋ก SRE ์์ง๋์ด์ ์๊ฒฉ ์ฆ๋ช ์ด ๋ง๋ฃ๋์ด ์ผ๋ถ ์์คํ ์ ์ก์ธ์คํ ์ ์๊ฒ ๋์์ต๋๋ค.
- ์ ํฌ ๊ณ ๊ฐ์ Cloudflare ์ง์ญ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ Cloudflare ๋์๋ณด๋๋ API์ ์ก์ธ์คํ ์ ์์์ต๋๋ค.
์ง๋ ๋ชฉ์์ผ ์ดํ๋ก ๋ฌด์์ด ๋ฐ๋์๋์?
์ฒซ์งธ, WAF ๋ฆด๋ฆฌ์ค ์์ ์ ๋ชจ๋ ์์ ํ ์ค๋จํ์ผ๋ฉฐ ๋ค์ ์์ ์ ์งํํ๊ณ ์์ต๋๋ค.
- ๊ณผ๋ํ ํ๋ก์ธ์ ๋ฆฌ์์ค ์๋น๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๊ฑฐํ๋ ๋ณดํธ ๊ธฐ๋ฅ์ ๋ค์ ๋์ ํฉ๋๋ค. (์ค๋น๊ฐ ๋)
- WAF์ ๊ด๋ฆฌ ๊ท์น์ ์๋ 3868๊ฐ ๊ท์น์ ๋ชจ๋ ์๋์ผ๋ก ๊ฒํ ํ์ฌ ๊ณผ๋ํ ์ญ์ถ์ ์ ๋ค๋ฅธ ์ ์ฌ์ ์ฌ๋ก๋ฅผ ์ฐพ์ ์์ ํฉ๋๋ค. (ํ์ธ ์๋ฃ)
- ์ฐ๋ฆฌ๋ ํ ์คํธ ๋ชจ์์ ๋ชจ๋ ๊ท์น์ ๋ํด ์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ํฌํจํ์ต๋๋ค. (์์ : 19์ XNUMX์ผ)
- ์ ๊ท ํํ์ ์์ง์ผ๋ก ์ด๋ ๋๋ - ๋ ๋ค ์คํ ํ๊ฒฝ์์ ๋ณด์ฅ์ ์ ๊ณตํฉ๋๋ค. (์์ : 31์ XNUMX์ผ)
- Cloudflare์ ๋ค๋ฅธ ์ํํธ์จ์ด์ฒ๋ผ ๋จ๊ณ์ ์ผ๋ก ๊ท์น์ ๋ฐฐํฌํ๊ธฐ ์ํด SOP๋ฅผ ๋ค์ ์์ฑ ์ค์ด์ง๋ง, ๊ณต๊ฒฉ์ด ์ด๋ฏธ ์์๋ ๊ฒฝ์ฐ์๋ ๋น์ ๊ธ๋ก๋ฒ ๋ฐฐํฌ๋ฅผ ์ํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ ํ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
- ์ฐ๋ฆฌ๋ Cloudflare ์ง์ญ์์ Cloudflare ๋์๋ณด๋์ API๋ฅผ ๊ธด๊ธํ๊ฒ ์ถ์ํ ์ ์๋ ์ญ๋์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.
- ํ์ด์ง ์๋ก ๊ณ ์นจ ์๋ํ .
์ฅ๊ธฐ์ ์ผ๋ก ์ ํฌ๋ ๋ช ๋ ์ ์ ์ ๊ฐ ์์ฑํ Lua WAF์์ ๋ฒ์ด๋๊ณ ์์ต๋๋ค. WAF๋ฅผ ๋ค์์ผ๋ก ์ด๋ ์ค์ ๋๋ค. . ์ด๋ ๊ฒ ํ๋ฉด WAF๊ฐ ๋ ๋นจ๋ผ์ง๊ณ ๋ณดํธ ์์ค๋ ํ ๋จ๊ณ ๋์์ง๋๋ค.
๊ฒฐ๋ก
์ด๋ฒ ์๋น์ค ์ค๋จ์ผ๋ก ์ธํด ์ ํฌ์ ์ ํฌ ๊ณ ๊ฐ์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ ํฌ๋ ์ํฉ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ํ ๋์ํ์ผ๋ฉฐ, ํ์ฌ๋ ์ค๋จ์ ์ผ์ผํจ ํ๋ก์ธ์ค์ ๊ฒฐํจ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ, ์๋ก์ด ๊ธฐ์ ๋ก ์ด์ ํ๋ฉด์ ์ ๊ท ํํ์๊ณผ ๊ด๋ จํ์ฌ ๋ฐ์ํ ์ ์๋ ํฅํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋์ฑ ์ฌ์ธต์ ์ผ๋ก ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
์ด๋ฒ ์๋น์ค ์ค๋จ์ ๋ํด ์ง์ฌ์ผ๋ก ์ฌ๊ณผ๋๋ฆฌ๋ฉฐ, ๊ณ ๊ฐ ์ฌ๋ฌ๋ถ๊ป ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ์ด๋ฌํ ๋ณํ๋ฅผ ํตํด ์ด๋ฐ ์ผ์ด ๋ค์ ์ผ์ด๋์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ . ์ ๊ท ํํ์ ๋ฐฑํธ๋ํน
๋ค์ ํํ์ ์ดํดํ๋ ค๋ฉด:
(?:(?:"|'|]|}||d
(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-
|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))CPU ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ์๋ชจํ๋ฏ๋ก ํ์ค ์ ๊ท ํํ์ ์์ง์ ์๋ ๋ฐฉ์์ ๋ํด ์กฐ๊ธ ์์์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ํจํด์ ์์ต๋๋ค. .*(?:.*=.*). (?: ๊ทธ๋ฆฌ๊ณ ํด๋น ) โ ์ด๊ฒ์ ์บก์ฒ๋ง ๊ทธ๋ฃน์ด ์๋๋๋ค. (์ฆ, ๊ดํธ ์์ ํํ์์ ๋จ์ผ ํํ์์ผ๋ก ๊ทธ๋ฃนํ๋ฉ๋๋ค.)
๊ณผ๋ํ CPU ์๋ชจ์ ๋งฅ๋ฝ์์ ์ด ํจํด์ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช
๋ ์ ์์ต๋๋ค. .*.*=.*. ์ด ํํ์์๋ ํจํด์ด ์ง๋์น๊ฒ ๋ณต์กํด ๋ณด์ธ๋ค. ํ์ง๋ง ๋ ์ค์ํ ์ ์, ์ค์ ์ธ๊ณ์์๋ WAF ๊ท์น์ ๋ณต์กํ ํํ์๊ณผ ๊ฐ์ด ์์ง์ ์กฐ๊ฐ์ ๋งค์นญํ ๋ค์ ๋ค๋ฅธ ์กฐ๊ฐ์ ๋งค์นญํ๋๋ก ์์ฒญํ๋ ํํ์์ ์น๋ช
์ ์ธ ์ญ์ถ์ ์ ์ด๋ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

์ ๊ท ํํ์์์ . ํ ๋ฌธ์๋ง ์ผ์นํด์ผ ํ๋ค๋ ์๋ฏธ์
๋๋ค. .* โ ๊ฐ๋ฅํ ํ ๋ง์ ๋ฌธ์๋ฅผ ์บก์ฒํ์ฌ 0๊ฐ ์ด์์ ๋ฌธ์๋ฅผ ํ์์ ์ผ๋ก ์ผ์น์ํต๋๋ค. .*.*=.* 0๊ฐ ์ด์์ ๋ฌธ์์ ์ผ์นํ๊ณ , 0๊ฐ ์ด์์ ๋ฌธ์์ ์ผ์นํ๊ณ , ๋ฆฌํฐ๋ด = ๋ฌธ์๋ฅผ ์ฐพ๊ณ , 0๊ฐ ์ด์์ ๋ฌธ์์ ์ผ์นํฉ๋๋ค.
ํ
์คํธ ๋ฌธ์์ด์ ๊ฐ์ ธ์ ๋ณด์ x=x. ์ด๋ ํํ๊ณผ ์ผ์นํฉ๋๋ค .*.*=.*. .*.* ๋ฑํธ๊ฐ ์ฒซ ๋ฒ์งธ์ ๋์ํ๊ธฐ ์ ์ x (๊ทธ๋ฃน ์ค ํ๋ .* ์ผ์น x, ๋ ๋ฒ์งธ๋ 0๊ฐ์ ๋ฌธ์). .* after = ๋ง์ง๋ง๊ณผ ์ผ์นํฉ๋๋ค x.
์ด ๋น๊ต์๋ 23๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน .* ะฒ .*.*=.* "ํ์์ค๋ฝ๊ฒ" ํ๋ํ๊ณ ์ ์ฒด ์ค๊ณผ ์ผ์นํฉ๋๋ค. x=x. ์์ง์ด ๋ค์ ๊ทธ๋ฃน์ผ๋ก ์ด๋ํฉ๋๋ค. .*. ๋ ์ด์ ์ผ์น์ํฌ ๋ฌธ์๊ฐ ์์ผ๋ฏ๋ก ๋ ๋ฒ์งธ ๊ทธ๋ฃน .* 0๊ฐ์ ๋ฌธ์์ ์ผ์นํฉ๋๋ค(ํ์ฉ๋ฉ๋๋ค). ๊ทธ๋ฐ ๋ค์ ์์ง์ด ํ์งํ์ผ๋ก ์ด๋ํฉ๋๋ค. =. ๋ ์ด์ ์ฌ๋ณผ์ด ์์ต๋๋ค(์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน) .* ํํ ์ ์ฒด๋ฅผ ์ฌ์ฉํ๋ค x=x), ์ผ์น๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ ๊ท ํํ์ ์์ง์ ์ฒ์์ผ๋ก ๋์๊ฐ๋๋ค. ๊ทธ๋ ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน์ผ๋ก ์ด๋ํฉ๋๋ค. .* ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋น๊ตํ๋ค ั x= (๋์ x=x), ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ๊ทธ๋ฃน์ ๋งก์ต๋๋ค. .*. ๋ ๋ฒ์งธ ๊ทธ๋ฃน .* ๋ ๋ฒ์งธ์ ๋น๊ต๋๋ค x, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ ์ด์ ์์ง์ ๋จ๊ธฐ์ง ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง์ด ๋ค์ ์๋์ ๋๋ฌํ๋ฉด = ะฒ .*.*=.*, ์๋ฌด๊ฒ๋ ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ค์ ํํดํ๊ณ ์์ต๋๋ค.
์ด๋ฒ์๋ ๊ทธ๋ฃน .* ์์ง๋ ๋ง๋ค x=, ํ์ง๋ง ๋ ๋ฒ์งธ ๊ทธ๋ฃน .* ๋ ์ด์์ ์์ด x, ๊ทธ๋ฆฌ๊ณ 0๊ฐ์ ๋ฌธ์. ์์ง์ด ๋ฌธ์ ๊ทธ๋๋ก์ ๋ฌธ์๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค. = ํจํด์์ .*.*=.*, ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค. (๊ฒฐ๊ตญ ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน์ ์ด๋ฏธ ๊ทธ๊ฒ์ ๊ฐ์ ธ๊ฐ์ต๋๋ค. .*). ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ค์ ํํดํ๊ณ ์์ต๋๋ค.
์ด๋ฒ์๋ ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน .* ์ฒซ ๋ฒ์งธ x๋ง ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ๋ ๋ฒ์งธ ๊ทธ๋ฃน์ .* "ํ์์ค๋ฝ๊ฒ" ํฌ์ฐฉํ๋ค =x. ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ์ด๋ฏธ ์ถ์ธกํ์
จ๋์? ์์ง์ ๋ฌธ์ ๊ทธ๋๋ก์ ์๋ฏธ์ ์ผ์นํ๋ ค๊ณ ํฉ๋๋ค. =, ์คํจํ๊ณ ๋ ๋ค์ ํํดํฉ๋๋ค.
์ ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน .* ์์ง๋ ์ฒซ ๋ฒ์งธ์ ์ผ์นํฉ๋๋ค x. ๋๋ฒ์งธ .* ๋ง ๊ฑธ๋ฆฝ๋๋ค =. ๋ฌผ๋ก ์์ง์ ๋ฌธ์ ๊ทธ๋๋ก์ ์๋ฏธ์ ์ผ์นํ ์ ์์ต๋๋ค. =, ๋ ๋ฒ์งธ ๊ทธ๋ฃน์ ์ด๋ฏธ ๊ทธ๊ฒ์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. .*. ๊ทธ๋ฆฌ๊ณ ๋ ํํดํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ธ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ผ์น์ํค๋ ค๊ณ ํฉ๋๋ค!
๊ทธ ๊ฒฐ๊ณผ, ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน์ .* ์ฒซ ๋ฒ์งธ์๋ง ์ผ์นํฉ๋๋ค x, ๋๋ฒ์งธ .* โ ๋ฌธ์๊ฐ 0๊ฐ์ด๊ณ ์์ง์ด ๋ง์นจ๋ด ๋ฆฌํฐ๋ด๊ณผ ์ผ์นํฉ๋๋ค. = ํํ์์ ั = ์ค์ ์์. ๋ค์์ ๋ง์ง๋ง ๊ทธ๋ฃน์
๋๋ค .* ๋ง์ง๋ง ๊ฒ๊ณผ ๋น๊ต๋๋ค x.
23๋จ๊ณ๋ง ๊ฐ๋ฅ x=x. Perl ์ฌ์ฉ์ ๋ํ ์งง์ ๋น๋์ค๋ฅผ ์์ฒญํ์ธ์ ์ด๋ ๋จ๊ณ์ ํํด๊ฐ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ๋ณด์ฌ์ค๋๋ค.

์ด๋ฏธ ๋ง์ ์์
์ด์ง๋ง ๋์ x=x ์ฐ๋ฆฌ๋ ๊ฐ์ง ๊ฒ์ด๋ค x=xx? 33๊ฑธ์์ด์์. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ x=xxx? 45. ์ข
์์ฑ์ ์ ํ์ ์ด์ง ์์ต๋๋ค. ๊ทธ๋ํ๋ ๋ค์์ ๋น๊ต๋ฅผ ๋ณด์ฌ์ค๋๋ค. x=x ์ x=xxxxxxxxxxxxxxxxxxxx (20 x ํ =). ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ 20 x๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด =์์ง์ 555๋จ๊ณ๋ก ๋งค์นญ์ ์ํํฉ๋๋ค! (๊ทธ๋ฟ๋ง ์๋๋ผ ์ฐ๋ฆฌ๊ฐ ์ก๋ค๋ฉด x= ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ผ์ธ์ ๋จ 20๊ฐ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค x์์ง์ ์ผ์นํ๋ ํญ๋ชฉ์ด ์์์ ํ์
ํ๊ธฐ ์ํด 4067๋จ๊ณ๋ฅผ ๊ฑฐ์นฉ๋๋ค).

์ด ๋น๋์ค๋ ๋น๊ต๋ฅผ ์ํด ๋ชจ๋ ๋ฐฑํธ๋ํน์ ๋ณด์ฌ์ค๋๋ค. x=xxxxxxxxxxxxxxxxxxxx:

๋ฌธ์ ๋ ๋ฌธ์์ด ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ๋งค์นญ ์๊ฐ์ด ์ด์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์
๋๋ค. ํ์ง๋ง ์ ๊ท ํํ์์ ์กฐ๊ธ๋ง ๋ฐ๊พธ๋ฉด ์ํฉ์ด ๋ ๋๋น ์ง ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์ .*.*=.*; (์ฆ, ํจํด์ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ด ๋ฌธ์ ๊ทธ๋๋ก ์์์ต๋๋ค). ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ํํ์๊ณผ ์ผ์นํ๋ ค๋ฉด foo=bar;.
์ฌ๊ธฐ์ ํํดํ๋ฉด ์ ๋ง ์ฌ์์ด ๋ ๊ฒ์
๋๋ค. ๋น๊ต๋ฅผ ์ํด x=x 90๊ฑธ์ ๋์ 23๊ฑธ์์ด ๊ฑธ๋ฆด ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ซ์๋ ๋น ๋ฅด๊ฒ ๋์ด๋๊ณ ์์ต๋๋ค. ๋น๊ตํ๋ค x= ๋ฐ 20 x, 5353๊ฐ์ ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ถ์ ๊ฐ์ ์ดํด๋ณด์ธ์ Y ์ด์ ๊ทธ๋ํ์ ๋น๊ตํด์.

๊ด์ฌ์ด ์์ผ์๋ค๋ฉด ์คํจํ ๋งค์นญ์ 5353๋จ๊ณ๋ฅผ ๋ชจ๋ ํ์ธํด๋ณด์ธ์. x=xxxxxxxxxxxxxxxxxxxx ะธ .*.*=.*;

ํ์์ ๋งค์นญ๋ณด๋ค๋ ๊ฒ์ผ๋ฅธ ๋งค์นญ์ ์ฌ์ฉํ๋ฉด ๋ฐฑํธ๋ํน ๋ฒ์๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์๋ ํํ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊พธ๋ฉด .*?.*?=.*?, ๋น๊ต๋ฅผ ์ํด x=x 11๊ฑธ์์ด ํ์ํฉ๋๋ค(23๊ฑธ์์ด ์๋๋๋ค). ์ ๊ดํด์๋ x=xxxxxxxxxxxxxxxxxxxx. ๊ทธ๊ฒ์ ๋ชจ๋ ๋๋ฌธ์ ? ํ .* ์์ง์ ์ต์ํ์ ๋ฌธ์ ์๋ฅผ ์ผ์น์ํจ ํ์ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ผ๊ณ ์ง์ํฉ๋๋ค.
ํ์ง๋ง "๊ฒ์ผ๋ฅธ" ๋น๊ต๋ก๋ ์ญ์ถ์ ๋ฌธ์ ๊ฐ ์์ ํ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์์ ์ธ ์๋ฅผ ๋์ฒดํ๋ค๋ฉด .*.*=.*; ์ .*?.*?=.*?;์คํ ์๊ฐ์ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. x=x ์ฌ์ ํ 555๋จ๊ณ๊ฐ ํ์ํ์ง๋ง x= ๋ฐ 20 x - 5353.
(ํจํด์ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์ ํ ๋ค์ ์์ฑํ๋ ๊ฒ ์ธ์) ํ ์ ์๋ ์ ์ผํ ์ผ์ ๋ฐฑํธ๋ํน ๋ฉ์ปค๋์ฆ์ ๊ฐ์ถ ์ ๊ท ํํ์ ์์ง์ ๋ฒ๋ฆฌ๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์์ผ๋ก ๋ช ์ฃผ ๋์ ์ด๋ฐ ์ผ์ ํ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ 1968๋ Kent Thompson์ด ๊ธฐ์ฌ๋ฅผ ์ด ์ดํ๋ก ์๋ ค์ ธ ์์ต๋๋ค. ("ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ: ์ ๊ท ํํ์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ"). ์ด ๋ ผ๋ฌธ์์๋ ์ ๊ท ํํ์์ ๋น๊ฒฐ์ ์ ์ ํ ์คํ ๋งํ๋ก ๋ณํํ๋ ๋ฉ์ปค๋์ฆ๊ณผ, ๋น๊ฒฐ์ ์ ์ ํ ์คํ ๋งํ์์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ํ, ์ผ์นํ๋ ๋ฌธ์์ด์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ์ ํ์ ์ผ๋ก ๋ฌ๋ผ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
์ ๊ท ํํ์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ
์ผ ํฐ์จ
๋ฒจ ์ ํ ์ฐ๊ตฌ์(Bell Telephone Laboratories, Inc.), ๋ด์ ์ง ์ฃผ ๋จธ๋ ์ดํ์ด ๋ฌธ์์์๋ ํ ์คํธ์์ ํน์ ๋ฌธ์์ด์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ ์ปดํ์ผ๋ฌ ํํ๋ก ์ด ๋ฐฉ๋ฒ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ผ์ํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ์ ๊ท ํํ์์ ์์ค ์ฝ๋๋ก ๋ฐ์์ IBM 7094 ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด ์ฝ๋๋ก ์์ฑํฉ๋๋ค. ๊ฐ์ฒด ํ๋ก๊ทธ๋จ์ ๊ฒ์ํ ํ ์คํธ ํํ์ ์ ๋ ฅ์ ๋ฐ๊ณ , ํ ์คํธ ๋ฌธ์์ด์ด ์ฃผ์ด์ง ์ ๊ท ํํ์๊ณผ ์ผ์นํ ๋๋ง๋ค ์ ํธ๋ฅผ ๋ด๋ณด๋ ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์์ , ๋ฌธ์ , ํด๊ฒฐ์ฑ ์ ์ ๊ณตํฉ๋๋ค.
์ฐ์ฐ
์ด์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ๋ถ์ ์ผ๋ก ์ฑ๊ณต์ ์ธ ๊ฒ์์ ์ํํด๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ผ๋ฉด ๋ค๋ก ๋๋์๊ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์์ต๋๋ค.์ปดํ์ผ ๋ชจ๋์์๋ ์๊ณ ๋ฆฌ์ฆ์ด ๊ธฐํธ์ ํจ๊ป ์๋ํ์ง ์์ต๋๋ค. ์ปดํ์ผ๋ ์ฝ๋์ ์ง์นจ์ ์ ๋ฌํฉ๋๋ค. ์คํ์ ๋งค์ฐ ๋น ๋ฆ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ํ์ฌ ๋ชฉ๋ก์ ๋งจ ์๋ก ์ ๋ฌํ ํ ์ ๊ท ํํ์์์ ์ฐ์๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ๊ฒ์ํฉ๋๋ค.
์ปดํ์ผ ๋ฐ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ํฉ๋ณ ๊ฒ์์ผ๋ก ์๋ถํ ํ ์คํธ ํธ์ง๊ธฐ์ ํฌํจ๋์ด ์์ต๋๋ค. ๋ฌผ๋ก , ์ด๋ฐ ๊ฒ์ ์ ์ฐจ๊ฐ ์ ์ฉ๋ ์ฌ๋ก๋ ์ด๋ฒ์ด ์ฒ์์ ์๋๋ค. ์๋ฅผ ๋ค์ด, ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ณํ์ ์ด์ ๋ธ๋ฆฌ์์ ์ฌ๋ณผ ํ ์ด๋ธ ๊ฒ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ ์๋ ์ ๊ท ํํ์๊ณผ IBM 7094 ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ต์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.์ปดํ์ผ๋ฌ
์ปดํ์ผ๋ฌ๋ ๋ณ๋ ฌ๋ก ์คํ๋๋ ์ธ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๊ตฌ๋ฌธ ํํฐ๋ง์ผ๋ก, ๊ตฌ๋ฌธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ์ ๊ท ํํ์๋ง ํต๊ณผ์ํต๋๋ค. ์ด ๋จ๊ณ์์๋ ์ ๊ท ํํ์ ์ผ์น๋ฅผ ์ํด "ยท" ์ฐ์ฐ์๋ ์ฝ์ ๋ฉ๋๋ค. ๋ ๋ฒ์งธ ๋จ๊ณ์์๋ ์ ๊ท ํํ์์ด ์ ๋ฏธ์ฌ ํํ๋ก ๋ณํ๋ฉ๋๋ค. ์ธ ๋ฒ์งธ ๋จ๊ณ์์๋ ๊ฐ์ฒด ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ์ฒ์ ๋ ๋จ๊ณ๋ ๋๋ฌด๋ ๋ช ํํด์ ์ฌ๊ธฐ์๋ ์์ธํ ์ค๋ช ํ์ง ์๊ฒ ์ต๋๋ค.
ํฐ์จ์ ๋ ผ๋ฌธ์ ๋น๊ฒฐ์ ์ ์ ํ ์คํ ๋งํ๋ฅผ ๋ ผ์ํ์ง ์์ง๋ง ์ ํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ค๋ช ํ๊ณ IBM 60์ ๋ํ ์ด์ ๋ธ๋ฆฌ ์ธ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ALGOL-7094 ํ๋ก๊ทธ๋จ์ ์ ๊ณตํฉ๋๋ค. ๊ตฌํ์ ๊น๋ค๋กญ์ง๋ง ์์ด๋์ด๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
ํ์ฌ ๊ฒ์ ๊ฒฝ๋ก. ์ด๋ ํ ๊ฐ์ ์ ๋ ฅ๊ณผ ๋ ๊ฐ์ ์ถ๋ ฅ์ ๊ฐ์ง โ ์์ด์ฝ์ผ๋ก ํํ๋ฉ๋๋ค.
๊ทธ๋ฆผ 1์ ์์ ์ ๊ท ํํ์์ ๋ณํํ ๋ ์ปดํ์ผ์ ์ธ ๋ฒ์งธ ๋จ๊ณ์ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. ์ด ์์์ ์ฒ์ ์ธ ๋ฌธ์๋ a, b, c์ด๋ฉฐ ๊ฐ๊ฐ ์คํ ํญ๋ชฉ S[i]์ ํ๋ NNODE๋ฅผ ์์ฑํฉ๋๋ค.๊ธฐ์กด ์ฝ๋์ NNODE๋ฅผ ์ถ๊ฐํ์ฌ ๋จ์ผ ์คํ ํญ๋ชฉ์์ ์ต์ข ์ ๊ท ํํ์์ ์์ฑํฉ๋๋ค(๊ทธ๋ฆผ 5 ์ฐธ์กฐ)
์ ๊ท ํํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. .*.*=.*ํฐ์จ์ ๊ธฐ์ฌ์ ๋์จ ์ฌ์ง๊ณผ ๊ฐ์ด ์์ํด ๋ณด์ธ์.

๊ทธ๋ฆผ 0์๋ 0์์ ์์ํ๋ 3๊ฐ์ ์ํ์ 1, 2, 3์ ์ํ๋ก๋ถํฐ ์์ํ๋ XNUMX๊ฐ์ ์ฌ์ดํด์ด ์์ต๋๋ค. ์ด XNUMX๊ฐ์ ์ฌ์ดํด์ XNUMX๊ฐ์ .* ์ ๊ท ํํ์์์. ์ ์ด ์๋ ํ์ 3๊ฐ๋ ํ๋์ ๊ธฐํธ์ ๋์ํฉ๋๋ค. ํ์งํ์ด ์๋ ํ์ = ๋ฆฌํฐ๋ด ๋ฌธ์์ ์ผ์นํฉ๋๋ค =. ์ํ 4๊ฐ ์ต์ข
์
๋๋ค. ์ฌ๊ธฐ์ ๋๋ฌํ๋ฉด ์ ๊ท ํํ์์ด ์ผ์นํ ๊ฒ์
๋๋ค.
์ด๋ฌํ ์ํ ๋ค์ด์ด๊ทธ๋จ์ด ์ ๊ท ํํ์ ์ผ์น์ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง ์์๋ณด๋ ค๋ฉด .*.*=.*, ์ฐ๋ฆฌ๋ ๋ฌธ์์ด ๋งค์นญ์ ์ดํด๋ณผ ๊ฒ์
๋๋ค x=x. ๊ทธ๋ฆผ 0์ ํ์๋ ๋๋ก, ํ๋ก๊ทธ๋จ์ ์ํ 1์์ ์์ํฉ๋๋ค.

์ด ์๊ณ ๋ฆฌ์ฆ์ด ์๋ํ๋ ค๋ฉด ์ํ ๋จธ์ ์ด ๋์์ ์ฌ๋ฌ ์ํ์ ์์ด์ผ ํฉ๋๋ค. ๋น๊ฒฐ์ ์ ์ ํ ์ํ ๋จธ์ ์ ๊ฐ๋ฅํ ๋ชจ๋ ์ ํ์ ๋์์ ์ํํฉ๋๋ค.
๊ทธ๋ฆผ 1์์ ๋ณด๋ฏ์ด ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์๊ฐ๋ ์์ด ์ฒซ ๋ฒ์งธ ์ํ(2๊ณผ 2)๋ก ์ ํ๋ฉ๋๋ค.

๊ทธ๋ฆผ 2์์ ๊ทธ๊ฐ ์ฒซ ๋ฒ์งธ ๊ฒ์ ๋ณผ ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณผ ์ ์์ต๋๋ค. x ะฒ x=x. x ์ํ 1์์ ์ํ 1๋ก ๋์๊ฐ์ ์ต์์ ์ง์ ๊ณผ ์ผ์นํ ์ ์์ต๋๋ค. ๋๋ x ์ํ 2์์ ์ํ 2๋ก ๋์๊ฐ๋ฉด ์๋ ์ง์ ๊ณผ ์ผ์นํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ฅผ ๋น๊ตํ ํ x ะฒ x=x ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ํ 1๊ณผ 2์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌธ์์ ๊ธฐํธ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ํ 3์ด๋ 4์ ๋๋ฌํ ์ ์์ต๋๋ค. =.
๊ทธ๋ฐ ๋ค์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์์ ๊ณ ๋ คํฉ๋๋ค. = ะฒ x=x. ์ด์ x์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ํ 1์์ ์ํ 1๋ก ๋๋ ์ํ 2์์ ์ํ 2๋ก ์ ํ๋๋ ์์ ๋ ์ฌ์ดํด ์ค ํ๋์ ์ผ์นํ ์ ์์ง๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฆฌํฐ๋ด๊ณผ ์ผ์นํ ์ ์์ต๋๋ค. = ๊ทธ๋ฆฌ๊ณ ์ํ 2์์ ์ํ 3์ผ๋ก ์ด๋ํฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ์ฆ์ ์ํ 4๋ก ์ด๋ํฉ๋๋ค). ์ด๋ ๊ทธ๋ฆผ 3์ ๋ํ๋ ์๋ค.

๊ทธ๋ฐ ๋ค์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง์ง๋ง ํญ๋ชฉ์ผ๋ก ์ด๋ํฉ๋๋ค. x ะฒ x=x. ์ํ 1๊ณผ 2์์ ๋์ผํ ์ ํ์ด ์ํ 1๊ณผ 2๋ก ๋ค์ ๊ฐ๋ฅํฉ๋๋ค. ์ํ 3์์ x ์ค๋ฅธ์ชฝ์ ์ง์ ๊ณผ ์ผ์นํ์ฌ ์ํ 3์ผ๋ก ๋์๊ฐ ์ ์์ต๋๋ค.
์ด ๋จ๊ณ์์๋ ๊ฐ ๊ธฐํธ x=x ๊ณ ๋ ค๋์๊ณ , ์ํ 4์ ๋๋ฌํ์ผ๋ฏ๋ก ์ ๊ท ํํ์์ ์ด ๋ฌธ์์ด๊ณผ ์ผ์นํฉ๋๋ค. ๊ฐ ๋ฌธ์๊ฐ ํ ๋ฒ์ฉ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ด ์๊ณ ๋ฆฌ์ฆ์ ์
๋ ฅ ๋ฌธ์์ด์ ๊ธธ์ด์ ๋ฐ๋ผ ์ ํ์ ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํํด๋ ์์ต๋๋ค.
์ํ 4์ ๋๋ฌํ ํ(์๊ณ ๋ฆฌ์ฆ์ด ์ผ์นํ ๊ฒฝ์ฐ)์๋ ๋ถ๋ช
ํฉ๋๋ค. x=) ์ ์ฒด ์ ๊ท ํํ์์ด ์ผ์นํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค ๊ฒ๋ ๊ณ ๋ คํ์ง ์๊ณ ์ข
๋ฃ๋ ์ ์์ต๋๋ค. x.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ๋ฌธ์์ด์ ํฌ๊ธฐ์ ์ ํ์ ์ผ๋ก ์์กดํฉ๋๋ค.
์ถ์ฒ : habr.com
