์‚ฐ์—…์šฉ ๊ธฐ๊ณ„ ํ•™์Šต: 10๊ฐ€์ง€ ์„ค๊ณ„ ์›์น™

์‚ฐ์—…์šฉ ๊ธฐ๊ณ„ ํ•™์Šต: 10๊ฐ€์ง€ ์„ค๊ณ„ ์›์น™

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

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

๋ณธ ๊ธ€์—์„œ๋Š” 10-Factor App ๋ฐฉ๋ฒ•๋ก ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฐ์—…์šฉ ๋จธ์‹ ๋Ÿฌ๋‹์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/์„œ๋น„์Šค์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” 12๊ฐ€์ง€ ์›์น™์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Heroku ํŒ€์ด ์ œ์•ˆํ•œ. ๋‚˜์˜ ๊ณ„ํš์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž์™€ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ด ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ธ์‹์„ ๋†’์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ์‚ฐ์—…์šฉ ๊ธฐ๊ณ„ ํ•™์Šต์— ๊ด€ํ•œ ์ผ๋ จ์˜ ๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ํ”„๋กค๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์‹ค์ œ๋กœ ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ํ”„๋กœ๋•์…˜์— ์ถœ์‹œํ•˜๊ณ  ์ด๋ฅผ ์œ„ํ•œ API๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์‹œ์Šคํ…œ์— ML์ด ๋‚ด์žฅ๋œ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์™€ ํšŒ์‚ฌ์˜ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์›์น™ 1: ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๊ธฐ๋ฐ˜

์ฒซ ๋‹จ๊ณ„์˜ ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ฒŒ์œผ๋ฆ„ ๋•Œ๋ฌธ์—(๋˜๋Š” ์–ด๋–ค ์ด์œ ๋กœ๋“ ) Git์„ ์žŠ์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ๋‹จ์–ด๋ฅผ ์™„์ „ํžˆ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜, ์ฆ‰ ๋“œ๋ผ์ด๋ธŒ์—์„œ ์„œ๋กœ์—๊ฒŒ ํŒŒ์ผ์„ ๋˜์ง€๊ฑฐ๋‚˜, ํ…์ŠคํŠธ๋งŒ ๋˜์ง€๊ฑฐ๋‚˜, ๋น„๋‘˜๊ธฐ๋กœ ๋ณด๋‚ด๊ฑฐ๋‚˜, ์ž‘์—… ํ๋ฆ„์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๊ฐ๊ฐ์„ ์ž์‹ ์˜ ๋ธŒ๋žœ์น˜์— ์ปค๋ฐ‹ํ•œ ๋‹ค์Œ ์ฃผ์ธ.

์ด ์›์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ๋งŽ์€ ๋ฐฐํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Git์€ ํ”„๋กœ๋•์…˜๊ณผ ์—ฐ๊ตฌ ๊ฐœ๋ฐœ(R&D) ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋‹ค์ง€ ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, R&D ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋ฐ‹์„ ๋‚จ๊ฒจ๋‘๊ณ  ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์„ ์„ ํƒํ•˜๊ณ  ์ถ”๊ฐ€ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ ํ”„๋กœ์ ํŠธ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์˜ˆ๋ฅผ ๋“ค์–ด Gemfury์— ๋ฐฐ์น˜ํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์™€์„œ 1000๋ฒˆ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์›์น™ 2: ์ข…์†์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ ์–ธํ•˜๊ณ  ๊ฒฉ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ํ”„๋กœ์ ํŠธ์—๋Š” ์–ด๋”˜๊ฐ€์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋‹ค์–‘ํ•œ ๋ชฉ์ ์„ ์œ„ํ•œ ๋‹ค๋ฅธ ์–ธ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์‹œ์Šคํ…œ ๋„๊ตฌ ๋“ฑ ๊ท€ํ•˜์˜ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ข…์†์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜๋ฉฐ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋„๊ตฌ ๋ฐ ํ•ด๋‹น ๋ฒ„์ „์„ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด Python์—์„œ๋Š” Pipfile ๋˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ.txt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. A ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ: realpython.com/pipenv-guide)
  • ๊ฐœ๋ฐœ ์ค‘์— ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ํŠน๋ณ„ํžˆ ๊ฒฉ๋ฆฌํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด Tensorflow์™€ ๊ฐ™์ด ์ง€์†์ ์œผ๋กœ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์œผ์‹ญ๋‹ˆ๊นŒ?

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

๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํŠน์ • OS์— ์„ค์น˜๋  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ๋„๊ตฌ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ์ข…์†์„ฑ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ๋„ ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋„๊ตฌ ๋ฒ„์ „(๋ฐ ๊ฐ€์šฉ์„ฑ)์ด ํŠน์ • OS์˜ ์‹œ์Šคํ…œ ๋„๊ตฌ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ปฌ์ด ๊ฑฐ์˜ ๋ชจ๋“  ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋”๋ผ๋„ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ์ปฌ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์›๋ž˜ ํ•„์š”ํ–ˆ๋˜ ๋ฒ„์ „์ด ์•„๋‹ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ข…์†์„ฑ์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์š”๊ตฌ์‚ฌํ•ญ.txt๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# Model Building Requirements
numpy>=1.18.1,<1.19.0
pandas>=0.25.3,<0.26.0
scikit-learn>=0.22.1,<0.23.0
joblib>=0.14.1,<0.15.0

# testing requirements
pytest>=5.3.2,<6.0.0

# packaging
setuptools>=41.4.0,<42.0.0
wheel>=0.33.6,<0.34.0

# fetching datasets
kaggle>=1.5.6,<1.6.0

์›์น™ 3: ๊ตฌ์„ฑ

๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‹ค์ˆ˜๋กœ AWS์˜ ์•”ํ˜ธ ๋ฐ ๊ธฐํƒ€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub์— ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œํ•˜๊ณ  ๋‹ค์Œ๋‚  ๊นจ์–ด๋‚˜์„œ 6000๋‹ฌ๋Ÿฌ ๋˜๋Š” ์‹ฌ์ง€์–ด 50000๋‹ฌ๋Ÿฌ์˜ ๋นš์„ ์กŒ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฐ์—…์šฉ ๊ธฐ๊ณ„ ํ•™์Šต: 10๊ฐ€์ง€ ์„ค๊ณ„ ์›์น™

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

์ด์— ๋Œ€ํ•œ ๋Œ€์•ˆ์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๊ตฌ์„ฑ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

์ผ๋ฐ˜์ ์œผ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์˜ˆ:

  • ๋„๋ฉ”์ธ ์ด๋ฆ„
  • API URL/URI
  • ๊ณต๊ฐœ ํ‚ค์™€ ๊ฐœ์ธ ํ‚ค
  • ์—ฐ๋ฝ์ฒ˜(๋ฉ”์ผ, ์ „ํ™” ๋“ฑ)

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ตฌ์„ฑ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ฝ”๋“œ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„, ๋…ธ๋ ฅ, ๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Kaggle API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜์—ฌ ์‹คํ–‰ ์‹œ ๋ชจ๋ธ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ), KAGGLE_USERNAME ๋ฐ KAGGLE_KEY์™€ ๊ฐ™์€ Kaggle์˜ ๊ฐœ์ธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์›์น™ 4: ์ œXNUMX์ž ์„œ๋น„์Šค

์—ฌ๊ธฐ์„œ์˜ ์•„์ด๋””์–ด๋Š” ์ฝ”๋“œ ์ธก๋ฉด์—์„œ ๋กœ์ปฌ ๋ฆฌ์†Œ์Šค์™€ ํƒ€์‚ฌ ๋ฆฌ์†Œ์Šค ๊ฐ„์— ์ฐจ์ด๊ฐ€ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ์ปฌ MySQL๊ณผ ํƒ€์‚ฌ MySQL์„ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Google Maps๋‚˜ Twitter API์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ API๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํƒ€์‚ฌ ์„œ๋น„์Šค๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์œ„ ๋‹จ๋ฝ์—์„œ ์„ค๋ช…ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ตฌ์„ฑ์˜ ํ‚ค๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์˜ˆ๋ฅผ ๋“ค์–ด ๋งค๋ฒˆ ์ฝ”๋“œ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋Œ€์‹  pathlib ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  config.py์—์„œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CircleCI), ํ”„๋กœ๊ทธ๋žจ์€ ์ƒˆ ์„œ๋น„์Šค์˜ ์ƒˆ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์›์น™ 5. ๋นŒ๋“œ, ๋ฆด๋ฆฌ์Šค, ๋Ÿฐํƒ€์ž„

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

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

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

๋ฆด๋ฆฌ์Šค ์ž‘์—…์˜ ๊ฒฝ์šฐ .yml ํŒŒ์ผ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CircleCI์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ์ž์ฒด๋ฅผ ์ง€์›ํ•˜๋Š” config.yml์ž…๋‹ˆ๋‹ค. Wheely๋Š” ํ”„๋กœ์ ํŠธ์šฉ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋Šฅ์ˆ™ํ•ฉ๋‹ˆ๋‹ค.

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

์›์น™ 6. ๋ชจ๋ธ์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰

๋˜ํ•œ ํ”„๋กœ์„ธ์Šค์—๋Š” ๊ณต์œ  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค๋Š” ๋ณ„๋„๋กœ ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋Š” ํ•„์š”์— ๋”ฐ๋ผ MySQL ๋“ฑ์˜ ํƒ€์‚ฌ ์„œ๋น„์Šค์— ๋ณ„๋„๋กœ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

๋ชจ๋ธ์„ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค์™€ ํ•ด๋‹น ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๋Š” .yml ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์›์น™ 7: ์žฌํ™œ์šฉ์„ฑ

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

์ฆ‰, ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์›์น™ 8: ์ง€์†์ ์ธ ๋ฐฐํฌ/ํ†ตํ•ฉ

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

๋”ฐ๋ผ์„œ ์ด ์›์น™์€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๊ณผ ์ตœ๋Œ€ํ•œ ์œ ์‚ฌํ•ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค์Œ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

  1. ์ถœ์‹œ ์‹œ๊ฐ„์„ ์ˆ˜์‹ญ ๋ฐฐ ๋‹จ์ถ•
  2. ์ฝ”๋“œ ๋น„ํ˜ธํ™˜์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
  3. ๊ฐœ๋ฐœ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ด์ œ ํ•˜๋‚˜์˜ ํŒ€์ด ๋˜๋ฏ€๋กœ ์ง์›์˜ ์—…๋ฌด๋Ÿ‰๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋กœ๋Š” CircleCI, Travis CI, GitLab CI ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜์„ธ์š”!!!

์›์น™ 9. ๋กœ๊ทธ

๋กœ๊ทธ(๋˜๋Š” "๋กœ๊ทธ")๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ) ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๊ธฐ๋ก๋˜๋Š” ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ: "2020-02-02 - ์‹œ์Šคํ…œ ์ˆ˜์ค€ - ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„." ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ณด๊ณ  ๊ทธ๊ฒƒ์ด ๊ฐœ๋ฐœ์ž ์ž์‹ ์˜ ์˜๋„๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

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

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

์›์น™ 10. ํ…Œ์ŠคํŠธ!

์‚ฐ์—…์šฉ ๊ธฐ๊ณ„ ํ•™์Šต์˜ ๊ฒฝ์šฐ ์ด ๋‹จ๊ณ„๋Š” ๋ชจ๋ธ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์›ํ•˜๋Š” ๊ฒƒ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋Š” pytest๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํšŒ๊ท€/๋ถ„๋ฅ˜ ์ž‘์—…์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ž‘์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ์ง€์†์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋„๋ก ๋™์ผํ•œ ์‹œ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.

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

๋˜ํ•œ ์›ํ•˜์‹œ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋Œ“๊ธ€์— ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฉ‹์ง„ ์›์น™์„ ํ™œ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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