๋ค์ ํ๋ฒ ์๋
ํ์ธ์! OTUS, XNUMX์์ ์๋ก์ด ์ฝ์ค ์ถ์
DevOps ๋๊ตฌ ์ ์ฒด ์ธํธ, ์คํ ์์ค ๋ฉ์ ์ ๋ฐ ChatOps - ์ด๋ป๊ฒ ์ฌ๋์ ๋น ์ง์ง ์์ ์ ์์ต๋๊น?
๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ ํ์ ๋ง๋ค๊ณ ์ ํ๋ ์๊ตฌ๋ก ์ธํด ๊ฐ๋ฐํ์ด ์ง๊ธ๋ณด๋ค ๋ ๋ง์ ์๋ฐ์ ๋ฐ์ ์ ์ ์์์ต๋๋ค. DevOps์ ์ธ๊ธฐ ์์น์ ์ฃผ๋ก ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๊ณ ๋ฏผ์ฒฉ์ฑ์ ๋์ด๋ฉฐ ํ์ด ๋ฌธ์ ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ค๋ ๊ธฐ๋์ ๋ฐ๋ฅธ ๊ฒ์
๋๋ค. ์ง๋ ๋ช ๋
๋์ DevOps ๋๊ตฌ์ ๊ฐ์ฉ์ฑ๊ณผ ํฌ๊ด์ฑ์ด ํฌ๊ฒ ํฅ์๋์์ง๋ง, ๋จ์ํ ์ต์ ์ ์ต๊ณ ์ ๋๊ตฌ๋ฅผ ์ ํํ๋ค๊ณ ํด์ ์ํํ๊ณ ๋ฒ๊ฑฐ๋ก์ ์๋ ๊ฐ๋ฐ ์๋ช
์ฃผ๊ธฐ๊ฐ ๋ณด์ฅ๋๋ ๊ฒ์ ์๋๋๋ค.
GitLab์ ์ ํํด์ผ ํ๋ ์ด์
์ ํ์ ํญ๊ณผ ๋ณต์ก์ฑ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ํ๊ณ์์ GitLab์ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๊ณ ๊ฐ๋ฐ ๋น์ฉ์ ์ ๊ฐํ๋ฉฐ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ๋์ผ ์ ์๋ ์์ ํ ์คํ ์์ค DevOps ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ๊ณํ ๋ฐ ์ฝ๋ฉ๋ถํฐ ๋ฐฐํฌ ๋ฐ ๋ชจ๋ํฐ๋ง(๊ทธ๋ฆฌ๊ณ ๋ค์ ์ํ)๊น์ง GitLab์ ๋ค์ํ ๋๊ตฌ๋ฅผ ํ๋์ ๊ณต๊ฐ ์ธํธ๋ก ํตํฉํฉ๋๋ค.
ChatOps๊ฐ ๊ฐ์ฅ ์ค์ํ ์ด์
Mattermost์์๋ GitLab์ ์ด๋ ฌํ ํฌ์
๋๋ค. ์ด๊ฒ์ด Mattermost๊ฐ GitLab Omnibus์ ํจ๊ป ์ ๊ณต๋๋ ์ด์ ์ด๋ฉฐ Mattermost๊ฐ GitLab Omnibus๋ฅผ ํตํด ์ฝ๊ฒ ์คํ๋ ์ ์๋๋ก ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
๊ฐ๋ฐฉํ ํ๋ซํผ
ChatOps๋ ๋ฉ์์ง์ ํตํด CI/CD ์์ ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ค๋๋ ์กฐ์ง ๋ด์์๋ ๋ง์ ํ ๋ก , ํ์ ๋ฐ ๋ฌธ์ ํด๊ฒฐ์ด ๋ฉ์ ์ ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ์ถ๋ ฅ์ด ์ฑ๋๋ก ํผ๋๋ฐฑ๋๋ CI/CD ์์ ์ ์คํํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๋ฉด ํ์ ์ํฌํ๋ก ์๋๊ฐ ํฌ๊ฒ ํฅ์๋ ์ ์์ต๋๋ค.
Mattermost + GitLab
DevOps ๋๊ตฌ ์ ์ฒด ์ธํธ, ์คํ ์์ค ๋ฉ์ ์ ๋ฐ ChatOps - ์ด๋ป๊ฒ ์ฌ๋์ ๋น ์ง์ง ์์ ์ ์์ต๋๊น? GitLab๊ณผ Mattermost๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ DevOps ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํ ๊ตฌ์ฑ์์ด ๋ฌธ์ ๋ฅผ ํ ๋ก ํ๊ณ , ํ์ ํ๊ณ , ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋์ผํ ์ฑํ ์ธํฐํ์ด์ค๋ก ์ด๋ํ ์๋ ์์ต๋๋ค.
๋ค์์ ๊ฐ๋ฐํ์ด Mattermost์ GitLab์ ํจ๊ป ์ฌ์ฉํ์ฌ ChatOps๋ฅผ ํตํด ์์ฐ์ฑ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์์ ๋๋ค.
Itk๋ GitLab๊ณผ Mattermost๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ ์์ ์ ๊ณตํ๊ณ ์ฐ๊ฐ ํ๋ก๋์
๋ฐฐํฌ ํ์๋ฅผ XNUMX๋ฐฐ ๋๋ฆฝ๋๋ค.
๊ทธ๋ค์ 2014๋ ๊ฒฝ์ GitLab์ ์ฌ์ฉํ๊ธฐ ์์ํ์ผ๋ฉฐ ์ฃผ๋ก ์ผ์ ์ ๋ฌด, ๋ฉ์์ง ๋ฐ ํ์ ํตํ์ ๊ธฐ์กด ์ฑํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ๋๊ตฌ๋ ๊ทธ์ ๋ง์ถฐ ํ์ฅ๋์ง ์์์ต๋๋ค. ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๊ณ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ ๋ฉ์์ง๊ฐ ์์๊ณ ํ์ํฌ๊ฐ ์ ์ ๋ ์ด๋ ค์์ก์ต๋๋ค. ๊ทธ๋์ ๊ทธ๋ค์ ๋์์ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค.
์ผ๋ง ์ง๋์ง ์์ ๊ทธ๋ค์ GitLab Omnibus ํจํค์ง๊ฐ ๊ฐ๋ฐฉํ ๋ฉ์์ง ํ๋ซํผ์ธ Mattermost์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ค์ ์๋ ๊ตฌ๋ฌธ ๊ฐ์กฐ ๋ฐ ์ ์ฒด Markdown ์ง์์ ํฌํจํ ๊ฐ๋จํ ์ฝ๋ ๊ณต์ ๊ธฐ๋ฅ๋ฟ๋ง ์๋๋ผ ์ง์ ๊ณต์ , ๋ฉ์์ง ๊ฒ์์ ์ฉ์ด์ฑ, ์ ์ฒด ํ์ด GitLab๊ณผ ํตํฉ๋ ์๋ก์ด ์๋ฃจ์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์์ด๋์ด์ ํ๋ ฅํ๋ ๊ฒ์ ์ฆ์ ์ข์ํ์ต๋๋ค.
Mattermost๋ก ์ด์ ํ๊ธฐ ์ ์๋ ํ์๋ค์ด ๊ฐ๋ฐ ์งํ ์ํฉ์ ๋ํ ์๋ฆผ์ ์ฝ๊ฒ ๋ฐ์ ์ ์์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ค์ GitLab์์ ํ๋ก์ ํธ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ถ์ ํ๊ณ , ์์ฒญ์ ๋ณํฉํ๊ณ , ๊ธฐํ ์์ ์ ์ํํ ์ ์๊ธฐ๋ฅผ ์ํ์ต๋๋ค.
๊ทธ๋๋ถํฐ itk์ ๊ฐ๋ฐ์์ธ Romain Maneski๊ฐ Mattermost์ฉ GitLab ํ๋ฌ๊ทธ์ธ์ ์์ฑํ๊ธฐ ์์ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ทธ์ ํ์ ๋์ค์ Mattermost์์ GitLab ์๋ฆผ์ ๊ตฌ๋ ํ๊ณ ํ ๊ณณ์์ ์๋ก์ด ๋ฌธ์ ์ ๋ํ ์๋ฆผ์ ๋ฐ๊ณ ์์ฒญ์ ๊ฒํ ํ ์ ์์์ต๋๋ค.
์ต์ ํ๋ ค๋ฉด
- ์ผ์ผ ์๋ฆผ๊ทํ์ ์ฃผ์๊ฐ ํ์ํ ๋ฌธ์ ๋ฐ ๋ณํฉ ์์ฒญ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํด
- ์๋ฆผ โ ๋๊ตฐ๊ฐ ๊ทํ๋ฅผ ์ธ๊ธํ๊ฑฐ๋ ๊ทํ์๊ฒ ๊ฒํ ์์ฒญ์ ๋ณด๋ด๊ฑฐ๋ GitLab์์ ๊ทํ์๊ฒ ๋ฌธ์ ๋ฅผ ์ ๋ฌํ ๋ Mattermost๋ก๋ถํฐ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
- ์ฌ์ด๋๋ฐ ๋ฒํผ โ Mattermost ์ฌ์ด๋๋ฐ์ ๋ฒํผ์ ์ฌ์ฉํ์ฌ ํ์ฌ ๋ณด์ ํ๊ณ ์๋ ๋ฆฌ๋ทฐ, ์ฝ์ง ์์ ๋ฉ์์ง, ๊ณผ์ ๋ฐ ๊ณต๊ฐ ๋ณํฉ ์์ฒญ ์๋ฅผ ํ์ธํ์ธ์.
- ํ๋ก์ ํธ ๊ตฌ๋ โ ์ฌ๋์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ค์ํ ์ฑ๋์ ๊ตฌ๋ ํ์ฌ GitLab์ ์๋ก์ด ๋ณํฉ ์์ฒญ ๋๋ ๋ฌธ์ ์ ๋ํ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
์ด์ ๊ทธ์ ํ์ฌ ์ ์ฒด๋ GitLab๊ณผ Mattermost๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ChatOps๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก ์๋๋ฅผ ๋์ด๊ณ ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ ๋ฐ์ดํธ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ ๊ณตํ ์ ์์๊ณ , ์ด๋ก ์ธํด ํ์ด ์์ ์ค์ธ ํ๋ก์ ํธ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ์๊ฐ 5๋ฐฐ ์ฆ๊ฐํ๊ณ , ํ ํด ๋์ ํ๋ก๋์ ๋ฐฐํฌ ์๊ฐ XNUMX๋ฐฐ ์ฆ๊ฐํ์ต๋๋ค. ๋์ ๊ฒฝ์ ํ์ ํ์ด XNUMX๋ฐฐ ์ฆ๊ฐํ์ต๋๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ ํ์ฌ๋ ์ฝ๋ ๋ฐ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ํฌ๋ช
์ฑ๊ณผ ๊ฐ์์ฑ์ ๋์ฌ ์์ฐ์ฑ์ ํฅ์์ํต๋๋ค.
๋ฉ๋ฆด๋๋์ ๋ณธ์ฌ๋ฅผ ๋ ์ํํธ์จ์ด ๋ฐ ๋ฐ์ดํฐ ์๋น์ค ํ์ฌ๋ ๋ํ ์์ฐ์ฑ๊ณผ ์ํํ ํ์ ์ ๊ฐ์ ํ๊ธฐ ์ํด GitLab๊ณผ ํตํฉ๋ Mattermost๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ด๋ค์ ์ ์ธ๊ณ ์๋ฌผ์ํ ์กฐ์ง์ ์ํ ๋ถ์์ ์ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.
GitLab์ ํ์์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ DevOps ์ํฌํ๋ก์์ GitLab์ ์ฌ์ฉ์ด ํฐ ์ด์ ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๋ํ GitLab๊ณผ Mattermost๋ฅผ ๋ณํฉํ์ฌ GitLab์ ์ปค๋ฐ์ ์นํํฌ๋ฅผ ํตํด Mattermost์ ํ๋์ ํผ๋๋ก ์ง๊ณํ์ฌ ๊ฒฝ์์ง์ด ํน์ ๋ ์ง์ ํ์ฌ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง์ ๋ํ ์กฐ๊ฐ๋๋ฅผ ์ป์ ์ ์๋๋ก ํ์ต๋๋ค. ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฐ ๋ฒ์ ์ ์ด ์ ๋ฐ์ดํธ๋ ์ถ๊ฐ๋์ด ํ๋ฃจ ์ข ์ผ ๋ด๋ถ ์ธํ๋ผ ๋ฐ ์์คํ ์ ์ ์ฉ๋ ๋ค์ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ค๋ ์ท์ ์ ๊ณตํ์ต๋๋ค.
๋ํ ํ์ ์ฑ ์ด๋ฒคํธ์ ๋ํ ์๋ฆผ์ ๋ณด๋ด๊ธฐ ์ํด ๋ณ๋์ "ํํธ๋นํธ" ์ฑ๋์ ์ค์ ํ์ต๋๋ค. ์ด๋ฌํ ๋ฉ์์ง๋ฅผ ํน์ Heartbeat ์ฑ๋๋ก ๋ณด๋ด๋ฉด ํ ๊ตฌ์ฑ์์ด ์ ๊ท ์ฑ๋์์ ์ ๋ฌด ๋ํ๋ฅผ ๋๋๋ ๋ฐ ๋ฐฉํด๊ฐ ๋์ง ์๊ณ ํ ๊ตฌ์ฑ์์ด Heartbeat ์ฑ๋์ ๊ฒ์๋ ์ง๋ฌธ์ผ๋ก ๋ณ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
์ด ํตํฉ์ ์ฃผ์ ์ด์ ์ค ํ๋๋ ๋ฒ์ ์ ๋ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๊ฐ์์ฑ๊ณผ ์ค์๊ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ์ ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์ปค๋ฐ๋๊ณ ํธ์๋๋ ์ฆ์ ํํธ๋นํธ ์ฑ๋์ ์ค์๊ฐ์ผ๋ก ์๋ฆผ์ด ์ ์ก๋ฉ๋๋ค. ๋๊ตฌ๋ ๊ทธ๋ฌํ ์ฑ๋์ ๊ตฌ๋ ํ ์ ์์ต๋๋ค. ๋ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ์ ํ, ํ์ ์์ฒญ, ์ปค๋ฐ ์ถ์ ์ด ํ์ํ์ง ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด Mattermost์์ ์ด๋ฃจ์ด์ง๋ฉฐ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ GitLab์์ ์ํ๋ฉ๋๋ค.
GitLab ๋ฐ Mattermost ChatOps๋ ๊ฐ์์ฑ๊ณผ ์์ฐ์ฑ์ ๋์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ ๋๋ค.
Mattermost์ ํจ๊ป ์ ๊ณต๋๋
DevOps ํ์ ์ง๊ธ๊น์ง ChatOps์ ์ด์ ์ ๊ฐ์ถ ๋ ๋์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์ด ์์ต๋๋ค. Mattermost์ ํจ๊ป GitLab Omnibus๋ฅผ ์ค์นํ๊ณ ์ง์ ์ฌ์ฉํด ๋ณด์ธ์!
๊ทธ๊ฒ ๋ค์ผ. ํ์์ฒ๋ผ ์ฐ๋ฆฌ๋ ๋ชจ๋๋ฅผ ์ด๋ํฉ๋๋ค
์ถ์ฒ : habr.com