Habr ํ์๋ ๋ฐ๋ท ์ด์ผ๊ธฐ๊ฐ ์๋๋๋ค. ์ด์ ์๋ 300~400๋ช ์ ๋์์ผ๋ก ์๋นํ ํฐ ๊ท๋ชจ์ ํ ์คํฐ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ตํ์ง๋ง ์ด์ ๋ ์๊ท๋ชจ ์ฃผ์ ๋ณ ํ์๊ฐ ์ ํฉํ๋ค๊ณ ๊ฒฐ์ ํ์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ๋๊ธ์์ ๋ฐฉํฅ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด ํ์์ ์ฒซ ๋ฒ์งธ ์ปจํผ๋ฐ์ค๋ XNUMX์์ ์ด๋ ธ์ผ๋ฉฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ ๋ ํ์ต๋๋ค. ์ฐธ๊ฐ์๋ค์ State Services ํฌํธ์์ ๋ฐฑ์๋์์ ML๋ก์ ์ ํ ๊ธฐ๋ฅ๊ณผ Quadrupel ์๋น์ค ์ค๊ณ์ ๋ํ ๋ณด๊ณ ์๋ฅผ ๋ฃ๊ณ ์๋ฒ๋ฆฌ์ค ์ ์ฉ ๋ผ์ด๋ ํ ์ด๋ธ์๋ ์ฐธ์ฌํ์ต๋๋ค. ํ์ฌ์ ์ง์ ์ฐธ์ํ์ง ๋ชปํ์ ๋ถ๋ค์ ์ํด ์ด๋ฒ ํฌ์คํ ์์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ฐฑ์๋ ๊ฐ๋ฐ๋ถํฐ ๋จธ์ ๋ฌ๋๊น์ง
๋ฐ์ดํฐ ์์ง๋์ด๋ ML์์ ๋ฌด์์ ํ๋์? ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ML ์์ง๋์ด์ ์ ๋ฌด๋ ์ด๋ป๊ฒ ์ ์ฌํ๊ณ ๋ค๋ฅธ๊ฐ์? ์ฒซ ๋ฒ์งธ ์ง์ ์ ๋ ๋ฒ์งธ ์ง์ ์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด ์ด๋ค ๊ธธ์ ํํด์ผ ํฉ๋๊น? 10๋ ๊ฐ์ ๋ฐฑ์๋ ์์ ๋์ ๋จธ์ ๋ฌ๋์ ์ ๋ฌธํ Alexander Parinov๊ฐ ์ด๋ฐ ๋ง์ ํ์ต๋๋ค.
์๋ ์ฐ๋ ํ๋ฆฌ๋
ธํ
ํ์ฌ Alexander๋ X5 Retail Group์์ ์ปดํจํฐ ๋น์ ์์คํ ์ค๊ณ์๋ก ์ผํ๊ณ ์์ผ๋ฉฐ ์ปดํจํฐ ๋น์ ๋ฐ ๋ฅ ๋ฌ๋(github.com/creafz)๊ณผ ๊ด๋ จ๋ ์คํ ์์ค ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค. ๋จธ์ ๋ฌ๋ ๊ฒฝ์ง๋ํ ์ค ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํ๋ซํผ์ธ ์บ๊ธ ๋ง์คํฐ(kaggle.com/creafz) ์ธ๊ณ๋ญํน 100์๊ถ ์์ ์ฐธ์ฌํด ๊ทธ์ ์ค๋ ฅ์ ์ ์ฆํ๋ค.
๋จธ์ ๋ฌ๋์ผ๋ก ์ ํํ๋ ์ด์
500๋ ๋ฐ ์ , ๊ตฌ๊ธ์ ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ ์ธ๊ณต์ง๋ฅ ์ฐ๊ตฌ ํ๋ก์ ํธ์ธ ๊ตฌ๊ธ ๋ธ๋ ์ธ(Google Brain)์ ์ฑ ์์์ธ ์ ํ ๋(Jeff Dean)์ ์ด๋ป๊ฒ ๊ตฌ๊ธ ๋ฒ์ญ์ XNUMX๋ง ์ค์ ์ฝ๋๊ฐ ๋จ XNUMX์ค๋ก ๊ตฌ์ฑ๋ ํ ์ ํ๋ก์ฐ(Tensor Flow) ์ ๊ฒฝ๋ง์ผ๋ก ๋์ฒด๋์๋์ง ์ค๋ช ํ์ต๋๋ค. ๋คํธ์ํฌ๋ฅผ ํ๋ จํ ํ ๋ฐ์ดํฐ ํ์ง์ด ํฅ์๋๊ณ ์ธํ๋ผ๊ฐ ๋จ์ํด์ก์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ์ ๋ฐ์ ๋ฏธ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ์ด์ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ผ๋ฉฐ ๋ด๋ฐ์ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ก ์ฑ์ฐ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋ชจ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค.
Google์ ML ์ธํ๋ผ
์ ๊ฒฝ๋ง์ ์ธํ๋ผ์ ์์ ๋ถ๋ถ์ผ ๋ฟ์ ๋๋ค(์ ๊ทธ๋ฆผ์ ์์ ๊ฒ์์ ์ฌ๊ฐํ). ๋ฐ์ดํฐ ์์ , ์ฒ๋ฆฌ, ์ ์ฅ, ํ์ง ํ์ธ ๋ฑ์ ์ํด์๋ ๋ ๋ง์ ๋ณด์กฐ ์์คํ ์ด ํ์ํ๋ฉฐ, ๊ต์ก์ ์ํ ์ธํ๋ผ, ํ๋ก๋์ ์ ๊ธฐ๊ณ ํ์ต ์ฝ๋ ๋ฐฐํฌ ๋ฐ ์ด ์ฝ๋ ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ ์์ ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ์ํํ๋ ์์ ๊ณผ ์ ํํ ์ ์ฌํฉ๋๋ค.
๊ธฐ๊ณ ํ์ต ๊ณผ์
ML๊ณผ ๋ฐฑ์๋์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
ํด๋์ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ด๊ฒ์ด ํ๋ก๊ทธ๋จ์ ๋์์ ๊ฒฐ์ ํฉ๋๋ค. ML์๋ ์์ ๋ชจ๋ธ ์ฝ๋์ ๋ชจ๋ธ์ ์ ๊ณตํ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ML์ ๋ฐ์ดํฐ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ก ํ์ต๋ ๋์ผํ ๋ชจ๋ธ์ด ์์ ํ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ํญ์ ์๋ก ๋ค๋ฅธ ์์คํ (๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ก๊ทธ, ํ์ผ)์ ๋ถ์ฐ๋์ด ์ ์ฅ๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ๋ฒ์ ๊ด๋ฆฌ
ML์๋ ๊ธฐ์กด ๊ฐ๋ฐ์์์ฒ๋ผ ์ฝ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ ๋ฒ์ ๊ด๋ฆฌ๋ ํ์ํฉ๋๋ค. ๋ชจ๋ธ์ด ํ์ต๋ ๋ด์ฉ์ ๋ช ํํ๊ฒ ์ดํดํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๋ Data Science Version Control ๋ผ์ด๋ธ๋ฌ๋ฆฌ(dvc.org)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋งํฌ์
๋ค์ ์์ ์ ๋ฐ์ดํฐ ๋ผ๋ฒจ๋ง์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ทธ๋ฆผ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ์ํ๊ฑฐ๋ ํด๋น ๊ฐ์ฒด๊ฐ ์ํ ํด๋์ค๋ฅผ ๋งํฉ๋๋ค. ์ด๋ API๋ฅผ ํตํด ์์ ์ด ํฌ๊ฒ ๋จ์ํ๋๋ Yandex.Toloka์ ๊ฐ์ ํน์ ์๋น์ค๋ฅผ ํตํด ์ํ๋ฉ๋๋ค. "์ธ์ ์์"๋ก ์ธํด ์ด๋ ค์์ด ๋ฐ์ํฉ๋๋ค. ๋์ผํ ์์ ์ ์ฌ๋ฌ ์ํ์์๊ฒ ๋งก๊ธฐ๋ฉด ๋ฐ์ดํฐ ํ์ง์ ํฅ์ํ๊ณ ์ค๋ฅ๋ฅผ ์ต์ํ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
ํ ์๋ณด๋์ ์๊ฐํ
๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๊ณ ์ผ๋ถ ์ธก์ ํญ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ต์์ ๋ชจ๋ธ์ ์ ํํ๋ ค๋ฉด ์คํ ๋ก๊น ์ด ํ์ํฉ๋๋ค. ํ ์๋ณด๋(Tensor Board)์ ๊ฐ์ ์๊ฐํ๋ฅผ ์ํ ๋ค์ํ ๋๊ตฌ ์ธํธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์คํ์ ์ ์ฅํ๋ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์๊ท๋ชจ ํ์ฌ์์๋ Excel ์คํ๋ ๋์ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋ฐ๋ฉด, ๋๊ท๋ชจ ํ์ฌ์์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ธฐ ์ํด ํน์ ํ๋ซํผ์ ์ฌ์ฉํฉ๋๋ค.
๋จธ์ ๋ฌ๋์ ์ํ ํ๋ซํผ์ ๋ง์ง๋ง ๊ทธ ์ค ์ด๋ ๊ฒ๋ ์๊ตฌ ์ฌํญ์ 70%๋ฅผ ์ถฉ์กฑํ์ง ๋ชปํฉ๋๋ค.
ํ๋ จ๋ ๋ชจ๋ธ์ ํ๋ก๋์ ์ ํฌ์ ํ ๋ ์ง๋ฉดํด์ผ ํ๋ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ๋ฐ์ดํฐ ๊ณผํ์๋ค์ด ์ ํธํ๋ ๋๊ตฌ์ธ Jupyter Notebook๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ๋ชจ๋์ฑ์ด ์์ต๋๋ค. ์ฆ, ์ถ๋ ฅ์ ๋ ผ๋ฆฌ์ ์กฐ๊ฐ, ์ฆ ๋ชจ๋๋ก ๋๋์ด์ง์ง ์์ ์ฝ๋์ "๋ฐ๋ณด"์ ๋๋ค. ํด๋์ค, ํจ์, ๊ตฌ์ฑ ๋ฑ ๋ชจ๋ ๊ฒ์ด ๋ค์์ฌ ์์ต๋๋ค. ์ด ์ฝ๋๋ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ํ ์คํธ๊ฐ ์ด๋ ต์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น? Netflix์ฒ๋ผ ์ค์ค๋ก ์ฌ์ํ๊ณ ์ด๋ฌํ ๋ฉํ์ ํ๋ก๋์ ์์ ์ง์ ์คํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ์ ์กํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ์์ฒด ํ๋ซํผ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ชจ๋ธ์ ํ๋ก๋์ ์ ์ ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์ ์์ ์ผ๋ก ๋ค์ ์์ฑํ์ฌ ๋ชจ๋๋ก ๋๋๋๋ก ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ค์ํ๊ธฐ ์ฝ๊ณ ๋ชจ๋ธ์ด ์๋ํ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์์ ์ธ ์ต์ ์ ๋ชจ๋ธ ์ฝ๋์ Jupyter Notebook ์ฌ์ฉ์ ๊ธ์งํ๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก ๋ฐ์ดํฐ ๊ณผํ์๋ค์ด ์ด์ ๋์ํ๋ค๋ฉด ๋ง์ ๋๋ค.
๋ธ๋๋ฐ์ค๋ก ๋ชจ๋ธ๋ง
๋ชจ๋ธ์ ์์ฐ์ ํฌ์ ํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ชจ๋ธ์ ๋ธ๋๋ฐ์ค๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ผ์ข ์ ๋ชจ๋ธ ํด๋์ค๊ฐ ์๊ณ ๋ชจ๋ธ์ ๊ฐ์ค์น(ํ๋ จ๋ ๋คํธ์ํฌ์ ๋ด๋ฐ ๋งค๊ฐ๋ณ์)๊ฐ ์ฃผ์ด์ก์ผ๋ฉฐ ์ด ํด๋์ค๋ฅผ ์ด๊ธฐํํ๋ฉด(์์ธก ๋ฉ์๋ ํธ์ถ, ๊ทธ๋ฆผ ์ ๊ณต) ํน์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ์ถ๋ ฅ์ผ๋ก์์ ์์ธก. ๋ด๋ถ์์ ์ผ์ด๋๋ ์ผ์ ์ค์ํ์ง ์์ต๋๋ค.
๋ชจ๋ธ๊ณผ ๋ณ๋์ ์๋ฒ ํ๋ก์ธ์ค
๋ํ ๋ณ๋์ ํน์ ํ๋ก์ธ์ค๋ฅผ ๋ฐ์์์ผ RPC ๋๊ธฐ์ด์ ํตํด ๋ณด๋ผ ์๋ ์์ต๋๋ค(๊ทธ๋ฆผ์ด๋ ๊ธฐํ ์์ค ๋ฐ์ดํฐ ํฌํจ). ์ถ๋ ฅ์์ โโ์์ธก์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
Flask์์ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ์:
@app.route("/predict", methods=["POST"])
def predict():
image = flask.request.files["image"].read()
image = preprocess_image(image)
predictions = model.predict(image)
return jsonify_prediction(predictions)
์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์ ์ ์ ์ฑ๋ฅ ์ ํ์ ๋๋ค. ๋ฐ์ดํฐ ๊ณผํ์๊ฐ ์์ฑํ Phyton ์ฝ๋๊ฐ ๋๋ฆฌ๊ณ ์ต๋ ์ฑ๋ฅ์ ๋์ด๋ด๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํด ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ๋ก ๋ณํํ๊ฑฐ๋ ํ๋ก๋์ ์ ๋ง๊ฒ ์กฐ์ ๋ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ก ๋ณํํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ๋ ์์ํฌ์ ์ด๋ฌํ ๋๊ตฌ๊ฐ ์์ง๋ง ์ด์์ ์ธ ๋๊ตฌ๋ ์์ผ๋ฏ๋ก ์ง์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
ML์ ์ธํ๋ผ๋ ์ผ๋ฐ ๋ฐฑ์๋์ ๋์ผํฉ๋๋ค. Docker์ Kubernetes๊ฐ ์์ผ๋ฉฐ Docker์ ๊ฒฝ์ฐ์๋ง NVIDIA์์ ๋ฐํ์์ ์ค์นํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ปจํ ์ด๋ ๋ด๋ถ ํ๋ก์ธ์ค๊ฐ ํธ์คํธ์ ๋น๋์ค ์นด๋์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Kubernetes๊ฐ ๋น๋์ค ์นด๋๋ก ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ํ๋ฌ๊ทธ์ธ์ด ํ์ํฉ๋๋ค.
๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฌ๋ฆฌ ML์ ๊ฒฝ์ฐ ์ธํ๋ผ์๋ ํ์ธํ๊ณ ํ ์คํธํด์ผ ํ๋ ๋ค์ํ ์ด๋ ์์(์: ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฝ๋, ๋ชจ๋ธ ๊ต์ก ํ์ดํ๋ผ์ธ ๋ฐ ํ๋ก๋์ )๊ฐ ์์ต๋๋ค(์ ๋ค์ด์ด๊ทธ๋จ ์ฐธ์กฐ). ํ์ดํ๋ผ์ธ์ ๋ค์ํ ๋ถ๋ถ์ ์ฐ๊ฒฐํ๋ ์ฝ๋๋ฅผ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ถ๋ถ์ด ๋ง๊ณ ๋ชจ๋ ๊ฒฝ๊ณ์์ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
AutoML ์๋ ๋ฐฉ์
AutoML ์๋น์ค๋ ๋ชฉ์ ์ ๋ง๋ ์ต์ ์ ๋ชจ๋ธ์ ์ ํํ๊ณ ํ์ต์ํฌ ๊ฒ์ ์ฝ์ํฉ๋๋ค. ํ์ง๋ง ์ดํดํด์ผ ํ ์ ์ ML์์ ๋ฐ์ดํฐ๋ ๋งค์ฐ ์ค์ํ๋ฉฐ ๊ฒฐ๊ณผ๋ ๋ฐ์ดํฐ ์ค๋น์ ๋ฌ๋ ค ์๋ค๋ ๊ฒ์ ๋๋ค. ๋งํฌ์ ์ ์ฌ๋์ด ์ํํ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋ง์ต๋๋ค. ์๊ฒฉํ ํต์ ์์ด๋ ๊ฒฐ๊ณผ๊ฐ ์ฐ๋ ๊ธฐ์ผ ์ ์์ผ๋ฉฐ ์์ง ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์ ๋ฌธ๊ฐ(๋ฐ์ดํฐ ๊ณผํ์)์ ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก AutoML์ด ๋ฌด๋์ง๋ ์ง์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ค๋นํ๊ณ ์ผ๋ จ์ ์คํ์ ์คํํ์ฌ ์ต์์ ๋ชจ๋ธ์ ์ฐพ์ผ๋ ค๋ ๊ฒฝ์ฐ ์ํคํ ์ฒ๋ฅผ ์ ํํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
๋จธ์ ๋ฌ๋์ ์ ๋ฌธํ๋ ๋ฐฉ๋ฒ
ML์ ์์ํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ(๋ฐ ์ผ๋ฐ ํ๋ ์์ํฌ)์์ ์ฌ์ฉ๋๋ Python์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค. ์ด ์ธ์ด๋ ์ด ํ๋ ๋ถ์ผ์์ ์ค์ง์ ์ผ๋ก ํ์์ ๋๋ค. C++๋ ์์จ์ฃผํ์ฐจ ์ ์ด ์์คํ ๊ณผ ๊ฐ์ ์ผ๋ถ ์ปดํจํฐ ๋น์ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค. JavaScript ๋ฐ Shell - ์๊ฐํ ๋ฐ ๋ธ๋ผ์ฐ์ ์์ ๋ด๋ฐ ์คํ๊ณผ ๊ฐ์ ์ด์ํ ์์ ์ ์ํ ๊ฒ์ ๋๋ค. Java ๋ฐ Scala๋ ๋น ๋ฐ์ดํฐ ์์ ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ฌ์ฉ๋ฉ๋๋ค. R๊ณผ Julia๋ ์๋ฆฌํต๊ณํ์ ๊ณต๋ถํ๋ ์ฌ๋๋ค์๊ฒ ์ฌ๋๋ฐ๋ ์กด์ฌ์ ๋๋ค.
์ค๋ฌด ๊ฒฝํ์ ์๊ธฐ ์ํ ๊ฐ์ฅ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ Kaggle์ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค. ํ๋ซํผ ๋ํ์ ์ฐธ๊ฐํ๋ฉด XNUMX๋ ์ด์์ ์ด๋ก ๊ณต๋ถ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ด ํ๋ซํผ์์๋ ๋ค๋ฅธ ์ฌ๋์ด ๊ฒ์ํ๊ณ ์ฃผ์์ ๋จ ์ฝ๋๋ฅผ ๊ฐ์ ธ์์ ๊ฐ์ ํ๊ณ ๋ชฉ์ ์ ๋ง๊ฒ ์ต์ ํํ ์ ์์ต๋๋ค. ๋ณด๋์ค - Kaggle ์์๊ฐ ๊ธ์ฌ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๋ ๋ค๋ฅธ ์ต์ ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ML ํ์ ํฉ๋ฅํ๋ ๊ฒ์ ๋๋ค. ๋๋ฃ์ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ค์ผ๋ก์จ ๊ฒฝํ์ ์์ ์ ์๋ ๋จธ์ ๋ฌ๋ ์คํํธ์ ์ด ๋ง์ด ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ฐ์ดํฐ ๊ณผํ์ ์ปค๋ฎค๋ํฐ ์ค ํ๋์ธ Open Data Science(ods.ai) ๋ฐ ๊ธฐํ ์ปค๋ฎค๋ํฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ฐํ์๋ ํด๋น ์ฃผ์ ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋งํฌ์ ๊ฒ์ํ์ต๋๋ค.
"Quadrupel" - "State Services" ํฌํธ์ ํ๊ฒ ์๋ฆผ ์๋น์ค
์๋ธ๊ฒ๋ ์ค๋ฏธ๋ฅด๋ ธํ
๋ค์ ์ฐ์ฌ๋ ์ ์์ ๋ถ ์ธํ๋ผ ๊ฐ๋ฐ ๋ถ์์ ์ฑ ์์์ธ Evgeny Smirnov์์ผ๋ฉฐ Quadruple์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ์ด๋ Runet์์ ๊ฐ์ฅ ๋ง์ด ๋ฐฉ๋ฌธํ๋ ์ ๋ถ ๋ฆฌ์์ค์ธ Gosuslugi ํฌํธ(gosuslugi.ru)์ ๋ํ ๋์ ์๋ฆผ ์๋น์ค์ ๋๋ค. ์ผ์ผ ์์ฒญ์ ์๋ 2,6๋ง ๋ช ์ด๋ฉฐ ์ฌ์ดํธ์ ๋ฑ๋ก๋ ์ฌ์ฉ์๋ ์ด 90์ฒ๋ง ๋ช ์ด๋ฉฐ ๊ทธ ์ค ํ์ธ๋ ์ฌ์ฉ์๋ 60์ฒ๋ง ๋ช ์ ๋๋ค. ํฌํธ API์ ๋ถํ๋ 30RPS์ ๋๋ค.
๊ตญ๊ฐ ์๋น์ค์ ๋ฐฑ์๋์ ์ฌ์ฉ๋๋ ๊ธฐ์
"Quadrupel"์ ํน๋ณํ ์๋ฆผ ๊ท์น์ ์ค์ ํ์ฌ ์ฌ์ฉ์๊ฐ ์์ ์๊ฒ ๊ฐ์ฅ ์ ํฉํ ์๊ฐ์ ์๋น์ค ์ ์์ ๋ฐ์ ์ ์๋๋ก ์ง์ํ๋ ํ๊ฒ ์๋ฆผ ์๋น์ค์ ๋๋ค. ์๋น์ค ๊ฐ๋ฐ ์ ์ฃผ์ ์๊ตฌ ์ฌํญ์ ์ ์ฐํ ์ค์ ๊ณผ ์ ์ ํ ๋ฉ์ผ๋ง ์๊ฐ์ด์์ต๋๋ค.
์ฟผ๋๋ฃจํ ์ ์ด๋ป๊ฒ ์๋ํ๋์?
์์ ๋ค์ด์ด๊ทธ๋จ์ ์ด์ ๋ฉดํ์ฆ์ ๊ต์ฒดํด์ผ ํ๋ ์ํฉ์ ์๋ฅผ ์ฌ์ฉํ์ฌ Quadrupel์ ์๋ ๊ท์น ์ค ํ๋๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๋จผ์ ์๋น์ค๋ ๋ง๋ฃ์ผ์ด ํ ๋ฌ ์์ ๋ง๋ฃ๋๋ ์ฌ์ฉ์๋ฅผ ์ฐพ์ต๋๋ค. ์ ์ ํ ์๋น์ค๋ฅผ ๋ฐ์ ์ ์๋ค๋ ์ ์์ด ํฌํจ๋ ๋ฐฐ๋๊ฐ ํ์๋๊ณ ์ด๋ฉ์ผ๋ก ๋ฉ์์ง๊ฐ ์ ์ก๋ฉ๋๋ค. ๊ธฐํ์ด ์ด๋ฏธ ๋ง๋ฃ๋ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ฐฐ๋์ ์ด๋ฉ์ผ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ๊ถ๋ฆฌ ๊ตํ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ์ฌ์ฉ์๋ ์ ์ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ๋ผ๋ ์ ์๊ณผ ํจ๊ป ๋ค๋ฅธ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
๊ธฐ์ ์ ์ธ ๊ด์ ์์ ๋ณผ ๋ ์ด๋ ์ฝ๋๊ฐ ์์ฑ๋๋ ๋ฉ์ง ์คํฌ๋ฆฝํธ์ ๋๋ค. ์ ๋ ฅ์ ๋ฐ์ดํฐ์ด๊ณ ์ถ๋ ฅ์ true/false, ์ผ์น/์ผ์นํ์ง ์์์ ๋๋ค. ์ฌ์ฉ์์ ์์ผ(ํ์ฌ ๋ ์ง๊ฐ ์ฌ์ฉ์์ ์๋ ์์ผ๊ณผ ๋์ผ) ๊ฒฐ์ ๋ถํฐ ๋ณต์กํ ์ํฉ๊น์ง ์ด 50๊ฐ ์ด์์ ๊ท์น์ด ์์ต๋๋ค. ๋งค์ผ ์ด๋ฌํ ๊ท์น์ ์๋ฆผ์ด ํ์ํ ์ฌ๋์ธ ์ฝ ๋ฐฑ๋ง ๊ฐ์ ์ผ์น ํญ๋ชฉ์ ์๋ณํฉ๋๋ค.
์ฟผ๋๋ฌํ ์๋ฆผ ์ฑ๋
Quadrupel์ ๋ด๋ถ์๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ต๋๋ค.
- ๋ ธ๋์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
- ํด์ API ๋ฐฐ๋ ์์ฒด๋ฅผ ์ ํํ์ฌ ํฌํธ๊ณผ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฌํฉ๋๋ค.
- ์ค์ผ์ค๋ฌ ๋ฐฐ๋ ์ฌ๊ณ์ฐ ๋๋ ๋๋ ๋ฉ์ผ ๋ฐ์ก ์์ ์ ์์ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ๋ฐฑ์๋๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋๋ค. ๋ ๊ฐ์ง ์ธํฐํ์ด์ค - ๋๋จธ์ง ๋๋ JMS. ์ด๋ฒคํธ๊ฐ ๋ง์๋ฐ, ๋ถํ์ํ ์์ฒญ์ด ๋ฐ์ํ์ง ์๋๋ก ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ์ง๊ณ๋ฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ํ ์ด๋ธ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด๋ ์ฌ์ฉ์์ ํค์ ๊ฐ ์์ฒด์ ๊ฐ์ ํค ๊ฐ ์ ์ฅ์์ฒ๋ผ ๋ณด์ ๋๋ค. ๊ด๋ จ ๋ฌธ์์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ํ๋๊ทธ, ์ ํจ ๊ธฐ๊ฐ, ์๋น์ค ์์์ ๋ํ ์ง๊ณ ํต๊ณ ์ด ์ฌ์ฉ์ ๋ฑ.
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ ๋ฐฐ๋๊ฐ ์ฆ์ ๋ค์ ๊ณ์ฐ๋๋๋ก JMS์ ์์ ์ด ์ค์ ๋ฉ๋๋ค. ์ด๋ ์ฆ์ ์น์ ํ์๋์ด์ผ ํฉ๋๋ค. ์์คํ ์ ๋ฐค์ ์์๋ฉ๋๋ค. ์์ ์ ์ฌ์ฉ์ ๊ฐ๊ฒฉ์ผ๋ก JMS์ ์ ๋ฌ๋๋ฉฐ ์ด์ ๋ฐ๋ผ ๊ท์น์ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ์ด๋ ์ฌ๊ณ์ฐ์ ๊ด๋ จ๋ ํ๋ก์ธ์์ ์ํด ์ ํ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ๋ค์ ๋๊ธฐ์ด๋ก ์ด๋ํ์ฌ ๋ฐฐ๋๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฑฐ๋ ์ฌ์ฉ์ ์๋ฆผ ์์ ์ ์๋น์ค๋ก ๋ณด๋ ๋๋ค. ์ด ํ๋ก์ธ์ค๋ 5~7์๊ฐ์ด ์์๋๋ฉฐ, ์ธ์ ๋ ์ง ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ํธ๋ค๋ฌ๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
์๋น์ค๋ ๊ฝค ์ ์๋ํฉ๋๋ค. ํ์ง๋ง ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฉด์ ๋ฐ์ดํฐ์ ์๋ ๋์ด๋๊ณ ์์ต๋๋ค. ์ด๋ก ์ธํด Rest API๊ฐ ๋ณต์ ๋ณธ์ ๋ณธ๋ค๋ ์ฌ์ค์ ๊ณ ๋ คํ๋๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ก๋๊ฐ ์ฆ๊ฐํฉ๋๋ค. ๋ ๋ฒ์งธ ์์ ์ JMS์ธ๋ฐ, ์๊ณ ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ ์๋น๋์ด ๋ง์ ์ ํฉํ์ง ์์ต๋๋ค. ๋๊ธฐ์ด ์ค๋ฒํ๋ก๋ก ์ธํด JMS๊ฐ ์ค๋จ๋๊ณ ์ฒ๋ฆฌ๊ฐ ์ค๋จ๋ ์ํ์ด ๋์ต๋๋ค. ์ดํ์๋ ๋ก๊ทธ๋ฅผ ์ง์ฐ์ง ์๊ณ JMS๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ์ฉํ๋ ์ค๋ฉ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ณํ์ ๋๋ค. ๋ํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์ ๋ณ๊ฒฝํ๊ณ JMS๋ฅผ Kafka๋ก ๋ณ๊ฒฝํ ๊ณํ๋ ์์ต๋๋ค. Kafka๋ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ด๊ฒฐํจ์ฑ ์๋ฃจ์ ์ ๋๋ค.
์๋น์ค๋ก์์ ๋ฐฑ์๋์ ์๋ฒ๋ฆฌ์ค
์ผ์ชฝ๋ถํฐ: ์๋ ์ฐ๋ ๋ณด๋ฅด๊ฐํธ, ์๋๋ ์ด ํ ๋ฐ๋ ์ฝ, ๋์ฝ๋ผ์ด ๋ง๋ฅด์ฝํ, ์๋ผ ์ด์ค๋ผ์์
์๋น์คํ ๋ฐฑ์๋์ธ๊ฐ์, ์๋๋ฉด ์๋ฒ๋ฆฌ์ค ์๋ฃจ์ ์ธ๊ฐ์? ์ํ์์ ์ด ์๊ธํ ๋ฌธ์ ๋ฅผ ๋ ผ์ํ ์ฐธ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Ara Israelyan, CTO CTO์ด์ Scorocode์ ์ฐฝ๋ฆฝ์.
- Aligned Research Group์ ์์ ๋ฐ์ดํฐ ์์ง๋์ด Nikolay Markov.
- RUVDS ๊ฐ๋ฐ ๋ถ์์ ์ฑ ์์์ธ Andrey Tomilenko.
๋ํ๋ ์์ ๊ฐ๋ฐ์ Alexander Borgart๊ฐ ์งํํ์ต๋๋ค. ์ฒญ์ทจ์๋ค์ด ์ฐธ์ฌํ ํ ๋ก ์ ์ถ์ฝ ๋ฒ์ ์ผ๋ก ์ ์ํฉ๋๋ค.
โ ๊ทํ๊ฐ ์ดํดํ๋ ์๋ฒ๋ฆฌ์ค๋ ๋ฌด์์
๋๊น?
์ค๋๋ฅ: ์ด๊ฒ์ ์ปดํจํ
๋ชจ๋ธ์
๋๋ค. ์ฆ, ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ดํฐ์๋ง ์์กดํ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ Lambda ํจ์์
๋๋ค. ์ด ์ฉ์ด๋ Google์ด๋ Amazon ๋ฐ AWS Lambda ์๋น์ค์์ ๋์์ต๋๋ค. ๊ณต๊ธ์๊ฐ ์ฉ๋ ํ์ ํ ๋นํ์ฌ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค. ๋์ผํ ์๋ฒ์์ ๋ค์ํ ์ฌ์ฉ์๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋์ฝ๋ผ์ค: ์ฝ๊ฒ ๋งํ๋ฉด IT ์ธํ๋ผ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ผ๋ถ๋ฅผ ํด๋ผ์ฐ๋, ์์์์ฑ์ผ๋ก ์ด์ ํ๋ ๊ฒ์
๋๋ค.
์๊ผฌ: ๊ฐ๋ฐ์ ์
์ฅ์์๋ ์์์ ์ ์ฝํ๋ ค๋ ์ข์ ์๋์ด๊ณ , ๋ง์ผํ
๋ด๋น์ ์
์ฅ์์๋ ๋ ๋ง์ ๋์ ๋ฒ๊ธฐ ์ํ ์ข์ ์๋์
๋๋ค.
โ ์๋ฒ๋ฆฌ์ค๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๋์ผํฉ๋๊น?
๋์ฝ๋ผ์ค: ์๋์, ์๋ฒ๋ฆฌ์ค๋ ์ํคํ
์ฒ ์กฐ์ง์ ๊ฐ๊น์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๋ ์ผ๋ถ ๋
ผ๋ฆฌ์ ์์ ๋จ์์
๋๋ค. ์๋ฒ๋ฆฌ์ค๋ "๋ณ๋์ ์ํฐํฐ"๊ฐ ์๋ ์ ๊ทผ ๋ฐฉ์์
๋๋ค.
์๊ผฌ: ์๋ฒ๋ฆฌ์ค ํจ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ํจํค์ง๋ ์ ์์ง๋ง ์ด๋ ๋ ์ด์ ์๋ฒ๋ฆฌ์ค๊ฐ ์๋๋ฉฐ Lambda ํจ์๋ ์๋๋๋ค. ์๋ฒ๋ฆฌ์ค์์๋ ํจ์๊ฐ ์์ฒญ๋๋ ์๊ฐ์๋ง ์๋์ด ์์๋ฉ๋๋ค.
์ค๋๋ฅ: ์๋ช
์ด ๋ค๋ฆ
๋๋ค. Lambda ํจ์๋ฅผ ์์ํ๊ณ ์์ด๋ฒ๋ ธ์ต๋๋ค. ๋ช ์ด ๋์ ์๋ํ์ผ๋ฉฐ ๋ค์ ํด๋ผ์ด์ธํธ๋ ๋ค๋ฅธ ๋ฌผ๋ฆฌ์ ์์คํ
์์ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
โ ์ด๋ ๊ฒ์ด ๋ ์ ํ์ฅ๋ฉ๋๊น?
์๊ผฌ: ์ํ์ผ๋ก ํ์ฅํ ๋ Lambda ํจ์๋ ๋ง์ดํฌ๋ก์๋น์ค์ ์ ํํ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
๋์ฝ๋ผ์ค: ๋ณต์ ๋ณธ ์์ ๊ด๊ณ์์ด ์ค์ ํ ๋งํผ๋ง ์กด์ฌํ๋ฏ๋ก ์๋ฒ๋ฆฌ์ค๋ ํ์ฅ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. Kubernetes์์ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ง๋ค๊ณ "์ด๋๊ฐ"์์ 20๊ฐ์ ์ธ์คํด์ค๋ฅผ ์์ํ์ผ๋ฉฐ 20๊ฐ์ ์ต๋ช
๋งํฌ๊ฐ ๊ทํ์๊ฒ ๋ฐํ๋์์ต๋๋ค. ์์ผ๋ก!
โ ์๋ฒ๋ฆฌ์ค์์ ๋ฐฑ์๋๋ฅผ ์์ฑํ ์ ์๋์?
์ค๋๋ฅ: ์ด๋ก ์ ์ผ๋ก๋ ๊ทธ๋ ์ง๋ง ๋ง์ด ์ ๋ฉ๋๋ค. Lambda ํจ์๋ ๋จ์ผ ์ ์ฅ์์ ์์กดํ๋ฏ๋ก ๋ณด์ฅ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ํน์ ๊ฑฐ๋๋ฅผ ์ํํ ๊ฒฝ์ฐ ๋ค์์ ์ฐ๋ฝํ ๋ ํด๋น ์ฌ์ฉ์๋ ๊ฑฐ๋๊ฐ ์ํ๋์์ผ๋ฉฐ ์๊ธ์ด ์
๊ธ๋์์์ ํ์ธํด์ผ ํฉ๋๋ค. ๋ชจ๋ Lambda ํจ์๋ ์ด ํธ์ถ์ ์ฐจ๋จํฉ๋๋ค. ์ค์ ๋ก ์ฌ๋ฌ ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๋ ์ก์ธ์ค ์ง์ ์ด ํ๋ ์๋ ๋จ์ผ ์๋น์ค๋ก ์ ํ๋ฉ๋๋ค.
โ ์ด๋ค ์ํฉ์์ ์๋ฒ๋ฆฌ์ค ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๊น?
์ค๋๋ฅ: ๊ณต์ ์คํ ๋ฆฌ์ง๊ฐ ํ์ํ์ง ์์ ์์
- ๋์ผํ ์ฑ๊ตด, ๋ธ๋ก์ฒด์ธ. ๊ณ์ฐ์ ๋ง์ด ํด์ผ ํ๋ ๊ณณ. ์ปดํจํ
๋ฅ๋ ฅ์ด ํฌ๋ค๋ฉด "๊ฑฐ๊ธฐ์ ๋ญ๊ฐ์ ํด์๋ฅผ ๊ณ์ฐํ์ธ์..."์ ๊ฐ์ ํจ์๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋ฅผ ๋ค์ด Amazon์ Lambda ํจ์์ ๋ถ์ฐ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. . ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ ๊ท ์๋น์ค๋ฅผ ์์ฑํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. Lambda ํจ์๋ ์คํ ๋ฆฌ์ง์ ์ก์ธ์คํ๊ณ ์ฌ์ฉ์์๊ฒ ์ผ์ข
์ ์๋ต์ ์ ๊ณตํฉ๋๋ค.
๋์ฝ๋ผ์ค: ์๋ฒ๋ฆฌ์ค์์ ์คํ๋๋ ์ปจํ
์ด๋๋ ๋ฆฌ์์ค๊ฐ ๊ทนํ ์ ํ๋์ด ์์ต๋๋ค. ๊ธฐ์ต๋ ฅ๊ณผ ๊ทธ ๋ฐ์ ๋ชจ๋ ๊ฒ์ด ๊ฑฐ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด ์ธํ๋ผ๊ฐ Google, Amazon๊ณผ ๊ฐ์ ์ผ๋ถ ํด๋ผ์ฐ๋์ ์์ ํ ๋ฐฐํฌ๋๊ณ ์ด๋ค๊ณผ ์๊ตฌ ๊ณ์ฝ์ ๋งบ๊ณ ์ด ๋ชจ๋ ๊ฒ์ ๋ํ ์์ฐ์ด ์๋ ๊ฒฝ์ฐ ์ผ๋ถ ์์
์ ์๋ฒ๋ฆฌ์ค ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ํน์ ํ๊ฒฝ์์ ์ฌ์ฉํ๋๋ก ๋ง์ถคํ๋์ด ์์ผ๋ฏ๋ก ์ด ์ธํ๋ผ ๋ด๋ถ์ ์์ด์ผ ํฉ๋๋ค. ์ฆ, ๋ชจ๋ ๊ฒ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ์ ์ฐ๊ฒฐํ ์ค๋น๊ฐ ๋์๋ค๋ฉด ์คํํด ๋ณผ ์ ์์ต๋๋ค. ์ฅ์ ์ ์ด ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค.
์๊ผฌ: ์๋ฒ๋ฆฌ์ค์์๋ ์ฟ ๋ฒ๋คํฐ์ค, ๋์ปค, ์นดํ์นด ์ค์น ๋ฑ์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค๋ ์ฌ์ค์ด ์๊ธฐ๊ธฐ๋ง์ด๋ค. ๋์ผํ Amazon๊ณผ Google์ด ์ด๊ฒ์ ์ค์นํ๊ณ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ์ ์ SLA๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ง์ ์ฝ๋ฉํ๋ ๊ฒ๋ณด๋ค ๋ชจ๋ ๊ฒ์ ์์์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ค๋๋ฅ: ์๋ฒ๋ฆฌ์ค ์์ฒด๋ ์ ๋ ดํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค๋ฅธ Amazon ์๋น์ค์ ๋ํด์๋ ๋ง์ ๋น์ฉ์ ์ง๋ถํด์ผ ํฉ๋๋ค. ์ฌ๋๋ค์ API ๊ฒ์ดํธ์ ์์ฒญ๋ ๊ธ์ก์ ์ฒญ๊ตฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ๊ทธ๋ค์ ๊ณ ์ํ์ต๋๋ค.
์๊ผฌ: ๋์ ๊ดํด ์ด์ผ๊ธฐํ๋ค๋ฉด ์ด ์ ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๋ชจ๋ ์ฝ๋๋ฅผ Serverless๋ก ์ด์ ํ๋ ค๋ฉด ํ์ฌ์ ์ ์ฒด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ 180๋ ๋ฐ๊ฟ์ผ ํฉ๋๋ค. ์ด ์์
์๋ ๋ง์ ์๊ฐ๊ณผ ๋น์ฉ์ด ์์๋ฉ๋๋ค.
โ Amazon๊ณผ Google์ ์ ๋ฃ Serverless์ ๋ํ ๊ฐ์น ์๋ ๋์์ด ์์ต๋๊น?
๋์ฝ๋ผ์ค: Kubernetes์์๋ ์ด๋ค ์ข
๋ฅ์ ์์
์ ์์ํ๋ฉด ์คํ๋๊ณ ์ข
๋ฃ๋ฉ๋๋ค. ์ด๋ ์ํคํ
์ฒ ๊ด์ ์์ ๋ณผ ๋ ์๋ฒ๋ฆฌ์ค์ ํด๋นํฉ๋๋ค. ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ง ํฅ๋ฏธ๋ก์ด ๋น์ฆ๋์ค ๋
ผ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ด์ ๋ํด ์ข ๋ ์๊ฐํด ๋ณผ ํ์๊ฐ ์์ต๋๋ค. Kubernetes๋ฅผ ๋ ๋์ง ์๊ณ ๋ ์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋๋ ์ถ๊ฐ ๊ตฌํ์ ๋์ด๋ด์ง ์์ ๊ฒ์
๋๋ค.
โ ์๋ฒ๋ฆฌ์ค์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
์๊ผฌ: ์์คํ
์ํคํ
์ฒ ๋ฐ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๊ธ์๋ DevOps ํ์ด ๊ฐ๋ฅํ ๋ฌธ์ ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ๋ณด๊ณ ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
๋์ฝ๋ผ์ค: Amazon์๋ Lambda์ ๋ก๊ทธ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ๋ก๊ทธ๊ฐ ์คํธ๋ฆฌ๋ฐ๋๋ CloudWatch๊ฐ ์์ต๋๋ค. ๋ก๊ทธ ์ ๋ฌ์ ํตํฉํ๊ณ ๋ณด๊ธฐ, ๊ฒฝ๊ณ ๋ฑ์ ๋ณ๋์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ํ๋ ์ปจํ
์ด๋์ ์์ด์ ํธ๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค.
- ์์ฝํด๋ณด์.
์ค๋๋ฅ: Lambda ํจ์์ ๋ํด ์๊ฐํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์๋ ์์ฒญ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ๊ณ ์๋ต์ ๋ณด๋ด๋ ์๋น์ค๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒฝ์ฐ Lambda ํจ์๋ ๋ฉํฐ์ค๋ ๋ฉ, ํ์ฅ์ฑ ๋ฑ๊ณผ ๊ด๋ จ๋ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋
ผ๋ฆฌ๊ฐ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ตฌ์ถ๋๋ฉด ๋์ค์ ์ด๋ฌํ Lambda๋ฅผ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ ์กํ๊ฑฐ๋ Amazon๊ณผ ๊ฐ์ ํ์ฌ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ์ ์ ์ ์ฉํ๊ณ ์์ด๋์ด๋ ํฅ๋ฏธ๋กญ์ต๋๋ค. ์ด๊ฒ์ด ๋น์ฆ๋์ค์ ์ผ๋ง๋ ์ ๋นํ์ง๋ ์ฌ์ ํ ์ด๋ ค ์๋ ์ง๋ฌธ์
๋๋ค.
Nikolay: ์๋ฒ๋ฆฌ์ค๋ ์ผ๋ถ ๋น์ฆ๋์ค ๋ก์ง์ ๊ณ์ฐํ๋ ๊ฒ๋ณด๋ค ์ด์ ์์
์ ๋ ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋๋ ํญ์ ๊ทธ๊ฒ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ผ๊ณ ์๊ฐํฉ๋๋ค. Amazon์ ์๊ณ Kubernetes์ ์๋ค๋ฉด ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฒ๋ฆฌ์ค๋ฅผ ์ค์ค๋ก ์์ํ๊ณ ์คํํ๊ธฐ ์ํด ์๋นํ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋น์ฆ๋์ค ์ฌ๋ก๋ฅผ ์ดํด๋ณผ ํ์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ ๋ด ์์
์ค ํ๋๋ ํ์ผ์ด ๋์คํฌ์ ํน์ ํ์์ผ๋ก ๋ํ๋๋ฉด ํด๋น ํ์ผ์ Kafka์ ์
๋ก๋ํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. WatchDog์ด๋ Lambda๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋
ผ๋ฆฌ์ ์ธ ๊ด์ ์์๋ ๋ ์ต์
๋ชจ๋ ์ ํฉํ์ง๋ง ๊ตฌํ ์ธก๋ฉด์์๋ ์๋ฒ๋ฆฌ์ค๊ฐ ๋ ๋ณต์กํ๊ณ ์ ๋ Lambda๊ฐ ์๋ ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ํธํฉ๋๋ค.
์๊ผฌ: ์๋ฒ๋ฆฌ์ค๋ ํฅ๋ฏธ๋กญ๊ณ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๊ธฐ์ ์ ์ผ๋ก ๋งค์ฐ ์๋ฆ๋ค์ด ์์ด๋์ด์
๋๋ค. ์กฐ๋ง๊ฐ ๊ธฐ์ ์ ๋ชจ๋ ๊ธฐ๋ฅ์ด 100๋ฐ๋ฆฌ์ด ์ด๋ด์ ์คํ๋๋ ์์ค์ ๋๋ฌํ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฉด ์์น์ ์ผ๋ก ๋๊ธฐ ์๊ฐ์ด ์ฌ์ฉ์์๊ฒ ์ค์ํ์ง ์ฌ๋ถ์ ๋ํด์๋ ์๋ฌธ์ ์ฌ์ง๊ฐ ์์ต๋๋ค. ๋์์ ๋๋ฃ๋ค์ด ์ด๋ฏธ ๋งํ๋ฏ์ด ์๋ฒ๋ฆฌ์ค์ ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ์ ์ ์ผ๋ก ๋น์ฆ๋์ค ๋ฌธ์ ์ ๋ฌ๋ ค ์์ต๋๋ค.
๋ง์ ๋์์ ์ฃผ์ ํ์์๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
- IT ์ปจํผ๋ฐ์ค ๊ณต๊ฐ ยซ
๋ด ยป ํ์ ์ฅ์์ฉ. - IT ์ด๋ฒคํธ ์ผ์
Runet-ID ๊ทธ๋ฆฌ๊ณ ์ถํ "์ซ์๋ก ๋ณด๋ ์ธํฐ๋ท ยป ์ ๋ณด ์ง์ ๋ฐ ๋ด์ค๋ฅผ ํ์ธํ์ธ์. - ยซ
์ํฌ๋ก๋์ค "์ ๋ฌผ์ฉ. ์ ํผํธ ํ ๊ณต๋์ฐฝ์์ ์ํด.- "์ ์ํต์ ํํ"
RAEC ์ฐธ์ฌ์ ๊ฒฝํ์ ์ํด. - ๋ฉ์ธ ์คํฐ์
RUVDS - ๋ชจ๋ !
์ถ์ฒ : habr.com