DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

1๋ถ€: ์›น/์•ˆ๋“œ๋กœ์ด๋“œ

์ฃผ์˜: ์ด ๊ธฐ์‚ฌ๋Š” ์›๋ณธ ๊ธฐ์‚ฌ๋ฅผ ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋ฒˆ์—ญํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. โ€œDevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. "์ฒ˜์Œ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ ๊ตฌ์ถ•." ๊ทธ๋Ÿฌ๋‚˜ ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋ฒˆ์—ญํ•  ๋•Œ ์˜๋ฏธ๊ฐ€ ์™œ๊ณก๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ทธ๋ฆผ, ๋งํฌ, ์ธ์šฉ๋ฌธ ๋ฐ ์šฉ์–ด๋Š” ์›๋ž˜ ์–ธ์–ด๋กœ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. ์ฆ๊ฒ๊ฒŒ ๊ณต๋ถ€ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

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

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

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •
์ถœ์ฒ˜ : http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ์„œ๋ฌธ ๋ถ€๋ถ„์„ ๋๋‚ด๊ณ  ์ด ๊ธฐ์‚ฌ์˜ ๋ชฉ์ ์— ์ดˆ์ ์„ ๋งž์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

์ด ๊ธฐ์‚ฌ๋Š” ๋ฌด์—‡์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

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

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

์ด ๊ธ€์— ์—†๋Š” ๋‚ด์šฉ

์ด ๊ธฐ์‚ฌ๋Š” ํŠน์ • ๋„๊ตฌ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ฌธ์„œ ๋ฐ ํŠน์ • ๋ช…๋ น์— ๋Œ€ํ•œ ์„ค๋ช…์—์„œ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ์„น์…˜์˜ ๋ ๋ถ€๋ถ„์—๋Š” ์ž์„ธํ•œ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•œ ๋งํฌ๋ฅผ ๋‚จ๊ฒจ ๋‘ก๋‹ˆ๋‹ค.

์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. 

  • ์ด ์ž๋ฃŒ๋Š” ๋‹ค์–‘ํ•œ ์†Œ์Šค(๋ฌธ์„œ, ์ฑ…, ๋น„๋””์˜ค ๊ฐ•์ขŒ)์—์„œ ๋งค์šฐ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€๋ ค๋ฉด ์ด ๊ธฐ์‚ฌ์˜ 10, 20, 30๊ฐœ ๋ถ€๋ถ„์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ณ„ํš์€ 2-3๊ฐœ์ž…๋‹ˆ๋‹ค).
  • ๋™์ผํ•œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฐ์Šต

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

๊ณ„ํš

๋‹จ๊ณ„
Technology
๋„๊ตฌ

1
๋กœ์ปฌ ์‹คํ–‰(์›น/์•ˆ๋“œ๋กœ์ด๋“œ ๋ฐ๋ชจ ํ…Œ์ŠคํŠธ ์ค€๋น„ ๋ฐ ๋กœ์ปฌ ์‹คํ–‰) 
Node.js, ์…€๋ ˆ๋Š„, Appium

2
๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ 
ํž˜๋‚ด

3
์ปจํ…Œ์ด๋„ˆํ™”
Docker, Selenium ๊ทธ๋ฆฌ๋“œ, Selenoid(์›น, Android)

4
CI/CD
๊นƒ๋žฉ CI

5
ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ
Google Cloud Platform

6
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
Kubernetes

7
์ฝ”๋“œํ˜• ์ธํ”„๋ผ(IaC)
ํ…Œ๋ผํผ, ์•ค์„œ๋ธ”

๊ฐ ์„น์…˜์˜ ๊ตฌ์กฐ

๋‚ด๋Ÿฌํ‹ฐ๋ธŒ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์„น์…˜์€ ๋‹ค์Œ ๊ฐœ์š”์— ๋”ฐ๋ผ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…,
  • ์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜,
  • ์ธํ”„๋ผ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ,
  • ๊ณต๋ถ€ ๋งํฌ,
  • ๋น„์Šทํ•œ ๋„๊ตฌ.

1. ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ ์‹คํ–‰

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

์ด๋Š” ๋กœ์ปฌ์—์„œ ๋ฐ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„ ๋‹จ๊ณ„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์‹ค๋ฌด์ ์ธ ๋ถ€๋ถ„์—์„œ๋Š” Node.js๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ํ”Œ๋žซํผ๋„ ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํšŒ์‚ฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

๊ทธ๋Ÿฌ๋‚˜ ์ž๋™ํ™” ๋„๊ตฌ๋กœ๋Š” ์›น ํ”Œ๋žซํผ์šฉ Selenium WebDriver์™€ Android ํ”Œ๋žซํผ์šฉ Appium์„ ๊ฐ๊ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋„๊ตฌ์™€ ํŠน๋ณ„ํžˆ ์ž‘๋™ํ•˜๋„๋ก ๋งž์ถคํ™”๋œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž‘์—… ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ์‹œ์žฅ์—์„œ ๊ฐ€์žฅ ์ˆ˜์š”๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์•„์‹œ๋‹ค์‹œํ”ผ ์šฐ๋ฆฌ๋Š” ์›น ๋ฐ Android ํ…Œ์ŠคํŠธ๋งŒ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ iOS๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค(Apple์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค). ์•ž์œผ๋กœ๋Š” IOS ๊ด€๋ จ ์†”๋ฃจ์…˜๊ณผ ์‚ฌ๋ก€๋ฅผ ์„ ๋ณด์ผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

์ธํ”„๋ผ ๊ด€์ ์—์„œ ๋กœ์ปฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ค ๊ฐ€์น˜๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์™€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€๋งŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด์จŒ๋“  ์ด๊ฒƒ์€ ํ•„์š”ํ•œ ์ถœ๋ฐœ์ ์ด๋‹ค.

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ

์œ ์‚ฌํ•œ ๋„๊ตฌ

  • Selenium/Appium ํ…Œ์ŠคํŠธ์™€ ํ•จ๊ป˜ ์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด;
  • ๋ชจ๋“  ํ…Œ์ŠคํŠธ;
  • ๋ชจ๋“  ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ.

2. ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(Git)

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

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

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—์„œ ํ•ฉ๋ฆฌ์ ์ธ ์งˆ๋ฌธ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€œ์™œ ๊ทธ๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ Git์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฑธ๊นŒ์š”? ๋ชจ๋‘๊ฐ€ ์ด๊ฒƒ์„ ์•Œ๊ณ  ๊ฐœ๋ฐœ ์ฝ”๋“œ์™€ ์ž๋™ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ชจ๋‘์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.โ€ ์ „์ ์œผ๋กœ ์˜ณ์œผ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์ธํ”„๋ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ์„น์…˜์€ ์„น์…˜ 7: "IaC(์ฝ”๋“œํ˜• ์ธํ”„๋ผ)"์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ์ด๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ์ธํ”„๋ผ๊ฐ€ ์ฝ”๋“œ ํ˜•์‹์œผ๋กœ ์„ค๋ช…๋˜๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ ์šฉํ•˜๊ณ  ๊ฐœ๋ฐœ ๋ฐ ์ž๋™ํ™” ์ฝ”๋“œ์™€ ์œ ์‚ฌํ•œ ์ด์ ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

IaC์— ๋Œ€ํ•ด์„œ๋Š” 7๋‹จ๊ณ„์—์„œ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ ์ง€๊ธˆ๋„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋กœ์ปฌ์—์„œ Git ์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ์— ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํฐ ๊ทธ๋ฆผ์ด ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ

์œ ์‚ฌํ•œ ๋„๊ตฌ

3. ์ปจํ…Œ์ด๋„ˆํ™”(Docker)

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

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

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

์ด์ œ ์ปจํ…Œ์ด๋„ˆํ™”์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ, ์ด ๊ธฐ์ˆ ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ „์ฒด OS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ๋งŽ์€ ์–‘์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•˜๊ณ  ์ด์‹์„ฑ์„ ์œ„ํ•œ ๋น ๋ฅด๊ณ  ์œ ์—ฐํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ปจํ…Œ์ด๋„ˆํ™” ๊ธฐ์ˆ ์€ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ 70๋…„๋Œ€ ํ›„๋ฐ˜์— ์ฒ˜์Œ ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ๋งŽ์€ ์—ฐ๊ตฌ์™€ ๊ฐœ๋ฐœ, ์‹œ๋„๊ฐ€ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ธฐ์ˆ ์„ ์ฑ„ํƒํ•˜์—ฌ ๋Œ€์ค‘์ด ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์€ Docker์˜€์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜ ์ปจํ…Œ์ด๋„ˆ์— ๊ด€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Docker๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ๋Š” Linux ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Windows ๋ฐ macOS ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๋ ˆ์ด์–ด๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Mac์˜ Docker๋Š” ๊ฒฝ๋Ÿ‰ Linux VM ๋‚ด์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ Android ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์‹คํ–‰์„ ๋…ผ์˜ํ•  ๋•Œ ์ด ์ฃผ์ œ๋กœ ๋Œ์•„๊ฐˆ ๊ฒƒ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์—๋Š” ๋” ์ž์„ธํžˆ ๋…ผ์˜ํ•ด์•ผ ํ•  ๋งค์šฐ ์ค‘์š”ํ•œ ๋‰˜์•™์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

์šฐ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆํ™”์™€ Docker๊ฐ€ ํ›Œ๋ฅญํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋„๊ตฌ๋‚˜ ๊ธฐ์ˆ ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ž๋™ํ™”์˜ ๋งฅ๋ฝ์—์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. UI ํ…Œ์ŠคํŠธ์˜ ๋งฅ๋ฝ์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์˜ ๋ช…๋ฐฑํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Selenium, ํŠนํžˆ Appium์„ ์„ค์น˜ํ•  ๋•Œ ์ˆ˜๋งŽ์€ ์ข…์†์„ฑ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €, ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ๋ฐ ๋“œ๋ผ์ด๋ฒ„ ๋ฒ„์ „ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
  • ๋ธŒ๋ผ์šฐ์ €/์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉฐ ์ด๋Š” ๋ณ‘๋ ฌ ์‹คํ–‰์— ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • 10๊ฐœ, 50๊ฐœ, 100๊ฐœ ๋˜๋Š” ์‹ฌ์ง€์–ด 1000๊ฐœ์˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ด€๋ฆฌ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Selenium์€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ž๋™ํ™” ๋„๊ตฌ์ด๊ณ  Docker๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆํ™” ๋„๊ตฌ์ด๋ฏ€๋กœ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ˆ„๊ตฐ๊ฐ€ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฒฐํ•ฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ๋” ์ž์„ธํžˆ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

๋„์ปค์˜ ์…€๋ ˆ๋Š„ ๊ทธ๋ฆฌ๋“œ

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

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

์›น์šฉ ์…€๋ ˆ๋…ธ์ด๋“œ

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

๊ทธ๋Ÿฌ๋‚˜ ์•„์‰ฝ๊ฒŒ๋„ ์…€๋ ˆ๋…ธ์ด๋“œ๋Š” ์•„์ง ๋งŒ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. '์ฃผ๋ฌธํ˜• ๋ธŒ๋ผ์šฐ์ €' ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ '์ฃผ๋ฌธํ˜• ๋ฆฌ์†Œ์Šค' ๊ธฐ๋Šฅ์€ ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Selenoid๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฌผ๋ฆฌ์  ํ•˜๋“œ์›จ์–ด๋‚˜ VM์— ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ฏธ๋ฆฌ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด 10๊ฐœ, 20๊ฐœ, ์‹ฌ์ง€์–ด 30๊ฐœ์˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 100, 500, 1000 ๋“ฑ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ํ•ญ์ƒ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์˜ ์„น์…˜ 5์™€ 6์—์„œ๋Š” ํ™•์žฅ์„ ํ†ตํ•ด ํšŒ์‚ฌ ๋น„์šฉ์„ ํฌ๊ฒŒ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์šฉ ์…€๋ ˆ๋…ธ์ด๋“œ

์›น ์ž๋™ํ™” ๋„๊ตฌ๋กœ์„œ Selenoid๊ฐ€ ์„ฑ๊ณตํ•œ ํ›„ ์‚ฌ๋žŒ๋“ค์€ Android์—์„œ๋„ ๋น„์Šทํ•œ ๊ฒƒ์„ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค - Selenoid๋Š” Android ์ง€์›๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋†’์€ ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ๋ณด๋ฉด ์ž‘๋™ ์›๋ฆฌ๋Š” ์›น ์ž๋™ํ™”์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ๋ธŒ๋ผ์šฐ์ € ์ปจํ…Œ์ด๋„ˆ ๋Œ€์‹  Selenoid๊ฐ€ Android ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ ํ˜„์žฌ Android ํ…Œ์ŠคํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ฌด๋ฃŒ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

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

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

์ด ๊ธฐ์‚ฌ์˜ ๋งฅ๋ฝ์—์„œ ์ธํ”„๋ผ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์›น ํ…Œ์ŠคํŠธ์šฉ Selenium ๊ทธ๋ฆฌ๋“œ์™€ Android ํ…Œ์ŠคํŠธ์šฉ Selenoid์ž…๋‹ˆ๋‹ค. GitHub ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” Selenoid๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. 

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ

์œ ์‚ฌํ•œ ๋„๊ตฌ

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

4.CI/CD

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

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

๋”ฐ๋ผ์„œ CI(์ง€์†์  ํ†ตํ•ฉ), CD(์ง€์†์  ์ „๋‹ฌ), CD(์ง€์†์  ๋ฐฐํฌ)๋ผ๋Š” 3๊ฐ€์ง€ ์šฉ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์•„๋ž˜์—์„œ๋Š” ์ด ์šฉ์–ด๋ฅผ ์˜์–ด๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.). ๊ฐ ์ˆ˜์ •์€ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๋ง์€ ๋Š์ž„์—†๋Š” (๊ณ„์†)์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋งฅ๋ฝ์—์„œ ์šฐ๋ฆฌ๋Š” ์ค‘๋‹จ์ด๋‚˜ ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ผ์–ด๋‚˜๋Š” ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋งฅ๋ฝ์—์„œ CI&CD์™€ CD๋ฅผ ์‚ดํŽด๋ณด์ž.

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

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

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

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

Gitlab CI/CD๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ , ํ”„๋กœ์ ํŠธ/๋นŒ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” API๊ฐ€ ํฌํ•จ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. GitLab Runner๋Š” ๋นŒ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ณ„๋„๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ API๋ฅผ ํ†ตํ•ด GitLab CI/CD์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด Gitlab ์ธ์Šคํ„ด์Šค์™€ Runner๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ

์œ ์‚ฌํ•œ ๋„๊ตฌ

5. ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

์ด๋ฒˆ ์„น์…˜์—์„œ๋Š” 'ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ'๋ผ๋Š” ๋Œ€์ค‘์ ์ธ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฐ€์ƒํ™” ๋ฐ ์ปจํ…Œ์ด๋„ˆํ™” ๊ธฐ์ˆ ์ด ์ œ๊ณตํ•˜๋Š” ์—„์ฒญ๋‚œ ์ด์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์‚ฌ๋Š” ๊ฐ’๋น„์‹ผ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ž…ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์ž„๋Œ€ํ•˜์ง€๋งŒ, ์ด ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์˜ ์–‘, ์—ฐ์ค‘๋ฌดํœด 24์‹œ๊ฐ„ ์‚ฌ์šฉํ• ์ง€, ์–ด๋–ค ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ• ์ง€ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋•Œ๋กœ๋Š” ๋น„ํ˜„์‹ค์ ์ž„). ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๋•์…˜์—๋Š” ์—ฐ์ค‘๋ฌดํœด 7์‹œ๊ฐ„ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๊ทผ๋ฌด ์‹œ๊ฐ„ ์™ธ์— ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์œ ์‚ฌํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๋˜ํ•œ ์ˆ˜ํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‚  ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์—…๋ฌด ์™ธ ์‹œ๊ฐ„์— ์‹คํ–‰ํ•  ๋ถ€ํ•˜/์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ข…๋‹จ ๊ฐ„ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์—๋Š” ํ™•์‹คํžˆ XNUMX/XNUMX ์„œ๋ฒ„ ๊ฐ€์šฉ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŠนํžˆ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” ํ•„์š”์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ์ง€๋ถˆ์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋งˆ์šฐ์Šค ํด๋ฆญ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์Šคํฌ๋ฆฝํŠธ ๋ช‡ ๊ฐœ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ”๋กœ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ์ด๊ฒƒ์ด ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ •์˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

โ€œํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋Š” ์ œXNUMX์ž ์ œ๊ณต์—…์ฒด๊ฐ€ ๊ณต์šฉ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํŒ… ์„œ๋น„์Šค๋กœ ์ •์˜๋˜๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋งคํ•˜๋ ค๋Š” ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ์ด๊ฑฐ๋‚˜ ์ฃผ๋ฌธํ˜•์œผ๋กœ ํŒ๋งค๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณ ๊ฐ์€ ์†Œ๋น„ํ•˜๋Š” CPU ์ฃผ๊ธฐ, ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ๋Œ€์—ญํญ์— ๋Œ€ํ•œ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•ด์„œ๋งŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

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

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

์—”๋“œํˆฌ์—”๋“œ UI ํ…Œ์ŠคํŠธ์—๋Š” ์–ด๋–ค ๊ตฌ์ฒด์ ์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ๋จธ์‹  ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ(๋‹ค์Œ ์„น์…˜์—์„œ Kubernetes์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค)์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋” ๋งŽ์€ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๊ทธ์— ๋Œ€ํ•ด ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ๋น„์šฉ๋„ ๋” ๋งŽ์•„์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธก๋ฉด์—์„œ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”์— ๋”ฐ๋ผ ๋งŽ์€ ์ˆ˜(100, 200, 1000...)์˜ ๋ธŒ๋ผ์šฐ์ €/์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ์ด๋Ÿฌํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํž˜. 

๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋Š” Amazon Web Services(AWS), Microsoft Azure, Google Cloud Platform(GCP)์ž…๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ• ๊ฐ€์ด๋“œ์—์„œ๋Š” GCP ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋™ํ™” ์ž‘์—…์— ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ธ‰์ž๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฝ์˜์ง„์€ ํšŒ์‚ฌ์˜ ์ „๋ฐ˜์ ์ธ ์ธํ”„๋ผ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์— ์ค‘์ ์„ ๋‘๋Š”๋ฐ, ์ด๋Š” ์ด ๋ฌธ์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ž๋™ํ™” ์—”์ง€๋‹ˆ์–ด์˜ ๊ฒฝ์šฐ Sauce Labs, BrowserStack, BitBar ๋“ฑ๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ ํŠน๋ณ„ํžˆ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž์˜ ์‚ฌ์šฉ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๋” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์šฐ๋ฆฌ๋„ ํ•ด๋ณด์ž! ์ œ ์ƒ๊ฐ์—๋Š” Sauce Labs๊ฐ€ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ํด๋ผ์šฐ๋“œ ํ…Œ์ŠคํŠธ ํŒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 

์ž๋™ํ™” ๋ชฉ์ ์„ ์œ„ํ•œ GCP์™€ Sauce Labs:

8๊ฐœ์˜ ์›น ํ…Œ์ŠคํŠธ์™€ 8๊ฐœ์˜ Android ํ…Œ์ŠคํŠธ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด GCP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Selenoid๋กœ 2๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹คํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 8๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ์—๋Š” ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ 8๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.  

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •
Chrome์œผ๋กœ ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. n1-ํ‘œ์ค€-1 ์ž๋™์ฐจ. ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡๊ฒ ์ง€๋งŒ n1-ํ‘œ์ค€-4 ํ•˜๋‚˜์˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ๋Œ€ํ•ด. ์‚ฌ์‹ค ๋” ์œ ์—ฐํ•˜๊ณ  ์ €๋ ดํ•œ ๋ฐฉ๋ฒ•์€ CPU/๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ํŠน์ • ์‚ฌ์šฉ์ž ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” Sauce Labs์™€ ๋น„๊ตํ•  ๋•Œ ์ด๊ฒƒ์ด ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Sauce Labs ์‚ฌ์šฉ ์š”๊ธˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

ํ•„์ˆ˜ ๋ฆฌ์†Œ์Šค
๋ชฌํŠธ๋ฆฌ
๊ทผ๋กœ ์‹œ๊ฐ„(์˜ค์ „ 8์‹œ - ์˜คํ›„ 8์‹œ)
๊ทผ๋กœ ์‹œ๊ฐ„+์„ ์ ํ˜•

์›น์šฉ GCP
n1-ํ‘œ์ค€-1 x 8 = n1-ํ‘œ์ค€-8
$194.18
23์ผ * 12์‹œ๊ฐ„ * 0.38 = $104.88 
23์ผ * 12์‹œ๊ฐ„ * 0.08 = $22.08

์›น์šฉ ์†Œ์Šค ์—ฐ๊ตฌ์†Œ
๊ฐ€์ƒ Cloud8 ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ
$1.559
-
-

์•ˆ๋“œ๋กœ์ด๋“œ์šฉ GCP
n1-ํ‘œ์ค€-4 x 8: n1-ํ‘œ์ค€-16
$776.72
23์ผ * 12์‹œ๊ฐ„ * 1.52 = $419.52 
23์ผ * 12์‹œ๊ฐ„ * 0.32 = $88.32

Android์šฉ ์†Œ์Šค ์—ฐ๊ตฌ์†Œ
Real Device Cloud 8 ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ
$1.999
-
-

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋น„์šฉ ์ฐจ์ด๋Š” ์—„์ฒญ๋‚ฉ๋‹ˆ๋‹ค. ํŠนํžˆ XNUMX์‹œ๊ฐ„์˜ ์ž‘์—… ๊ธฐ๊ฐ„ ๋™์•ˆ์—๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„ ์ ํ˜• ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋น„์šฉ์„ ๋”์šฑ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์„ ์ ํ˜• VM์€ ์ผ๋ฐ˜ ์ธ์Šคํ„ด์Šค๋ณด๋‹ค ํ›จ์”ฌ ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Compute Engine์€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์œ„ํ•ด ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ข…๋ฃŒ(์„ ์ )ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์ ํ˜• ์ธ์Šคํ„ด์Šค๋Š” Compute Engine ์šฉ๋Ÿ‰์˜ ์ดˆ๊ณผ์ด๋ฏ€๋กœ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ๊ฐ€์šฉ์„ฑ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

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

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

ํ•˜์ง€๋งŒ ๊ฒฐ์ฝ” 'ํด๋ผ์šฐ๋“œ ํ…Œ์ŠคํŠธ ํŒœ์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”'๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋งŽ์€ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ , ์ด๋Š” ๋‹จ์ˆœํ•œ ๊ฐ€์ƒ ๋จธ์‹ ์ด ์•„๋‹ˆ๋ผ ์›๊ฒฉ ์•ก์„ธ์Šค, ๋กœ๊ทธ, ์Šคํฌ๋ฆฐ์ƒท, ๋น„๋””์˜ค ๋…นํ™”, ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ฌผ๋ฆฌ์  ๋ชจ๋ฐ”์ผ ์žฅ์น˜ ๋“ฑ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๊ฐ–์ถ˜ ๋ณธ๊ฒฉ์ ์ธ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์ƒํ™ฉ์—์„œ ์ด๋Š” ํ•„์ˆ˜์ ์ธ ์„ธ๋ จ๋œ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ”Œ๋žซํผ์€ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๊ฐ€ Linux/Windows ์‹œ์Šคํ…œ๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” IOS ์ž๋™ํ™”์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ๋Š” iOS์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ƒํ™ฉ์„ ์‚ดํŽด๋ณด๊ณ  ์ž‘์—…๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ €๋ ดํ•˜๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ŠคํŠธ ํ”Œ๋žซํผ์ด ํ™•์‹คํžˆ ์ง€์ถœํ•œ ๋น„์šฉ๋งŒํผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ

์œ ์‚ฌํ•œ ๋„๊ตฌ:

6. ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

์ข‹์€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ๊ฐ€ ๊ฑฐ์˜ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค! ํ˜„์žฌ ์šฐ๋ฆฌ์˜ ์ž๋™ํ™” ์ธํ”„๋ผ๋Š” Docker ์ง€์› ๋„๊ตฌ์ธ Selenium ๊ทธ๋ฆฌ๋“œ ๋ฐ Selenoid๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitLab CI๋ฅผ ํ†ตํ•ด ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ์›น ๋ฐ Android ํ…Œ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ GCP๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์™€ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ฐ€์ƒ ๋จธ์‹ ์€ ์š”์ฒญ ์‹œ์—๋งŒ ์‹œ์ž‘ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์„ ๋•Œ๋Š” ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ธํ”„๋ผ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋Œ€๋‹ต์€ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค! ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(K8s)๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๋จผ์ € ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ํด๋Ÿฌ์Šคํ„ฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋†’์€ ์ˆ˜์ค€์—์„œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Selenium ๊ทธ๋ฆฌ๋“œ์™€ Selenoid์ž…๋‹ˆ๋‹ค. Docker์™€ K8์€ ์„œ๋กœ๋ฅผ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ์— ์‚ฌ์šฉ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. K8s๋Š” ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ž„๋ฌด๋Š” VM์„ ๋…ธ๋“œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์„œ๋ฒ„(ํด๋Ÿฌ์Šคํ„ฐ) ๋‚ด์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ, ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์„œ๋น„์Šค๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ์ด๋ฅผ ์„ ํƒํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ค‘๋‹จ ์—†๋Š” ์ž‘๋™์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ K8s์—๋Š” ํ™•์žฅ๊ณผ ๊ด€๋ จ๋œ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฏ€๋กœ ๋กœ๋“œ ๋ฐ ์„ค์ •๋œ ์ œํ•œ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ๋ฆฌ์†Œ์Šค ์–‘์„ ์ž๋™์œผ๋กœ ์–ป์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ Kubernetes๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ์‰ฌ์šด ์ž‘์—…์ด ์•„๋‹™๋‹ˆ๋‹ค. ์œ ๋ช…ํ•œ How-To ๊ฐ€์ด๋“œ์ธ "Kubernetes The Hard Way" ๋งํฌ๋ฅผ ๋‚จ๊ฒจ๋“œ๋ฆดํ…Œ๋‹ˆ ๊ด€์‹ฌ ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ์‹ค์Šตํ•ด ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹คํ–‰ํžˆ๋„ ๋Œ€์ฒด ๋ฐฉ๋ฒ•๊ณผ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ GCP์—์„œ Google Kubernetes Engine(GKE)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•™์Šต์„ ์‹œ์ž‘ํ•  ๋•Œ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ•จ๊ป˜ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๋Œ€์‹  ์ž‘์—…์— K8์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

K8s๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

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

ํ™•์žฅ ๊ธฐ๋Šฅ์€ ํ•ต์‹ฌ์ด๋ฉฐ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ ํ’€ ๋‚ด์˜ ๋…ธ๋“œ์™€ ๋…ธ๋“œ ๋‚ด์˜ ํฌ๋“œ ๋ชจ๋‘์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์™€ Pod ๋ชจ๋‘์— ์ ์šฉ๋˜๋Š” ํฌ๊ธฐ ์กฐ์ •์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์œ ํ˜•์€ ์ˆ˜ํ‰์ž…๋‹ˆ๋‹ค. ๋…ธ๋“œ/ํฌ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ ค ํฌ๊ธฐ ์กฐ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์ด ๋” ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‘ ๋ฒˆ์งธ ์œ ํ˜•์€ ์ˆ˜์ง์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ ์กฐ์ •์€ ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ/ํฌ๋“œ์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์œ„์˜ ์šฉ์–ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋„๊ตฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์…€๋ ˆ๋Š„ ๊ทธ๋ฆฌ๋“œ

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

์…€๋ ˆ๋…ธ์ด๋“œ:

K8s์˜ ์…€๋ ˆ๋…ธ์ด๋“œ ๋ฐฐ์น˜๋Š” ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ์‹ค๋ง์ž…๋‹ˆ๋‹ค. ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ๋Š” Pod ๋‚ด๋ถ€์— Selenoid ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Selenoid๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋™์ผํ•œ Pod ๋‚ด์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ™•์žฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ ๊ฒฐ๊ณผ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ Selenoid ์ž‘์—…์€ ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด๋ถ€ ์ž‘์—…๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์•ผ๊ธฐ์˜ ๋.

๋‹ฌ:

๊ฐœ๋ฐœ์ž๋“ค์€ Selenoid๋กœ ์ž‘์—…ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์•Œ๊ณ  Moon์ด๋ผ๋Š” ๋”์šฑ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ์›๋ž˜ Kubernetes์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฏ€๋กœ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ง€๊ธˆ์€ ๊ทธ๋ ‡๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ๋‹ค. ๋‹จ ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ K8s ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ฆ‰์‹œ ์ง€์›ํ•˜๋Š” Selenium ์„ธ๊ณ„์˜ ๋„๊ตฌ(๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋„๊ตฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ). ์ด๋Ÿฌํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” Moon์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

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

๋”ฐ๋ผ์„œ Moon์€ ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜์ด์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์€ ์„ธ์…˜ ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ๋กœ 0~4๊ฐœ์˜ ์„ธ์…˜๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ํŠน๋ณ„ํžˆ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 5๋ฒˆ์งธ ์„ธ์…˜๋ถ€ํ„ฐ๋Š” ๊ฐ ์„ธ์…˜๋‹น 500๋‹ฌ๋Ÿฌ๋ฅผ ์ง€๋ถˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์‚ฌ๋งˆ๋‹ค ์ƒํ™ฉ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ Moon์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ํ•„์š”์— ๋”ฐ๋ผ Selenium Grid๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VM์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 500๊ฐœ์˜ ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•ด 5๊ฐœ์˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. Moon์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ์•„๋ฌด๋ฆฌ ์ž์ฃผ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์›” 2500 x XNUMX = $XNUMX๋ฅผ ์ถ”๊ฐ€๋กœ ์ง€๋ถˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, Moon์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์กฐ์ง์— ๋งŽ์€ ํ”„๋กœ์ ํŠธ/ํŒ€์ด ์žˆ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๊ฑฐ๋Œ€ํ•œ ๊ณตํ†ต ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž‘์—…์— ์žˆ์–ด์„œ ์ด๋Š” ํ•„์ˆ˜์ ์ธ ์†”๋ฃจ์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ๋งˆ์ง€๋ง‰์— ๋งํฌ๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  ์ž‘์—… ๋งฅ๋ฝ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์นผ๋ฆฌ์Šคํ† : (์ฃผ๋ชฉ! ์ด ๋‚ด์šฉ์€ ์›๋ณธ ๊ธฐ์‚ฌ์—๋Š” ์—†์œผ๋ฉฐ ๋Ÿฌ์‹œ์•„์–ด ๋ฒˆ์—ญ๋ณธ์—๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)

์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด Selenium์€ ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ๋„๊ตฌ์ด๋ฉฐ IT ๋ถ„์•ผ๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ์—ญ ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ Callisto๋ผ๋Š” ์ƒˆ๋กœ์šด ์œ ๋ง ๋„๊ตฌ๊ฐ€ ์›น์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(์•ˆ๋…•ํ•˜์„ธ์š” Cypress ๋ฐ ๊ธฐํƒ€ Selenium ํ‚ฌ๋Ÿฌ๋“ค). K8s์™€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ ๋…ธ๋“œ ์ „์ฒด์— ๋ถ„์‚ฐ๋œ Pod์—์„œ Selenoid ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋™ ํฌ๊ธฐ ์กฐ์ •์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ์ฆ‰์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ™˜์ƒ์ ์ด์ง€๋งŒ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋ฏธ ์ด ๋„๊ตฌ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‹คํ—˜์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด๋ฉฐ, ์žฅ๊ฑฐ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์€ ํ›„ ํ–ฅํ›„ ๊ธฐ์‚ฌ์—์„œ ๊ฒ€ํ† ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋…๋ฆฝ์ ์ธ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•œ ๋งํฌ๋งŒ ๋‚จ๊ฒจ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.  

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ

์œ ์‚ฌํ•œ ๋„๊ตฌ

7. ์ฝ”๋“œํ˜• ์ธํ”„๋ผ(IaC)

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…

์ด์ œ ๋งˆ์ง€๋ง‰ ์„น์…˜์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๊ธฐ์ˆ  ๋ฐ ๊ด€๋ จ ์ž‘์—…์€ ์ž๋™ํ™” ์—”์ง€๋‹ˆ์–ด์˜ ์ฑ…์ž„์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๋งŽ์€ ์กฐ์ง์—์„œ ์ธํ”„๋ผ ๋ฌธ์ œ๋Š” DevOps ๋ถ€์„œ์˜ ํ†ต์ œํ•˜์— ์žˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ ํŒ€์€ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์†Œ์™€ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ง€์›๋˜์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ๊ด€์‹ฌ์„ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ์†”์งํžˆ ๋งํ•ด์„œ IaC(Infrastructure as Code) ์‹คํ–‰์€ ์•„์ง ๋งŽ์€ ๊ธฐ์—…์—์„œ ์ฑ„ํƒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ํ™•์‹คํžˆ ๋Œ€์ค‘์ ์ธ ํŠธ๋ Œ๋“œ๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ ์ด์™€ ๊ด€๋ จ๋œ ํ”„๋กœ์„ธ์Šค, ์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ๋„๊ตฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ตœ์†Œํ•œ ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๋™๊ธฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. GitlabCI์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ตœ์†Œํ•œ Gitlab Runner๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ์ด๋ฏธ ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €/์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด VM ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์˜ˆ์•ฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ํ…Œ์ŠคํŠธ ์™ธ์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ž๋™ ์ผ์ •, ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ, ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฐœ๋ฐœ, ์ค€๋น„, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋ ค๋ฉด ์ƒ๋‹นํ•œ ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๋ฌธ์ œ๋Š” ์ด๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋ ฅ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด GCP ์ปจํ…์ŠคํŠธ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ UI ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์•ˆ์€ API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ํ•ญ๋ชฉ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ gcloud ๋ช…๋ น์ค„ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ๋‹ค์–‘ํ•œ ์—”ํ„ฐํ‹ฐ์™€ ์ธํ”„๋ผ ์š”์†Œ๋กœ ์ธํ•ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ฑฐ๋‚˜ ์‹ฌ์ง€์–ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ˆ˜๋™ ์ž‘์—…์€ ์ œ์–ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ์ „์— ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ์ œ์ถœํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ , ์‚ฌ๊ณ ๋กœ ์ด์–ด์ง„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ ์†ํ•˜๊ฒŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—”์ง€๋‹ˆ์–ด๋“ค์€ ์ž๋™ bash/shell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑํ–ˆ๋Š”๋ฐ, ์ด๋Š” ์ ˆ์ฐจ์  ์Šคํƒ€์ผ์—์„œ ๋น ๋ฅด๊ฒŒ ์ฝ๊ณ , ์ดํ•ดํ•˜๊ณ , ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฐฉ๋ฒ•๋ณด๋‹ค ํฌ๊ฒŒ ๋‚˜์•„์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์™€ How-to ๊ฐ€์ด๋“œ์—์„œ๋Š” IaC ์‹ค์Šต๊ณผ ๊ด€๋ จ๋œ ๋‘ ๊ฐ€์ง€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Terraform๊ณผ Ansible์ด ๊ทธ๊ฒƒ์ด๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ๊ธฐ๋Šฅ์ด ๋น„์Šทํ•˜๊ณ  ์ƒํ˜ธ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์‹ค ์ฒ˜์Œ์—๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ž‘์—…์ด ์ฃผ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋„๊ตฌ๊ฐ€ ์„œ๋กœ๋ฅผ ๋ณด์™„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ HashiCorp์™€ RedHat์„ ๋Œ€ํ‘œํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ๊ณต๋™ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋…์  ์ฐจ์ด์ ์€ Terraform์ด ์„œ๋ฒ„ ์ž์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Ansible์€ ์ด๋Ÿฌํ•œ ์„œ๋ฒ„์— ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜, ๊ตฌ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

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

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

์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

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

๋‹ค์Œ์€ ์ด์ „์— ๋…ผ์˜ํ•œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋ฐ ๋„๊ตฌ์˜ ๋งฅ๋ฝ์—์„œ Terraform ๋ฐ Ansible์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

1. Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ VM ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ์— ํ•„์š”ํ•œ ํŠน์„ฑ๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

2. Ansible์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ๋„๊ตฌ(docker, Selenoid, Selenium Grid)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ธŒ๋ผ์šฐ์ €/์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

3. Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ GitLab Runner๊ฐ€ ์‹คํ–‰๋  VM์˜ ํŠน์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

4. Ansible์„ ์‚ฌ์šฉํ•˜์—ฌ GitLab Runner ๋ฐ ํ•„์š”ํ•œ ๊ด€๋ จ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„ค์ • ๋ฐ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ธํ”„๋ผ ํ˜„ํ™ฉ ์˜ˆ์‹œ

DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

ํƒ์ƒ‰ํ•  ๋งํฌ:

์œ ์‚ฌํ•œ ๋„๊ตฌ

์š”์•ฝํ•ด๋ณด์ž!

๋‹จ๊ณ„
Technology
๋„๊ตฌ
์ž๋™ํ™” ์ธํ”„๋ผ์˜ ๊ฐ€์น˜

1
๋กœ์ปฌ ๋Ÿฌ๋‹
Node.js, ์…€๋ ˆ๋Š„, Appium

  • ์›น๊ณผ ๋ชจ๋ฐ”์ผ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ
  • ๋‹ค์–‘ํ•œ ์–ธ์–ด ๋ฐ ํ”Œ๋žซํผ ์ง€์›(Node.js ํฌํ•จ)

2
๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ 
ํž˜๋‚ด

  • ๊ฐœ๋ฐœ ์ฝ”๋“œ์™€ ์œ ์‚ฌํ•œ ์ด์ 

3
์ปจํ…Œ์ด๋„ˆํ™”
Docker, Selenium ๊ทธ๋ฆฌ๋“œ, Selenoid(์›น, Android)

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

4
CI/CD
๊นƒ๋žฉ CI

  • ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ผ๋ถ€๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ
  • ํšŒ์‚ฌ/ํŒ€ ์ „์ฒด์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ

5
ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ
Google Cloud Platform

  • ์ฃผ๋ฌธํ˜• ๋ฆฌ์†Œ์Šค(ํ•„์š”ํ•  ๋•Œ๋งŒ ๋น„์šฉ ์ง€๋ถˆ)
  • ๊ด€๋ฆฌ ๋ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ์šฉ์ดํ•จ
  • ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ ๋ฐ ์ œ์–ด

6
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
Kubernetes
ํฌ๋“œ ๋‚ด๋ถ€์— ๋ธŒ๋ผ์šฐ์ €/์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋งฅ๋ฝ์—์„œ:

  • ์Šค์ผ€์ผ๋ง/์ž๋™ ์Šค์ผ€์ผ๋ง
  • ์ž๊ฐ€ ์น˜์œ 
  • ์ค‘๋‹จ ์—†๋Š” ์—…๋ฐ์ดํŠธ ๋ฐ ๋กค๋ฐฑ

7
์ฝ”๋“œํ˜• ์ธํ”„๋ผ(IaC)
ํ…Œ๋ผํผ, ์•ค์„œ๋ธ”

  • ๊ฐœ๋ฐœ ์ธํ”„๋ผ์™€ ์œ ์‚ฌํ•œ ์ด์ 
  • ์ฝ”๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ๋ชจ๋“  ์ด์ 
  • ๋ณ€๊ฒฝ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•จ
  • ์™„์ „ ์ž๋™ํ™”

๋งˆ์ธ๋“œ๋งต ๋‹ค์ด์–ด๊ทธ๋žจ: ์ธํ”„๋ผ์˜ ์ง„ํ™”

1๋‹จ๊ณ„: ๋กœ์ปฌ
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

2๋‹จ๊ณ„: VCS
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

3๋‹จ๊ณ„: ์ปจํ…Œ์ด๋„ˆํ™” 
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

4๋‹จ๊ณ„: CI/CD 
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

5๋‹จ๊ณ„: ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

6๋‹จ๊ณ„:์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

7๋‹จ๊ณ„: IaC
DevOps ๋„๊ตฌ๋Š” DevOps๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •

๋‹ค์Œ์€ ๋ญ์ง€?

๊ทธ๋ž˜์„œ, ์ด๊ฒƒ์œผ๋กœ ๊ธฐ์‚ฌ๊ฐ€ ๋๋‚ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๋ก ์ ์œผ๋กœ ๋‚˜๋Š” ๋‹น์‹ ๊ณผ ๋ช‡ ๊ฐ€์ง€ ํ•ฉ์˜๋ฅผ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์ธก๋ฉด์—์„œ
์„œ๋‘์—์„œ ๋งํ–ˆ๋“ฏ์ด, ์ด ๊ธ€์ด ์‹ค๋ฌด์— ํ™œ์šฉ๋˜๊ณ , ์–ป์€ ์ง€์‹์„ ์‹ค์ œ ์—…๋ฌด์— ์ ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด์š” ์‹ค๋ฌด ๊ฐ€์ด๋“œ ๋งํฌ.

ํ•˜์ง€๋งŒ ๊ทธ ํ›„์—๋„ ๋ฉˆ์ถ”์ง€ ๋ง๊ณ  ์—ฐ์Šตํ•˜๊ณ  ๊ด€๋ จ ๋งํฌ์™€ ์ฑ…์„ ๊ณต๋ถ€ํ•˜๊ณ  ํšŒ์‚ฌ์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ์ฐพ์•„ ์ฐธ์—ฌํ•˜์„ธ์š”. ํ–‰์šด์„ ๋นŒ์–ด์š”!

๋‚ด ์ชฝ์—์„œ

์ œ๋ชฉ์„ ๋ณด๋ฉด ์ด๊ฒƒ์ด ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์— ๋ถˆ๊ณผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฝค ํฐ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ๊ธฐ์„œ๋Š” ์—ฌ์ „ํžˆ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์—์„œ๋Š” IOS์˜ ๋งฅ๋ฝ์—์„œ ์ž๋™ํ™” ์ธํ”„๋ผ๋ฅผ ์‚ดํŽด๋ณผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. macOS ์‹œ์Šคํ…œ์—์„œ๋งŒ iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ Apple์˜ ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋‹น์‚ฌ์˜ ์†”๋ฃจ์…˜ ๋ฒ”์œ„๊ฐ€ ์ข์•„์กŒ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ๋Œ€์•ˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ์†”๋ฃจ์…˜๊ณผ ์ตœ์‹  ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ จ๋œ ๊ฝค ํฐ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 3๋ถ€์—์„œ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์™€ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ ๋ฐ ์ง€ํ‘œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์ถœ์ฒ˜ : habr.com

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