์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœํŒ€์ด GitLab ๋ฐ Mattermost ChatOps๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•

๋‹ค์‹œ ํ•œ๋ฒˆ ์•ˆ๋…•ํ•˜์„ธ์š”! OTUS, XNUMX์›”์— ์ƒˆ๋กœ์šด ์ฝ”์Šค ์ถœ์‹œ "AWS, Azure ๋ฐ Gitlab์˜ CI/CD". ๊ฐ•์ขŒ ์‹œ์ž‘์„ ์˜ˆ์ƒํ•˜์—ฌ ์œ ์šฉํ•œ ์ž๋ฃŒ์˜ ๋ฒˆ์—ญ์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

DevOps ๋„๊ตฌ ์ „์ฒด ์„ธํŠธ, ์˜คํ”ˆ ์†Œ์Šค ๋ฉ”์‹ ์ € ๋ฐ ChatOps - ์–ด๋–ป๊ฒŒ ์‚ฌ๋ž‘์— ๋น ์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ œํ’ˆ์„ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ์š•๊ตฌ๋กœ ์ธํ•ด ๊ฐœ๋ฐœํŒ€์ด ์ง€๊ธˆ๋ณด๋‹ค ๋” ๋งŽ์€ ์••๋ฐ•์„ ๋ฐ›์€ ์ ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. DevOps์˜ ์ธ๊ธฐ ์ƒ์Šน์€ ์ฃผ๋กœ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์†ํ™”ํ•˜๊ณ  ๋ฏผ์ฒฉ์„ฑ์„ ๋†’์ด๋ฉฐ ํŒ€์ด ๋ฌธ์ œ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค๋Š” ๊ธฐ๋Œ€์— ๋”ฐ๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ DevOps ๋„๊ตฌ์˜ ๊ฐ€์šฉ์„ฑ๊ณผ ํฌ๊ด„์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์ง€๋งŒ, ๋‹จ์ˆœํžˆ ์ตœ์‹ ์˜ ์ตœ๊ณ ์˜ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•œ๋‹ค๊ณ  ํ•ด์„œ ์›ํ™œํ•˜๊ณ  ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†๋Š” ๊ฐœ๋ฐœ ์ˆ˜๋ช… ์ฃผ๊ธฐ๊ฐ€ ๋ณด์žฅ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

GitLab์„ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

์„ ํƒ์˜ ํญ๊ณผ ๋ณต์žก์„ฑ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํƒœ๊ณ„์—์„œ GitLab์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์†ํ™”ํ•˜๊ณ  ๊ฐœ๋ฐœ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๋ฉฐ ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ์™„์ „ํ•œ ์˜คํ”ˆ ์†Œ์Šค DevOps ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณ„ํš ๋ฐ ์ฝ”๋”ฉ๋ถ€ํ„ฐ ๋ฐฐํฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง(๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์ˆ˜ํ–‰)๊นŒ์ง€ GitLab์€ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ํ•˜๋‚˜์˜ ๊ณต๊ฐœ ์„ธํŠธ๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

ChatOps๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ด์œ 

Mattermost์—์„œ๋Š” GitLab์˜ ์—ด๋ ฌํ•œ ํŒฌ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Mattermost๊ฐ€ GitLab Omnibus์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์ด์œ ์ด๋ฉฐ Mattermost๊ฐ€ GitLab Omnibus๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GitLab.

๊ฐœ๋ฐฉํ˜• ํ”Œ๋žซํผ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ChatOps ํŒ€์— ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋Œ€ํ™”๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๊ณณ์—์„œ ๋ฐ”๋กœ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ChatOps ์›Œํฌํ”Œ๋กœ๋Š” ํ•จ๊ป˜ ํ˜‘๋ ฅํ•˜์—ฌ Mattermost ๋‚ด์—์„œ ์ง์ ‘ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ด€๋ จ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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 ChatOps๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํšŒ์‚ฌ๋Š” ์ฝ”๋“œ ๋ฐ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํˆฌ๋ช…์„ฑ๊ณผ ๊ฐ€์‹œ์„ฑ์„ ๋†’์—ฌ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋ฉ”๋ฆด๋žœ๋“œ์— ๋ณธ์‚ฌ๋ฅผ ๋‘” ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค ํšŒ์‚ฌ๋Š” ๋˜ํ•œ ์ƒ์‚ฐ์„ฑ๊ณผ ์›ํ™œํ•œ ํ˜‘์—…์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด GitLab๊ณผ ํ†ตํ•ฉ๋œ Mattermost๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ์ „ ์„ธ๊ณ„ ์ƒ๋ฌผ์˜ํ•™ ์กฐ์ง์„ ์œ„ํ•œ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

GitLab์€ ํŒ€์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ DevOps ์›Œํฌํ”Œ๋กœ์—์„œ GitLab์˜ ์‚ฌ์šฉ์ด ํฐ ์ด์ ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ GitLab๊ณผ Mattermost๋ฅผ ๋ณ‘ํ•ฉํ•˜์—ฌ GitLab์˜ ์ปค๋ฐ‹์„ ์›นํ›„ํฌ๋ฅผ ํ†ตํ•ด Mattermost์˜ ํ•˜๋‚˜์˜ ํ”ผ๋“œ๋กœ ์ง‘๊ณ„ํ•˜์—ฌ ๊ฒฝ์˜์ง„์ด ํŠน์ • ๋‚ ์งœ์— ํšŒ์‚ฌ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์กฐ๊ฐ๋„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ๋ฒ„์ „ ์ œ์–ด ์—…๋ฐ์ดํŠธ๋„ ์ถ”๊ฐ€๋˜์–ด ํ•˜๋ฃจ ์ข…์ผ ๋‚ด๋ถ€ ์ธํ”„๋ผ ๋ฐ ์‹œ์Šคํ…œ์— ์ ์šฉ๋œ ๋‹ค์–‘ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํŒ€์€ ์•ฑ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ "ํ•˜ํŠธ๋น„ํŠธ" ์ฑ„๋„์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ํŠน์ • Heartbeat ์ฑ„๋„๋กœ ๋ณด๋‚ด๋ฉด ํŒ€ ๊ตฌ์„ฑ์›์ด ์ •๊ทœ ์ฑ„๋„์—์„œ ์—…๋ฌด ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ํŒ€ ๊ตฌ์„ฑ์›์ด Heartbeat ์ฑ„๋„์— ๊ฒŒ์‹œ๋œ ์งˆ๋ฌธ์œผ๋กœ ๋ณ„๋„๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ†ตํ•ฉ์˜ ์ฃผ์š” ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„์ „ ์ „๋ฐ˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ๊ณผ ์‹ค์‹œ๊ฐ„ ๊ตฌ์„ฑ ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ปค๋ฐ‹๋˜๊ณ  ํ‘ธ์‹œ๋˜๋Š” ์ฆ‰์‹œ ํ•˜ํŠธ๋น„ํŠธ ์ฑ„๋„์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋ฆผ์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ์ฑ„๋„์„ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ์ „ํ™˜, ํŒ€์› ์š”์ฒญ, ์ปค๋ฐ‹ ์ถ”์ ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด Mattermost์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์€ GitLab์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

GitLab ๋ฐ Mattermost ChatOps๋Š” ๊ฐ€์‹œ์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.

Mattermost์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” GitLab ์˜ด๋‹ˆ๋ฒ„์Šค ํŒจํ‚ค์ง€, GitLab SSO์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›, ์‚ฌ์ „ ํŒจํ‚ค์ง€๋œ GitLab ํ†ตํ•ฉ ๋ฐ PostgreSQL ์ง€์›์€ ๋ฌผ๋ก  ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ž‘์—… ๊ด€๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” Prometheus ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๊ณ  ๋Œ€์‘. ๋งˆ์ง€๋ง‰์œผ๋กœ Mattermost๋Š” ์ด์ œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitLab ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ.

DevOps ํŒ€์€ ์ง€๊ธˆ๊นŒ์ง€ ChatOps์˜ ์ด์ ์„ ๊ฐ–์ถ˜ ๋” ๋‚˜์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. Mattermost์™€ ํ•จ๊ป˜ GitLab Omnibus๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”!

๊ทธ๊ฒŒ ๋‹ค์•ผ. ํ‰์†Œ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘๋ฅผ ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค ๋ฌด๋ฃŒ ์›น ์„ธ๋ฏธ๋‚˜์—์„œ๋Š” Jenkins์™€ Kubernetes ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ ๊ธฐ๋Šฅ์„ ์—ฐ๊ตฌํ•˜๊ณ , ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ๋ฅผ ๊ณ ๋ คํ•˜๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ์—ฐ์‚ฐ์ž์˜ ์ž‘๋™์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€