์ต์ ์ด๋ฒคํธ ์ ๊ตฌ๋
ํ์ํ ์นํํฌ ์ด๋ฒคํธ๋ง ๊ตฌ๋ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ์์ ์ํํด์ผ ํ๋ ์์ ์ ์์ด ์ค์ด๋ญ๋๋ค. ์ด๋ฒคํธ ๊ตฌ๋ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์นํํฌ ๋ง๋ค๊ธฐ ๋ฐ ์นํํฌ ํธ์งํ๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์นํํฌ ๋น๋ฐ ์ฌ์ฉ
๊ฒฝ๊ณ
์ค์ํ ์ ๋ณด๊ฐ ์ค์๋ก ๋ ธ์ถ๋์ง ์๋๋ก ํ๋ ค๋ฉด ํ์ด๋ก๋ 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
๋จธ๋ฆฌ๊ธ์ ์๋ ์ ๊ณต์ ์๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.