์ฐ์ ์ฉ ๊ธฐ๊ณ ํ์ต: 10๊ฐ์ง ์ค๊ณ ์์น
์์ฆ์๋ SpaceX ๋ก์ผ์ ์ ์ดํ๋ โโ์ํํธ์จ์ด๋ถํฐ ์ค๋งํธํฐ์ ํตํด ์๋ฐฉ์ ์๋ ์ฃผ์ ์์ ์ํธ ์์ฉํ๋ ์ํํธ์จ์ด์ ์ด๋ฅด๊ธฐ๊น์ง ๋๋ผ์ด ์ผ์ ๋ง๋ค ์ ์๋ ์๋ก์ด ์๋น์ค, ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๊ธฐํ ์ค์ํ ํ๋ก๊ทธ๋จ์ด ๋งค์ผ ์์ฑ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋๋ก ๋ชจ๋ ์ด๋ณด ํ๋ก๊ทธ๋๋จธ๋ ์ด์ ์ ์ธ ์คํํธ์ ์ด๋ ์ผ๋ฐ ํ ์คํ ๋๋ ๋ฐ์ดํฐ ๊ณผํ์์ด๋ ๊ด๊ณ์์ด ์ถ์ ํฌ๊ฒ ๋จ์ํํ๋ ์ํํธ์จ์ด ํ๋ก๊ทธ๋๋ฐ ๋ฐ ์ ์์ ๋ํ ํน์ ๊ท์น์ด ์๋ค๋ ๊ฒ์ ์กฐ๋ง๊ฐ ๊นจ๋ซ๊ฒ ๋ฉ๋๋ค.
๋ณธ ๊ธ์์๋ 10-Factor App ๋ฐฉ๋ฒ๋ก ์ ๊ธฐ๋ฐ์ผ๋ก ์ฐ์
์ฉ ๋จธ์ ๋ฌ๋์ ์ ํ๋ฆฌ์ผ์ด์
/์๋น์ค์ ์ฝ๊ฒ ํตํฉํ ์ ์๋๋ก ํ๋ก๊ทธ๋๋ฐํ๋ 12๊ฐ์ง ์์น์ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ด ๊ธฐ์ฌ๋ ์ฐ์
์ฉ ๊ธฐ๊ณ ํ์ต์ ๊ดํ ์ผ๋ จ์ ๊ธฐ์ฌ์ ๋ํ ํ๋กค๋ก๊ทธ์
๋๋ค. ์ฌ๊ธฐ์๋ ์ค์ ๋ก ๋ชจ๋ธ์ ๋ง๋ค์ด ํ๋ก๋์
์ ์ถ์ํ๊ณ ์ด๋ฅผ ์ํ 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๋ฌ๋ฌ์ ๋น์ ์ก๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ค์์ต๋๋ค.
๋ฌผ๋ก ์ด๋ฌํ ๊ฒฝ์ฐ๋ ๊ทน๋จ์ ์ด์ง๋ง ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๊ฒฉ ์ฆ๋ช
์ด๋ ๊ตฌ์ฑ์ ํ์ํ ๊ธฐํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ด๋ถ์ ์ ์ฅํ๋ฉด ์ค์๋ฅผ ํ๋ ๊ฒ์ด๋ฉฐ, ๊ทธ ์ด์ ๋ ์ค๋ช
ํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ๋ํ ๋์์ ํ๊ฒฝ ๋ณ์์ ๊ตฌ์ฑ์ ์ ์ฅํ๋ ๊ฒ์
๋๋ค. ํ๊ฒฝ ๋ณ์์ ๋ํด ์์ธํ ์ฝ์ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ๊ฒฝ ๋ณ์์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ์:
- ๋๋ฉ์ธ ์ด๋ฆ
- 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๋จ๊ณ๋ก ๋๋์ด์ผ ํฉ๋๋ค.
- ๋ฌด๋ ์กฐ๋ฆฝ. ๊ฐ๋ณ ๋ฆฌ์์ค๊ฐ ํฌํจ๋ ๋ฒ ์ด ์ฝ๋๋ฅผ ํ์ํ ๋ชจ๋ ์ฝ๋์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์์ ํจํค์ง๋ก ๋ณํํฉ๋๋ค. ์ด ํจํค์ง๋ฅผ ์ด์ ๋ธ๋ฆฌ๋ผ๊ณ ํฉ๋๋ค.
- ๋ฌด๋ ์๋ฐฉํ๋ค โ ์ฌ๊ธฐ์ ๊ตฌ์ฑ์ ์ด์ ๋ธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ๋ฆด๋ฆฌ์คํ ์ ์์ต๋๋ค. ์ด์ ์์ ํ ์ถ์ ์ค๋น๊ฐ ์๋ฃ๋ ๋ฆด๋ฆฌ์ค์ ๋๋ค.
- ๋ค์์ ๋ฌด๋ ์ฑ์ทจ. ์ฌ๊ธฐ์๋ ๋ฆด๋ฆฌ์ค์์ ํ์ํ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆด๋ฆฌ์คํฉ๋๋ค.
๋ชจ๋ธ ๋๋ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ์ ๋ฒ์ ์ ์ถ์ํ๊ธฐ ์ํ ์ด๋ฌํ ์์คํ ์ ์ฌ์ฉํ๋ฉด ๊ด๋ฆฌ์์ ๊ฐ๋ฐ์ ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ ์ ์๊ณ , ๋ฒ์ ์ ์ถ์ ํ ์ ์์ผ๋ฉฐ, ์์น ์๋ ํ๋ก๊ทธ๋จ ์ค์ง๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ฆด๋ฆฌ์ค ์์ ์ ๊ฒฝ์ฐ .yml ํ์ผ์์ ์ง์ ์คํํ๊ธฐ ์ํ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ์ ์๋ ๋ค์ํ ์๋น์ค๊ฐ ์์ฑ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด CircleCI์์๋ ํ๋ก์ธ์ค ์์ฒด๋ฅผ ์ง์ํ๋ config.yml์ ๋๋ค. Wheely๋ ํ๋ก์ ํธ์ฉ ํจํค์ง๋ฅผ ๋ง๋๋ ๋ฐ ๋ฅ์ํฉ๋๋ค.
๋ค์ํ ๋ฒ์ ์ ๊ธฐ๊ณ ํ์ต ๋ชจ๋ธ๋ก ํจํค์ง๋ฅผ ์์ฑํ ๋ค์ ์ด๋ฅผ ํจํค์งํ๊ณ ํ์ํ ํจํค์ง์ ํด๋น ๋ฒ์ ์ ์ฐธ์กฐํ์ฌ ๊ฑฐ๊ธฐ์์ ์์ฑํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋ชจ๋ธ์ ๋ํ API๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ํจํค์ง๋ ์๋ฅผ ๋ค์ด Gemfury์์ ํธ์คํ ๋ ์ ์์ต๋๋ค.
์์น 6. ๋ชจ๋ธ์ ํ๋ ์ด์์ ํ๋ก์ธ์ค๋ก ์คํ
๋ํ ํ๋ก์ธ์ค์๋ ๊ณต์ ๋ฐ์ดํฐ๊ฐ ์์ด์๋ ์ ๋ฉ๋๋ค. ์ฆ, ํ๋ก์ธ์ค๋ ๋ณ๋๋ก ์กด์ฌํด์ผ ํ๋ฉฐ, ๋ชจ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ ํ์์ ๋ฐ๋ผ MySQL ๋ฑ์ ํ์ฌ ์๋น์ค์ ๋ณ๋๋ก ์กด์ฌํด์ผ ํฉ๋๋ค.
์ฆ, ํ๋ก์ธ์ค ํ์ผ ์์คํ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ํ์คํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ๋ฒ ๊ตฌ์ฑ ๋ฆด๋ฆฌ์ค/๋ณ๊ฒฝ ๋๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์์คํ ์ ์ก ์ค์ ์ด ๋ฐ์ดํฐ๊ฐ ์ง์์ง ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ธ๊ฐ ์์ต๋๋ค. ๊ธฐ๊ณ ํ์ต ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ฑฐ๋ ๋ฒ์ ์ด ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ์ ๋ฒ์ ์ ์์ํ ๋๋ง๋ค ๋ค์ ์ค์นํ์ง ์๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ๊ณ์์ ๋ชจ๋ธ์ ์ถ์ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋จ์ถ๋ฉ๋๋ค.
๋ชจ๋ธ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ก ์คํํ๋ ค๋ฉด ํ์ํ ํ๋ก์ธ์ค์ ํด๋น ์์๋ฅผ ์ง์ ํ๋ .yml ํ์ผ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
์์น 7: ์ฌํ์ฉ์ฑ
๋ชจ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ ์์ ๋ฐ ์ค์ง๊ฐ ์ฌ์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ํตํด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ, ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๊ฒ ๋ฐฐํฌํ๊ณ , ๋น ๋ฅด๊ณ ์ ์ฐํ๊ฒ ํ์ฅํ๊ณ , ์์ ๋ฒ์ ์ ์ค๋จ ๊ฐ๋ฅ์ฑ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ฆ, ๋ชจ๋ธ์ ์ฌ์ฉํ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
- ์์ ์๊ฐ์ ์ต์ํํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ์์ ์๊ฐ(์์ ๋ช ๋ น์ด ์คํ๋ ์๊ฐ๋ถํฐ ํ๋ก์ธ์ค๊ฐ ์๋๋๋ ์๊ฐ๊น์ง)์ด ๋ช ์ด๋ฅผ ๋์ง ์์์ผ ํฉ๋๋ค. ์์์ ์ค๋ช ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ฑ์ ์์ ์๊ฐ์ ์ค์ด๋ ๊ธฐ์ ์ค ํ๋์ ๋๋ค.
- ์ฌ๋ฐ๋ฅด๊ฒ ์ข ๋ฃํ์ญ์์ค. ์ฆ, ์๋น์ค ํฌํธ์์ ์์ ๋๊ธฐ๊ฐ ์ค์ ๋ก ์ผ์ ์ค์ง๋๊ณ ์ด ํฌํธ์ ์ ์ถ๋ ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋์ง ์์ต๋๋ค. ์ฌ๊ธฐ์์๋ DevOps ์์ง๋์ด์ ์ํํ ์์ฌ์ํต์ ์ค์ ํ๊ฑฐ๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ง์ ์ดํดํด์ผ ํฉ๋๋ค(๋ฌผ๋ก ํ์๊ฐ ๋ฐ๋์งํ์ง๋ง ๋ชจ๋ ํ๋ก์ ํธ์์ ์์ฌ์ํต์ ํญ์ ์ ์ง๋์ด์ผ ํฉ๋๋ค!)
์์น 8: ์ง์์ ์ธ ๋ฐฐํฌ/ํตํฉ
๋ง์ ํ์ฌ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๊ณผ ๋ฐฐํฌ ํ์ ๋ถ๋ฆฌํ์ฌ ์ต์ข ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ก ์ธํด ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ๊ฐ์ ์งํ ์๋๊ฐ ํฌ๊ฒ ๋๋ ค์ง ์ ์์ต๋๋ค. ์ด๋ ๋ํ ๋๋ต์ ์ผ๋ก ๋งํ๋ฉด ๊ฐ๋ฐ๊ณผ ํตํฉ์ด ๊ฒฐํฉ๋ DevOps ๋ฌธํ๋ฅผ ๋ง์นฉ๋๋ค.
๋ฐ๋ผ์ ์ด ์์น์ ๊ฐ๋ฐ ํ๊ฒฝ์ด ํ๋ก๋์ ํ๊ฒฝ๊ณผ ์ต๋ํ ์ ์ฌํด์ผ ํจ์ ๋ํ๋ ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ค์์ด ํ์ฉ๋ฉ๋๋ค.
- ์ถ์ ์๊ฐ์ ์์ญ ๋ฐฐ ๋จ์ถ
- ์ฝ๋ ๋นํธํ์ผ๋ก ์ธํ ์ค๋ฅ ์๋ฅผ ์ค์ ๋๋ค.
- ๊ฐ๋ฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ์ฌ๋๋ค์ด ์ด์ ํ๋์ ํ์ด ๋๋ฏ๋ก ์ง์์ ์ ๋ฌด๋๋ ์ค์ด๋ญ๋๋ค.
์ด๋ฅผ ์์ ํ ์ ์๋ ๋๊ตฌ๋ก๋ CircleCI, Travis CI, GitLab CI ๋ฑ์ด ์์ต๋๋ค.
์ ์ํ๊ฒ ๋ชจ๋ธ์ ์ถ๊ฐํ๊ณ , ์ ๋ฐ์ดํธํ๊ณ , ์ฆ์ ์คํํ ์ ์์ผ๋ฉฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์์ ๋ฒ์ ์ผ๋ก ๋์๊ฐ ์ต์ข ์ฌ์ฉ์๊ฐ ๋์น์ฑ์ง ๋ชปํ๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ์ข์ ํ ์คํธ๋ฅผ ๊ฑฐ์น ๊ฒฝ์ฐ ํนํ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ํํ ์ ์์ต๋๋ค.
์ฐจ์ด๋ฅผ ์ต์ํํ์ธ์!!!
์์น 9. ๋ก๊ทธ
๋ก๊ทธ(๋๋ "๋ก๊ทธ")๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ (์ด๋ฒคํธ ์คํธ๋ฆผ) ๋ด์์ ๋ฐ์ํ๋ ํ ์คํธ ํ์์ผ๋ก ๊ธฐ๋ก๋๋ ์ด๋ฒคํธ์ ๋๋ค. ๊ฐ๋จํ ์: "2020-02-02 - ์์คํ ์์ค - ํ๋ก์ธ์ค ์ด๋ฆ." ์ด๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๊ทธ๋๋ก ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ณผ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ทธ๋ ํ๋ก์ธ์ค์ ์งํ ์ํฉ์ ๋ณด๊ณ ๊ทธ๊ฒ์ด ๊ฐ๋ฐ์ ์์ ์ ์๋๋๋ก ๋์๋์ง ์ดํดํฉ๋๋ค.
์ด ์์น์ ๋ก๊ทธ๋ฅผ ํ์ผ ์์คํ ๋ด๋ถ์ ์ ์ฅํด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋ช ์ํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์คํ ์ ํ์ค ์ถ๋ ฅ์์ โโ์ด๋ฅผ ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋ก๊ทธ๋ฅผ ํ๋ฉด์ "์ถ๋ ฅ"ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ ์ค์ ํฐ๋ฏธ๋์ ํ๋ฆ์ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ด๋ ๋ก๊ทธ๋ฅผ ์ ํ ์ ์ฅํ ํ์๊ฐ ์๋ค๋ ๋ป์ธ๊ฐ์? ๋น์ฐํ ์๋์ง. ๊ทํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด ์์ ์ ์ํํด์๋ ์ ๋ฉ๋๋ค. ํ์ฌ ์๋น์ค์ ๋งก๊ฒจ๋์ญ์์ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์๊ฐ ๋ณด๊ธฐ๋ฅผ ์ํด ํน์ ํ์ผ์ด๋ ํฐ๋ฏธ๋์๋ง ๋ก๊ทธ๋ฅผ ์ ๋ฌํ๊ฑฐ๋ Hadoop๊ณผ ๊ฐ์ ๋ฒ์ฉ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์์คํ ์๋ง ์ ๋ฌํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๋ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ก๊ทธ์ ์ํธ์์ฉํด์๋ ์ ๋ฉ๋๋ค.
์์น 10. ํ ์คํธ!
์ฐ์ ์ฉ ๊ธฐ๊ณ ํ์ต์ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ ๋ชจ๋ธ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ์ํ๋ ๊ฒ์ ์์ฑํ๋ค๋ ๊ฒ์ ์ดํดํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
ํ ์คํธ๋ pytest๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ ์ ์์ผ๋ฉฐ ํ๊ท/๋ถ๋ฅ ์์ ์ด ์๋ ๊ฒฝ์ฐ ์์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธํ ์ ์์ต๋๋ค.
๋ฅ๋ฌ๋ ๋ชจ๋ธ์ด ์ง์์ ์ผ๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ง ์๋๋ก ๋์ผํ ์๋๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
์ด๊ฒ์ 10๊ฐ์ง ์์น์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ด์๊ณ , ๋ฌผ๋ก ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ํํด ๋ณด์ง ์๊ณ ๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๊ธฐ์ฌ๋ ์ ๊ฐ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ณต๊ฐํ ์ผ๋ จ์ ํฅ๋ฏธ๋ก์ด ๊ธฐ์ฌ์ ๋ํ ํ๋กค๋ก๊ทธ์ผ ๋ฟ์ ๋๋ค. ์ฐ์ ์ฉ ๊ธฐ๊ณ ํ์ต ๋ชจ๋ธ, ์ด๋ฅผ ์์คํ ์ ํตํฉํ๋ ๋ฐฉ๋ฒ, ์ด๋ฌํ ์์น์ด ์ฐ๋ฆฌ ๋ชจ๋์ ์ถ์ ์ด๋ป๊ฒ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋์ง ์์๋ณด์ธ์.
๋ํ ์ํ์๋ฉด ๋๊ตฌ๋ ๋๊ธ์ ๋จ๊ธธ ์ ์๋ ๋ฉ์ง ์์น์ ํ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com