๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

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

์ง์ ‘ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ณ ์œ ํ•œ ๊ฒฝํ—˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋Œ€์‹  ๋ฐฉ๋ฒ•๋ก , ์ตœ์ ์˜ ๋ฉ”ํŠธ๋ฆญ์„ ์„ ํƒํ•˜๊ณ  ๋ถ€ํ•˜ ํ”„๋กœํ•„์— ๋”ฐ๋ผ ์ž๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ์—”์ง€๋‹ˆ์–ด๋Š” ์ข…์ข… ์ฒ˜์Œ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ์ธํ”„๋ผ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๋ถ€ํ•˜ ๋„๊ตฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CI ์‹œ์Šคํ…œ์—์„œ ์Šค์Šค๋กœ ๋ณด๊ณ ์„œ์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ฒŒ์‹œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Positive Technologies์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ์—์„œ ์ผ๋ถ€ ์กฐ์ง ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ธฐ์‚ฌ. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—์„œ๋Š” "์„œ๋น„์Šค๋กœ์„œ์˜ ๋กœ๋“œ ํ…Œ์ŠคํŠธ"(์„œ๋น„์Šค๋กœ์„œ์˜ ๋กœ๋“œ ํ…Œ์ŠคํŠธ)๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ณตํ†ต CI ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๋“œ ์†Œ์Šค์˜ ๋„์ปค ์ด๋ฏธ์ง€์™€ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œ ์†Œ์Šค๋ฅผ CI ํ”„๋กœ์ ํŠธ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ฒŒ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ๋ชจ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋Š” ๋กœ๋“œ ์‹œ์Šคํ…œ์˜ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š” CI์˜ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ์—”์ง€๋‹ˆ์–ด ๋ฐ ์ž๋™ํ™” ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋…์˜ ๋ณธ์งˆ

์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฐœ๋…์€ ๋ถ€ํ•˜ ๋„๊ตฌ Apache JMeter, Yandex.Tank ๋ฐ ์ž์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž„์˜์˜ ์—ฐ์† ํ†ตํ•ฉ ์‹œ์Šคํ…œ์— ํ†ตํ•ฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ๋Š” GitLab CI์šฉ์ด์ง€๋งŒ ์›์น™์€ ๋ชจ๋“  CI ์‹œ์Šคํ…œ์— ๊ณตํ†ต์ž…๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์ „์šฉ ์—์ด์ „ํŠธ ํ’€์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๊ฒฐ๊ณผ๋Š” GitLab Pages, Influx DB ๋ฐ Grafana ๋˜๋Š” ํ…Œ์ŠคํŠธ ๋ณด๊ณ  ์‹œ์Šคํ…œ(TestRail, ReportPortal ๋“ฑ)์— ์ž๋™์œผ๋กœ ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ž๋™ํ™” ๋ฐ ํ™•์žฅ์€ GitLab CI ํ”„๋กœ์ ํŠธ์—์„œ ์ผ๋ฐ˜์ ์ธ gitlab-ci.yml ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ์ „์ฒด CI ์ธํ”„๋ผ, ๋กœ๋“œ ์—์ด์ „ํŠธ, ๋กœ๋“œ ์†Œ์Šค์˜ ๋„์ปค ์ด๋ฏธ์ง€, ํ…Œ์ŠคํŠธ ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ๊ฒŒ์‹œ ๋ณด๊ณ ์„œ๊ฐ€ ์ค‘์•™ ์ง‘์ค‘์‹ ์ž๋™ํ™” ๋ถ€์„œ(DevOps ์—”์ง€๋‹ˆ์–ด)์— ์˜ํ•ด ์œ ์ง€ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ˜๋ฉด ๋กœ๋“œ ํ…Œ์ŠคํŠธ ์—”์ง€๋‹ˆ์–ด๋Š” ํ…Œ์ŠคํŠธ ๊ฐœ๋ฐœ์— ๋…ธ๋ ฅ์„ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ธํ”„๋ผ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…์„ ๊ฐ„๋‹จํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ํ…Œ์ŠคํŠธ ์ค‘์ธ ์„œ๋ฒ„๊ฐ€ ์ด๋ฏธ ๋ฐฐํฌ๋˜๊ณ  ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(Python, SaltStack, Ansible ๋“ฑ์˜ ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ). ๊ทธ๋Ÿฐ ๋‹ค์Œ ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ „์ฒด ๊ฐœ๋…์€ ์„ธ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ค€๋น„, ํ…Œ์ŠคํŠธ, ๋ณด๊ณ ์„œ ๋ฐœํ–‰. ๋‹ค์ด์–ด๊ทธ๋žจ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ(๋ชจ๋“  ์‚ฌ์ง„์„ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Œ):

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐ ์ •์˜

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‹ค์Œ์„ ์ค€์ˆ˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ISTQB ํ‘œ์ค€ ๋ฐ ๋ฐฉ๋ฒ•๋ก , ์ ์ ˆํ•œ ์šฉ์–ด์™€ ๊ถŒ์žฅ ๋ฉ”ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ฃผ์š” ๊ฐœ๋…๊ณผ ์ •์˜์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ ์—์ด์ „ํŠธ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๊ฐ€์ƒ ๋จธ์‹  - ๋กœ๋“œ ์†Œ์Šค(Apache JMeter, Yandex.Tank ๋˜๋Š” ์ž์ฒด ์ž‘์„ฑ ๋กœ๋“œ ๋ชจ๋“ˆ).

ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ(๋Œ€์ƒ) - ๋กœ๋“œ ๋Œ€์ƒ์ด ๋  ์„œ๋ฒ„ ๋˜๋Š” ์„œ๋ฒ„์— ์„ค์น˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜.

ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค(ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค) - ์ผ๋ จ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ๋‹จ๊ณ„: ์ง€์ •๋œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๊ณ ์ •๋œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์กฐ์น˜ ๋ฐ ์ด๋Ÿฌํ•œ ์กฐ์น˜์— ๋Œ€ํ•œ ์˜ˆ์ƒ ๋ฐ˜์‘.

ํ”„๋กœํ•„ ๋˜๋Š” ๋ถ€ํ•˜ ๊ณ„ํš(ํ”„๋กœํ•„) -์— ISTQB ๋ฐฉ๋ฒ•๋ก  (์„น์…˜ 4.2.4, p. 43) ๋ถ€ํ•˜ ํ”„๋กœํ•„์€ ํŠน์ • ํ…Œ์ŠคํŠธ์— ์ค‘์š”ํ•œ ๋ฉ”ํŠธ๋ฆญ๊ณผ ํ…Œ์ŠคํŠธ ์ค‘์— ๋ถ€ํ•˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ์˜ต์…˜์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์—์„œ ํ”„๋กœํ•„์˜ ์˜ˆ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

์‹œํ—˜ โ€” ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ธํŠธ๊ฐ€ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ.

ํ…Œ์ŠคํŠธ ๊ณ„ํš(ํ…Œ์ŠคํŠธ ๊ณ„ํš) - ์ผ๋ จ์˜ ํ…Œ์ŠคํŠธ ๋ฐ ๋ถ€ํ•˜ ํ”„๋กœํ•„.

ํ…Œ์ŠคํŠธ๋Ÿฐ(testrun) - ์™„์ „ํžˆ ์‹คํ–‰๋œ ๋ถ€ํ•˜ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฐ ์ˆ˜์‹ ๋œ ๋ณด๊ณ ์„œ๋กœ ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ˜๋ณต.

๋„คํŠธ์›Œํฌ ์š”์ฒญ(์š”์ฒญ) โ€” ์—์ด์ „ํŠธ์—์„œ ๋Œ€์ƒ์œผ๋กœ ๋ณด๋‚ธ HTTP ์š”์ฒญ์ž…๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์‘๋‹ต(response) โ€” ๋Œ€์ƒ์—์„œ ์—์ด์ „ํŠธ๋กœ ๋ณด๋‚ธ HTTP ์‘๋‹ต์ž…๋‹ˆ๋‹ค.
HTTP ์‘๋‹ต ์ฝ”๋“œ(HTTP ์‘๋‹ต ์ƒํƒœ) - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ํ‘œ์ค€ ์‘๋‹ต ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
ํŠธ๋žœ์žญ์…˜์€ ์™„์ „ํ•œ ์š”์ฒญ-์‘๋‹ต ์ฃผ๊ธฐ์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ์š”์ฒญ(request) ์ „์†ก ์‹œ์ž‘๋ถ€ํ„ฐ ์‘๋‹ต(response) ์ˆ˜์‹  ์™„๋ฃŒ๊นŒ์ง€ ์นด์šดํŠธ๋ฉ๋‹ˆ๋‹ค.

๊ฑฐ๋ž˜ ์ƒํƒœ - ์š”์ฒญ-์‘๋‹ต ์ฃผ๊ธฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ์—ฌ๋ถ€. ์ด ์ฃผ๊ธฐ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ „์ฒด ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

์‘๋‹ต ์‹œ๊ฐ„(๋Œ€๊ธฐ ์‹œ๊ฐ„) - ์š”์ฒญ(request) ์ „์†ก์˜ ๋์—์„œ ์‘๋‹ต(response) ์ˆ˜์‹  ์‹œ์ž‘๊นŒ์ง€์˜ ์‹œ๊ฐ„.

์ธก์ •ํ•ญ๋ชฉ ๋กœ๋“œ - ๋กœ๋“œ ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ ๊ฒฐ์ •๋œ ๋กœ๋“œ๋œ ์„œ๋น„์Šค ๋ฐ ๋กœ๋“œ ์—์ด์ „ํŠธ์˜ ํŠน์„ฑ.

๋ถ€ํ•˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ธก์ •์„ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ฉ”ํŠธ๋ฆญ

๋ฐฉ๋ฒ•๋ก ์—์„œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ๊ถŒ์žฅ๋˜๋Š” ์ผ๋ถ€ ISTQB (p. 36, 52) ๋ฉ”ํŠธ๋ฆญ์€ ์•„๋ž˜ ํ‘œ์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ ๋ฐ ๋Œ€์ƒ์— ๋Œ€ํ•œ ์œ ์‚ฌํ•œ ๋ฉ”ํŠธ๋ฆญ์ด ๊ฐ™์€ ์ค„์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

๋กœ๋“œ ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ์ง€ํ‘œ
๋กœ๋“œ ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธ ์ค‘์ธ ๋Œ€์ƒ ์‹œ์Šคํ…œ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง€ํ‘œ

์ˆ˜  vCPU ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์–ต ๋žจ,
๋””์Šคํฌ - ํ•˜์ค‘์ œ์˜ "์ฒ " ํŠน์„ฑ
CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ - CPU, ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ๋””์Šคํฌ ๋กœ๋”ฉ์˜ ์—ญํ•™
ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฑ๋ถ„์œจ๋กœ ์ธก์ •
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€๊ฐ’

๋„คํŠธ์›Œํฌ ์ฒ˜๋ฆฌ๋Ÿ‰ (๋ถ€ํ•˜ ์—์ด์ „ํŠธ์—์„œ) - ์ฒ˜๋ฆฌ๋Ÿ‰
์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค,
๋กœ๋“œ ์—์ด์ „ํŠธ๊ฐ€ ์„ค์น˜๋œ ์œ„์น˜.
์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๋‹น ๋ฐ”์ดํŠธ(bps)๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค.
๋„คํŠธ์›Œํฌ ์ฒ˜๋ฆฌ๋Ÿ‰(๋Œ€์ƒ์—์„œ) - ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๋Œ€์—ญํญ
๋Œ€์ƒ ์„œ๋ฒ„์—์„œ. ์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๋‹น ๋ฐ”์ดํŠธ ์ˆ˜(bps)๋กœ ์ธก์ •

๊ฐ€์ƒ ์‚ฌ์šฉ์ž- ๊ฐ€์ƒ ์‚ฌ์šฉ์ž ์ˆ˜,
๋ถ€ํ•˜ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ตฌํ˜„ ๋ฐ
์‹ค์ œ ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ชจ๋ฐฉ
๊ฐ€์ƒ ์‚ฌ์šฉ์ž ์ƒํƒœ, Passed/Failed/Total โ€” ์„ฑ๊ณต ํšŸ์ˆ˜ ๋ฐ
๊ฐ€์ƒ ์‚ฌ์šฉ์ž์˜ ์‹คํŒจํ•œ ์ƒํƒœ
๋ถ€ํ•˜ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฐ ์ด ์ˆ˜.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.
๋กœ๋“œ ํ”„๋กœํ•„์— ์ง€์ •๋œ ๋ชจ๋“  ์ž‘์—….
๋ชจ๋“  ์˜ค๋ฅ˜๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€
์‹œ์Šคํ…œ ์ž‘์—… ์‹œ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ดˆ๋‹น ์š”์ฒญ(๋ถ„)- ์ดˆ๋‹น(๋˜๋Š” ๋ถ„๋‹น) ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์ˆ˜.

๋กœ๋“œ ์—์ด์ „ํŠธ์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ์€ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ์ˆ˜์ž…๋‹ˆ๋‹ค.
์‚ฌ์‹ค ์ด๊ฒƒ์€ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์„ ๋ชจ๋ฐฉํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ดˆ๋‹น ์‘๋‹ต(๋ถ„)
- ์ดˆ๋‹น(๋˜๋Š” ๋ถ„๋‹น) ๋„คํŠธ์›Œํฌ ์‘๋‹ต ์ˆ˜.

๋Œ€์ƒ ์„œ๋น„์Šค์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ: ์–ผ๋งˆ๋‚˜
๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณด๋ƒ…๋‹ˆ๋‹ค.
๋กœ๋”ฉ ์—์ด์ „ํŠธ

HTTP ์‘๋‹ต ์ƒํƒœโ€” ๋‹ค๋ฅธ ์‘๋‹ต ์ฝ”๋“œ์˜ ์ˆ˜
๋กœ๋“œ ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜์‹ ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ.
์˜ˆ๋ฅผ ๋“ค์–ด 200 OK๋Š” ์„ฑ๊ณต์ ์ธ ํ˜ธ์ถœ์„ ์˜๋ฏธํ•˜๊ณ ,
๋ฐ 404 - ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ

์ˆจ์–ด ์žˆ์Œ (์‘๋‹ต ์‹œ๊ฐ„) - ๋์—์„œ ์‹œ๊ฐ„
์‘๋‹ต(์‘๋‹ต)์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์š”์ฒญ(์š”์ฒญ)์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ€๋ฆฌ์ดˆ(ms) ๋‹จ์œ„๋กœ ์ธก์ •

ํŠธ๋žœ์žญ์…˜ ์‘๋‹ต ์‹œ๊ฐ„โ€” ํ•˜๋‚˜์˜ ์™„์ „ํ•œ ํŠธ๋žœ์žญ์…˜ ์‹œ๊ฐ„,
์š”์ฒญ-์‘๋‹ต ์ฃผ๊ธฐ ์™„๋ฃŒ.
์š”์ฒญ(์š”์ฒญ) ์ „์†ก ์‹œ์ž‘๋ถ€ํ„ฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
์‘๋‹ต(์‘๋‹ต)์„ ์ˆ˜์‹ ํ•  ๋•Œ๊นŒ์ง€.

ํŠธ๋žœ์žญ์…˜ ์‹œ๊ฐ„์€ ์ดˆ(๋˜๋Š” ๋ถ„) ๋‹จ์œ„๋กœ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ: ์ตœ์†Œ๊ฐ’์„ ๊ณ ๋ คํ•˜๊ณ ,
์ตœ๋Œ€, ํ‰๊ท  ๋ฐ ์˜ˆ๋ฅผ ๋“ค์–ด 90๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜์ž…๋‹ˆ๋‹ค.
์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ํŒ๋…๊ฐ’์ด ๊ทน๋‹จ์ ์ž…๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ƒํƒœ.
XNUMX๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ,
๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋ฏ€๋กœ
์‹œ์Šคํ…œ ์„ฑ๋Šฅ์˜ ์ž„๊ณ„๊ฐ’์—์„œ ํŽธ์•ˆํ•˜๊ฒŒ ์ž‘๋™

์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜(๋ถ„) - ์™„๋ฃŒ ์ˆ˜
์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜(๋ถ„),
์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ผ๋งˆ๋‚˜ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ 
์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

๊ฑฐ๋ž˜ ์ƒํƒœ , ํ•ฉ๊ฒฉ / ๋ถˆํ•ฉ๊ฒฉ / ํ•ฉ๊ณ„ - ์ˆซ์ž
์„ฑ๊ณต, ์‹คํŒจ ๋ฐ ์ด ๊ฑฐ๋ž˜ ์ˆ˜.

์‹คํŒจํ•œ ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ
๊ฑฐ๋ž˜๋Š” ์‹ค์ œ๋กœ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค
๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฐ ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์—†์Œ

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ํšŒ๋กœ๋„

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ๊ฐœ๋…์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ค€๋น„-์‹œํ—˜-๋ณด๊ณ ์„œ์ฆ‰, ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๋กœ๋“œ ์†Œ์Šค์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ ๋‹ค์Œ ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑ ๋ฐ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

๊ฐœ๋žต๋„:

  • QA.Tester๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ „๋ฌธ๊ฐ€์ด๋ฉฐ,
  • ๋Œ€์ƒ์€ ๋กœ๋“œ ์‹œ ๋™์ž‘์„ ์•Œ๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ์˜ ์—”ํ„ฐํ‹ฐ, ๋‹จ๊ณ„ ๋ฐ ๋‹จ๊ณ„ ๋ถ„๋ฅ˜์ž

๋‹จ๊ณ„ ๋ฐ ๋‹จ๊ณ„
์–ด๋–ป๊ฒŒ ๋ ๊นŒ?
์ž…๊ตฌ์— ์žˆ๋Š” ๊ฒƒ์€
์ถœ๋ ฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ

์ค€๋น„: ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ค€๋น„ ๋‹จ๊ณ„

๋งค๊ฐœ๋ณ€์ˆ˜ ๋กœ๋“œ
์„ค์ • ๋ฐ ์ดˆ๊ธฐํ™”
์‚ฌ์šฉ์ž
๋ถ€ํ•˜ ๋งค๊ฐœ๋ณ€์ˆ˜,
๋ฉ”ํŠธ๋ฆญ ์„ ํƒ ๋ฐ
ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ค€๋น„
(ํ”„๋กœํŒŒ์ผ ๋กœ๋“œ)
์‚ฌ์šฉ์ž ์ง€์ • ์˜ต์…˜
๋กœ๋“œ ์—์ด์ „ํŠธ ์ดˆ๊ธฐํ™”
ํ…Œ์ŠคํŠธ ๊ณ„ํš
ํ…Œ์ŠคํŠธ ๋ชฉ์ 

VM
ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ
๊ฐ€์ƒ ๋จธ์‹ 
ํ•„์ˆ˜ ํŠน์„ฑ
๋กœ๋“œ ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ VM ์„ค์ •
์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ
VM ์ƒ์„ฑ
๊ตฌ์„ฑ๋œ VM
๊ตฌ๋ฆ„

ํ™˜๊ฒฝ
OS ์„ค์ • ๋ฐ ์ค€๋น„
~์„ ์œ„ํ•œ ํ™˜๊ฒฝ
๋กœ๋“œ ์—์ด์ „ํŠธ ์ž‘์—…
์— ๋Œ€ํ•œ ํ™˜๊ฒฝ ์„ค์ •
๋กœ๋“œ ์—์ด์ „ํŠธ
์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ
ํ™˜๊ฒฝ ์„ค์ •
์ค€๋น„๋œ ํ™˜๊ฒฝ:
OS, ์„œ๋น„์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜,
์—…๋ฌด์— ํ•„์š”ํ•œ
๋กœ๋“œ ์—์ด์ „ํŠธ

๋กœ๋“œ ์—์ด์ „ํŠธ
์„ค์น˜, ๊ตฌ์„ฑ ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”
๋กœ๋”ฉ ์—์ด์ „ํŠธ.
๋˜๋Š” ๋‹ค์Œ์—์„œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ๋กœ๋“œ ์†Œ์Šค
์†Œ์Šค ๋„์ปค ์ด๋ฏธ์ง€ ๋กœ๋“œ
(YAT, JM ๋˜๋Š” ์ž์ฒด ์ž‘์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ)
์„ค์ •
๋กœ๋“œ ์—์ด์ „ํŠธ
์„ค์ • ๋ฐ ์ค€๋น„
์ž‘์—… ๋ถ€ํ•˜ ์—์ด์ „ํŠธ

ํ…Œ์ŠคํŠธ: ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์†Œ์Šค๋Š” GitLab CI ์ „์šฉ ์—์ด์ „ํŠธ ํ’€์— ๋ฐฐํฌ๋œ ๋กœ๋“œ ์—์ด์ „ํŠธ์ž…๋‹ˆ๋‹ค.

ํ•˜์ค‘
๋กœ๋“œ ์—์ด์ „ํŠธ ์‹œ์ž‘
์„ ํƒํ•œ ํ…Œ์ŠคํŠธ ๊ณ„ํš์œผ๋กœ
๋ฐ ๋กœ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜
์‚ฌ์šฉ์ž ์˜ต์…˜
์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•ด
๋กœ๋“œ ์—์ด์ „ํŠธ
ํ…Œ์ŠคํŠธ ๊ณ„ํš
ํ…Œ์ŠคํŠธ ๋ชฉ์ 
์‹คํ–‰ ๋กœ๊ทธ
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ
์‹œ์Šคํ…œ ๋กœ๊ทธ
๋ชฉํ‘œ ๋ฉ”ํŠธ๋ฆญ ๋ฐ ๋ถ€ํ•˜ ์—์ด์ „ํŠธ์˜ ๋ณ€ํ™” ์—ญํ•™

์—์ด์ „ํŠธ ์‹คํ–‰
์—์ด์ „ํŠธ ์‹คํ–‰
๋งŽ์€ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ
์— ๋”ฐ๋ผ
๋กœ๋“œ ํ”„๋กœํ•„
๋กœ๋“œ ์—์ด์ „ํŠธ ์ƒํ˜ธ ์ž‘์šฉ
ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ
ํ…Œ์ŠคํŠธ ๊ณ„ํš
ํ…Œ์ŠคํŠธ ๋ชฉ์ 

๋กœ๊ทธ
"์›์‹œ" ๋กœ๊ทธ ์ˆ˜์ง‘
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ค‘:
์—์ด์ „ํŠธ ํ™œ๋™ ๊ธฐ๋ก ๋กœ๋“œ,
ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์˜ ์ƒํƒœ
์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” VM

์‹คํ–‰ ๋กœ๊ทธ
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ
์‹œ์Šคํ…œ ๋กœ๊ทธ

ํ†ต๊ณ„
ํ…Œ์ŠคํŠธ ์ค‘ "์›์‹œ" ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘

๋ชฉํ‘œ ์ง€ํ‘œ ๋ณ€ํ™”์˜ ์—ญํ•™
๋ฐ ๋ถ€ํ•˜ ์—์ด์ „ํŠธ

๋ณด๊ณ ์„œ: ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ ์ค€๋น„ ๋‹จ๊ณ„

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

๊ฒŒ์‹œ์ด๋‹ค.
๋ณด๊ณ ์„œ ๋ฐœ๊ฐ„
๋ถ€ํ•˜์— ๋Œ€ํ•ด
์™ธ๋ถ€์—์„œ ํ…Œ์ŠคํŠธ
์„œ๋น„์Šค
๊ฐ€๊ณต๋œ "์›์‹œ"
์ ์ ˆํ•œ ํ˜•์‹์˜ ๋กœ๊ทธ
์™ธ๋ถ€๋กœ ์–ธ๋กœ๋“œ
๊ธˆ๊ณ 
์™ธ๋ถ€์— ์ €์žฅ๋จ
์Šคํ† ๋ฆฌ์ง€ ๋ณด๊ณ ์„œ
ํ•˜์ค‘, ์ ํ•ฉ
์ธ๊ฐ„ ๋ถ„์„์„ ์œ„ํ•ด

CI ํ…œํ”Œ๋ฆฟ์—์„œ ๋กœ๋“œ ์†Œ์Šค ์—ฐ๊ฒฐ

์‹ค์šฉ์ ์ธ ๋ถ€๋ถ„์œผ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค. ํšŒ์‚ฌ์˜ ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ธ์ •์  ์ธ ๊ธฐ์ˆ  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฐœ๋…์„ ์„œ๋น„์Šค๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € DevOps ์—”์ง€๋‹ˆ์–ด์˜ ๋„์›€์„ ๋ฐ›์•„ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด GitLab CI์— ์ „์šฉ ์—์ด์ „ํŠธ ํ’€์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ ํ’€๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ๊ณผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ์—์ด์ „ํŠธ์— ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ: ์ง. ๋‹ค๋ฅธ ์ดํ•ด ๊ฐ€๋Šฅํ•œ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋ฌป๋‹ค ๋“ฑ๋ก ์ค‘ GitLab CI ๋Ÿฌ๋„ˆ.

ํ•˜๋“œ์›จ์–ด๋ณ„๋กœ ํ•„์š”ํ•œ ์ „๋ ฅ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋กœ๋“œ ์—์ด์ „ํŠธ์˜ ํŠน์„ฑ(์ถฉ๋ถ„ํ•œ ์ˆ˜์˜ vCPU, RAM ๋ฐ ๋””์Šคํฌ)์€ ์—์ด์ „ํŠธ์—์„œ Docker, Python(Yandex.Tank์˜ ๊ฒฝ์šฐ), GitLab CI ์—์ด์ „ํŠธ, Java(Apache JMeter์˜ ๊ฒฝ์šฐ)๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. . JMeter์—์„œ Java์˜ ๊ฒฝ์šฐ ์ตœ์†Œ 512MB์˜ RAM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ 80%.

๋”ฐ๋ผ์„œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๋กœ๋“œ ์—์ด์ „ํŠธ์— ์ตœ์†Œ 4๊ฐœ์˜ vCPU, 4GB RAM, 60GB SSD๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์นด๋“œ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์€ ๋กœ๋“œ ํ”„๋กœํ•„์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ Apache JMeter์™€ Yandex.Tank ๋„์ปค ์ด๋ฏธ์ง€๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋กœ๋“œ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Yandex.ํƒฑํฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Yandex์˜ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๋Š” Phantom์˜ ๊ณ ์„ฑ๋Šฅ ๋น„๋™๊ธฐ ์ ์ค‘ ๊ธฐ๋ฐ˜ HTTP ์š”์ฒญ ์ƒ์„ฑ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํƒฑํฌ์—๋Š” SSH ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ์ค‘์ธ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ง€์ •๋œ ์กฐ๊ฑด์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ˜์†”๊ณผ ๊ทธ๋ž˜ํ”„ ํ˜•์‹์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“ˆ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์•„์ง ์ฃผ๋ฅ˜๊ฐ€ ์•„๋‹ˆ์—ˆ์„ ๋•Œ ํƒฑํฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ์—์„œ "Yandex.Tank ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”ยป 2013๋…„์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ ์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์•„ํŒŒ์น˜ JMeter Apache์˜ ์˜คํ”ˆ ์†Œ์Šค ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ •์  ๋ฐ ๋™์  ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋‘ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JMeter๋Š” HTTP, HTTPS(Java, NodeJS, PHP, ASP.NET ๋“ฑ), SOAP / REST ์›น ์„œ๋น„์Šค, FTP, TCP, LDAP, SMTP(S), POP3( S) ) ๋ฐ IMAP(S), JDBC๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‰˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  Java ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JMeter์—๋Š” ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ƒ์„ฑ, ๋””๋ฒ„๊น… ๋ฐ ์‹คํ–‰์„ ์œ„ํ•œ IDE๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  Java ํ˜ธํ™˜ ์šด์˜ ์ฒด์ œ(Linux, Windows, Mac OS X)์—์„œ ๋ช…๋ น์ค„ ์ž‘์—…์„ ์œ„ํ•œ CLI๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” HTML ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์‚ฌ ๋‚ด์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…Œ์Šคํ„ฐ๊ฐ€ ์ง์ ‘ ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก GitLab CI์—์„œ ๋กœ๋“œ ์†Œ์Šค์˜ ๋„์ปค ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋ถ€์— ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. Artifactory์˜ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋” ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitLab CI๋ฅผ ํ†ตํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋„์ปค ํ‘ธ์‹œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ• - ์ฐธ์กฐ ๋ช…๋ น.

Yandex.Tank์šฉ ๊ธฐ๋ณธ ๋„์ปค ํŒŒ์ผ์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

Dockerfile 
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]

๊ทธ๋ฆฌ๊ณ  Apache JMeter์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Dockerfile 
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]

"์ง€์†์ ์ธ ํ†ตํ•ฉ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ธฐ์‚ฌ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ž๋™ํ™”: Positive Technologies์—์„œ DevOps ์•„์ด๋””์–ด๋ฅผ ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ•".

ํ…œํ”Œ๋ฆฟ ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ์˜ ์˜ˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ ๋กœ๋“œ. ์— ์ฝ์–ด๋ณด๊ธฐ ํŒŒ์ผ ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ ์ง€์นจ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ์ž์ฒด(ํŒŒ์ผ .gitlab-ci.yml) ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ…œํ”Œ๋ฆฟ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ ์œ„์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์— ์„ค๋ช…๋œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์„ธ ๋‹จ๊ณ„์ธ ๋ณด๊ณ ์„œ ์ค€๋น„, ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒŒ์‹œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ฑ…์ž„ ๋‹จ๊ณ„: ์ค€๋น„, ํ…Œ์ŠคํŠธ ๋ฐ ๋ณด๊ณ .

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

    ์ฐธ๊ณ : ์–ด์…ˆ๋ธ”๋ฆฌ ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ์€ CI ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ํ…Œ์ŠคํŠธ ๋กœ์ง์˜ ๋ฐฐ์น˜๋ฅผ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์ œ์–ด bash ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋Š” ์ง„์ž…์ ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐฉ๋ฒ•, ๋ณด๊ณ ์„œ ์ƒ์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๋Š” QA ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ์—์„œ ๋‘ ๋กœ๋“œ ์†Œ์Šค์— ๋Œ€ํ•ด Yandex ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ์š”์ฒญ์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋ฐ ํ…Œ์ŠคํŠธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ./ํ…Œ์ŠคํŠธ.

  3. ๋ฌด๋Œ€ ์œ„์— Report ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ ์–ป์€ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์™ธ๋ถ€ ์ €์žฅ์†Œ(์˜ˆ: GitLab ํŽ˜์ด์ง€ ๋˜๋Š” ํŠน์ˆ˜ ๋ณด๊ณ  ์‹œ์Šคํ…œ)์— ๊ฒŒ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitLab Pages๋Š” ./public ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ์ตœ์†Œํ•œ index.html ํŒŒ์ผ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitLab Pages ์„œ๋น„์Šค์˜ ๋‰˜์•™์Šค์— ๋Œ€ํ•ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งํฌ.

    ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ:

    ์„ค์ • ์ง€์นจ ๊ฒŒ์‹œ:

๋ฐ๋ชจ ์˜ˆ์ œ์—์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ๋‘ ๊ฐœ์˜ ๋ถ€ํ•˜ ์†Œ์Šค(๋ถˆํ•„์š”ํ•œ ๊ฒƒ์€ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Œ)๊ฐ€ ์žˆ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

Apache JMeter๋Š” HTML ๋ณด๊ณ ์„œ ์ž์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ‘œ์ค€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitLab ํŽ˜์ด์ง€์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Apache JMeter ๋ณด๊ณ ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

Yandex.Tank์˜ ๋ฐ๋ชจ ์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ€์งœ ๋ฌธ์ž ์‹ ๊ณ  GitLab ํŽ˜์ด์ง€ ์„น์…˜์—์„œ. ํ…Œ์ŠคํŠธ ์ค‘์— Tank๋Š” ๊ฒฐ๊ณผ๋ฅผ InfluxDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—์„œ ์˜ˆ๋ฅผ ๋“ค์–ด Grafana์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ตฌ์„ฑ์€ ํŒŒ์ผ์—์„œ ์ˆ˜ํ–‰๋จ). ./tests/example-yandextank-test.yml). Tank์˜ ๋ณด๊ณ ์„œ๊ฐ€ Grafana์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ CI ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

๊ฐœ์š”

๊ธฐ์‚ฌ์—์„œ๋Š” "์„œ๋น„์Šค๋กœ์„œ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ"(load testing as a service)์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ๋กœ๋“œ ์—์ด์ „ํŠธ ํ’€, ๋กœ๋“œ ์†Œ์Šค์˜ ๋„์ปค ์ด๋ฏธ์ง€, ๋ณด๊ณ  ์‹œ์Šคํ…œ ๋ฐ ๊ฐ„๋‹จํ•œ .gitlab-ci.yml ํ…œํ”Œ๋ฆฟ(์˜ˆ: ๋งํฌ). ์ด ๋ชจ๋“  ๊ฒƒ์€ ์†Œ๊ทœ๋ชจ ์ž๋™ํ™” ์—”์ง€๋‹ˆ์–ด ํŒ€์ด ์ง€์›ํ•˜๊ณ  ์ œํ’ˆ ํŒ€์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋ณต์ œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ํšŒ์‚ฌ์—์„œ ์œ ์‚ฌํ•œ ๊ณ„ํš์„ ์ค€๋น„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ด€์‹ฌ์„ ๊ฐ€์ ธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

PS ์šฐ๋ฆฌ ํšŒ์‚ฌ์—์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฐœ๋…์„ ์„œ๋น„์Šค๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๊ธฐ์ˆ  ์ง€์›์„ ์ œ๊ณตํ•œ ๋™๋ฃŒ์ธ Sergey Kurbanov์™€ Nikolai Yusev์—๊ฒŒ ํฐ ๊ฐ์‚ฌ๋ฅผ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ €์ž: ํ‹ฐ๋ฌด๋ฅด ๊ธธ๋ฉ€๋ฆฐ - ์ฐจ์žฅ Positive Technologies์˜ ๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค(DevOps) ์ฑ…์ž„์ž

์ถœ์ฒ˜ : habr.com

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