Skip to main content

์›นํ›„ํฌ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€

์›นํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๋ฉด ๋‹ค์Œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์ตœ์†Œ ์ด๋ฒคํŠธ ์ˆ˜ ๊ตฌ๋…

ํ•„์š”ํ•œ ์›นํ›„ํฌ ์ด๋ฒคํŠธ๋งŒ ๊ตฌ๋…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์˜ ์–‘์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๊ตฌ๋…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›นํ›„ํฌ ๋งŒ๋“ค๊ธฐ ๋ฐ ์›นํ›„ํฌ ํŽธ์ง‘ํ•˜๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์›นํ›„ํฌ ๋น„๋ฐ€ ์‚ฌ์šฉ

๊ฒฝ๊ณ 

์ค‘์š”ํ•œ ์ •๋ณด๊ฐ€ ์‹ค์ˆ˜๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ํŽ˜์ด๋กœ๋“œ URL์— ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”. ์—ฌ๊ธฐ์—๋Š” ์‚ฌ์šฉ์ž ๊ณ ์œ ์˜ API ํ‚ค ๋ฐ ๊ธฐํƒ€ ์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ์›นํ›„ํฌ ์ œ๊ณต์ด GitHub์—์„œ ์ „์†ก๋˜์—ˆ์ง€๋งŒ ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์›นํ›„ํฌ ๋น„๋ฐ€์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›นํ›„ํฌ ์ œ๊ณต ์œ ํšจ์„ฑ ๊ฒ€์‚ฌํ•˜๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์›นํ›„ํฌ ๋น„๋ฐ€์€ ์—”ํŠธ๋กœํ”ผ๊ฐ€ ๋†’์€ ์ž„์˜์˜ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์›นํ›„ํฌ ๋น„๋ฐ€์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTTPS ๋ฐ SSL ํ™•์ธ ์‚ฌ์šฉ

์„œ๋ฒ„์—์„œ HTTPS ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ GitHub์€(๋Š”) ์›นํ›„ํฌ๋ฅผ ์ œ๊ณตํ•  ๋•Œ SSL ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. GitHub์€(๋Š”) SSL ํ™•์ธ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

GitHub์˜ IP ์ฃผ์†Œ ํ—ˆ์šฉ

์„œ๋ฒ„์— ๋Œ€ํ•œ IP ํ—ˆ์šฉ ๋ชฉ๋ก์„ ์„ค์ •ํ•˜๊ณ  ์›นํ›„ํฌ ์ œ๊ณต์— GitHub์—์„œ ์‚ฌ์šฉํ•˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ๋Œ€ํ•œ ์Šคํ‘ธํ•‘๋œ ์š”์ฒญ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GET /meta ๋์ ์„ ์‚ฌ์šฉํ•˜์—ฌ GitHub IP ์ฃผ์†Œ์˜ ํ˜„์žฌ ๋ชฉ๋ก์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ REST API ์—”๋“œํฌ์ธํŠธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”. GitHub๋Š” ๋•Œ๋•Œ๋กœ IP ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— IP ํ—ˆ์šฉ ๋ชฉ๋ก์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub IP ์ฃผ์†Œ ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

10 ์ดˆ ๋‚ด์— ์‘๋‹ต

์„œ๋ฒ„๋Š” ์›นํ›„ํฌ ์ œ๊ณต์„ ๋ฐ›์€ ํ›„ 10 ์ดˆ ๋‚ด์— 2XX ์‘๋‹ต์œผ๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋ฐ ์ด๋ณด๋‹ค ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด GitHub๊ฐ€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ณ  ์ œ๊ณต์„ ์‹คํŒจ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์ ์‹œ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์›นํ›„ํฌ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์›นํ›„ํฌ๋ฅผ ๋ฐ›์„ ๋•Œ ์‘๋‹ตํ•œ ๋‹ค์Œ ์ดํ›„ ์›นํ›„ํฌ ์ œ๊ณต์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Hookdeck ๊ฐ™์€ ์„œ๋น„์Šค ๋˜๋Š” Resque(Ruby), RQ(Python) ๋˜๋Š” RabbitMQ(Java)์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ์ด๋ฒคํŠธ ์œ ํ˜• ๋ฐ ์ž‘์—… ํ™•์ธ

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์›นํ›„ํฌ ์ด๋ฒคํŠธ ์œ ํ˜•์ด ์žˆ์œผ๋ฉฐ, ๊ฐ ์ด๋ฒคํŠธ์—๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์€(๋Š”) ๊ธฐ์กด ์ด๋ฒคํŠธ ํ˜•์‹์— ์ƒˆ ์ด๋ฒคํŠธ ์œ ํ˜•๊ณผ ์ƒˆ ์ž‘์—…์„ ๊ณ„์† ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ์›นํ›„ํฌ ํŽ˜์ด๋กœ๋“œ์˜ ์ด๋ฒคํŠธ ์œ ํ˜• ๋ฐ ์ž‘์—…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ์œ ํ˜•์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด X-GitHub-Event ์š”์ฒญ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ์œ ํ˜•์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์—์„œ ์ตœ์ƒ์œ„ action ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๋ฝ๋œ ์ œ๊ณต ๋‹ค์‹œ ์ œ๊ณตํ•˜๊ธฐ

์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋œ ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ๋ฐฑ์—…๋˜๋ฉด ๋ˆ„๋ฝ๋œ ์›นํ›„ํฌ๋ฅผ ๋‹ค์‹œ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›นํ›„ํฌ ๋‹ค์‹œ ์ œ๊ณต์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

X-GitHub-Delivery ๋จธ๋ฆฌ๊ธ€ ์‚ฌ์šฉ

๋ฆฌํ”Œ๋ ˆ์ด ๊ณต๊ฒฉ์—์„œ ์ž˜๋ชป๋œ ํ–‰์œ„์ž๊ฐ€ ์›นํ›„ํฌ ์ œ๊ณต์„ ๊ฐ€๋กœ์ฑ„ ํ•ด๋‹น ์ œ๊ณต์„ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฆฌํ”Œ๋ ˆ์ด ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋ ค๋ฉด X-GitHub-Delivery ๋จธ๋ฆฌ๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฐฐ๋‹ฌ์ด ์ด๋ฒคํŠธ๋งˆ๋‹ค ๊ณ ์œ ํ•œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

๋‹ค์‹œ ์ œ๊ณต์„ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ, X-GitHub-Delivery ๋จธ๋ฆฌ๊ธ€์€ ์›๋ž˜ ์ œ๊ณต์— ์žˆ๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฐธ๊ณ  ์ž๋ฃŒ