๋ณด์ผ๋ฏ ๋ง๋ฏํ ์ฑ๋ก ์์ฆ ๋จธ๋ฆฟ์์ ์์ฃผ ๋๋ ์๊ฐ์ ๊ฐ๋จํ ๋จ๊ฒจ๋ณธ๋ค.
์ปดํจํฐ๋ฅผ ์ฒ์ ๋ฐฐ์ธ ์ , ๊ทธ๋ฌ๋๊น ์ ์ญํ๊ณ 2013 ๋ ์ฒซํ๊ธฐ์ ๋ ผ๋ฆฌ์ค๊ณ, ๋ ผ๋ฆฌ์ค๊ณ์คํ, ์ด์ฐ์ํ์ ๋ค์ ์ ๋ถํฐ ์ผ๋ง์ ๊น์ง ๋ด๊ฒ ์ปดํจํฐ๋ ์ค๊ณง ๊ณ์ฐ์ ๋น ๋ฅด๊ฒ ํ ์ ์๊ณ , ์ ๋ณด๋ฅผ ๋ฃ์๋ค ๋บ๋ค ํ ์ ์๊ณ , ์๊ธฐ๋ค๋ผ๋ฆฌ ํต์ ์ด ๊ฐ๋ฅํ๊ณ , ๋ค๊ณ ๋ค๋ ์ ์๋ ๊ทธ๋ฐ ์กด์ฌ์๋ค. ๊ทธ๋ฌ๋ค ์์ฆ ๋ํ์๋ฌผ(ํ์ํด์ ์ฝ๋ ๋ ผ๋ฌธ๋ค์ด๋, ์ ๋ณด์๊ฐํ ์์ )์ ๋จน์ผ๋ฉด์ โ์ฌ๋ ๋์ ์์ฌ ๊ฒฐ์ ์ ํ๊ฑฐ๋, ์ฌ๋์ ์์ฌ ๊ฒฐ์ ์ ๋์์ ์ฃผ๋ ์กด์ฌโ๋ก์ ์ปดํจํฐ๋ฅผ ์๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ก๋ค. ์๋๋ ์ด ์ด๋ฏธ์ง๋ฅผ ํ์ฑํ๋๋ฐ ํฐ ์ํฅ์ ์คฌ๋ ๋ช๋ช ์๊ทน๋ค.
๋งํฌ ์ ๋ชฉ๋ถํฐ ๋ฑ ๋ญ๋ค ์ถ์ง๋ง, ์๊ฐ๋ณด๋ค ์๋ถ๋ถ์ ์๋ Matching ์ ๋ํ ๊ธฐ์กด์ ๊ฒฝ์ ํ ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ทผ์ ๋ค๋ฃฌ ๋ด์ฉ์ด ๋๊บผ์์ ์์ธํ ์ฝ์ง ๋ชปํ๊ณ Paper box ์ ๋ฌตํ๋ ๋ ผ๋ฌธ์ด๋ค. ์ Cooperation์ ๋ํด ์กฐ๊ธ ๋ ์๊ธฐํ์๋ฉด ์๋ Matching ์ ํ ๋ ์ปดํจํฐ๋ ์ฌ๋ฌ ์์๋ฅผ ๊ณ ๋ คํ๊ณ , ์ฒ๋ฆฌํ๊ณ ํด์ ๊ฒฐ๊ตญ ์ ํ์ ํ๋๋ฐ ์ด ๊ณผ์ ์ ์๋ ์์๋ค์ ์ฌ๋์ด ๋ณผ ์ ์๋๋ก ์๊ฐํํ๊ณ , ํ์์ ์ํด ์กฐ์ํ ์ ์๋ค๋ ์๊ธฐ์๋ค(์ด ๋ถ๋ถ์ ์ด๋๋ ๋ ผ๋ฌธ์ ์ญ ์ฝ๊ณ ํ ์์ ๋ ์๋ ์๋ค). ๊ฐ์ธ์ ์ผ๋ก ๋งจ๋ off-the-shelf ๋ก ๋จธ์ ๋ฌ๋์ ์ธ ๊ถ๋ฆฌ๋ง ํด์ ์ปดํจํฐ์ ์์ฌ๊ฒฐ์ ๊ณผ์ ์ ๋ธ๋๋ฐ์ค์ ์๋ค๋ ํธ๊ฒฌ์ด ๊ฐํ๋๋ฐ, ์ด ๋ ผ๋ฌธ๊ณผ ์์ ๊ธฐ์กด์ ๋์ด๊ฐ๋ ์์๋ค์ ํ์ค ํ์ค ๋ณด๋ ค๋ ๋ ธ๋ ฅ ๋ฑ์ด ๋ํด์ ธ์ ์ธ์์ด ํฌ๊ฒ ๋ฐ๋์๋ค.
๋งํฌ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ชฉ์ ์กฐ๊ธ ๋ ์ด์ ๋ถ์ด์๋ฉด, ์จ๋ผ์ธ ์์์ ํ์ต์์๊ฒ ์ํ๋ฌธ์ ๋ฅผ ํ๊ณ ๊ทธ๋ค๋ก ํ์ฌ๊ธ ์ค๋ช ์ ๋ง๋ค๊ฒ ํ๋ค. ์ฌ๊ธฐ๊น์ง๋ง ํ๋ฉด ๋น์ฐํ ๋ ผ๋ฌธ์ด ์๋๊ณ , ์์ ํ์ต์(say ์ ๋ฐฐ)๊ฐ ์์ฑํ ์ฌ๋ฌ๊ฐ์ง ์ค๋ช ์ค ์ด๋ค ์ค๋ช ์ ํ๋ฐฐ์๊ฒ ๋ณด์ฌ์ค์ผํ ๊น ํ๋ ๋ฌธ์ ๋ฅผ ํ๋ฐฐ๋ค์ ํ๊ฐ์, ์ด๋ฅผ ๋ฐํ์ผ๋กํ Multi-armed-bandit ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ ์ ์๋ค๋ ๋ด์ฉ์ด๋ค. ์ด ์ธ์๋ ํฌ๋ผ์ฐ๋์์ฑ ๋ ผ๋ฌธ๋ค์ ์ฝ๋ค๋ณด๋ฉด ์ฌ๋์ ํ๋จ์ด๋ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด (๋ด ๊ธฐ์ค์ผ๋ก) ๊ธฐ๋ฐํ๊ฒ ์ฎ์ฌ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋งํฌ ํ์ด์ฝ์์ ๋ฐํ๋ ์นด์นด์ค์ ์๋ง์ ์๋น์ค์์ ์ฌ์ฉ๋๊ณ ์๋ ์ถ์ฒ ํ๋ ์์ํฌ์ ๋ํ ์ด์ผ๊ธฐ. Python ์ด ๋๋ฆฌ๋ฉด C ๋ฅผ ๋ถ์ด์, ๊ดํ GIL ๊ฐ์ง๊ณ ๊ณ ๋ฏผํ์ง ๋ง๊ณ Job queue ๋ฅผ ์ฑ๊ธ ํ๋ก์ธ์ค ์ฌ๋ฌ ๊ฐ๊ฐ Consume ํ๊ฒ ํ์(์๊ฐํด๋ณด๋ฉด ์ด์ฐจํผ ์ปดํจํฐ ์ฌ๋ฌ๋์์ ๋๋ฆด๊ฑด๋ฐ Thread-safe queue ๋ ๋ง๋ ๋ถ์ง์๋ค. ๊ทธ๋ฅ ๋ฉ์์งํ๋ฅผ ์ฐ์) ์บ์ฌ๋ก Redis ๋ ๋น์ธ๋๊น RocksDB ๋ฅผ ์จ๋ด๋ผ ๋ฑ์ ๊ธฐ์ ์ ๋ด์ฉ๋ ์ฌ๋ฐ์์ง๋ง, ์ค๊ฐ์ ์์คํ ์ ๊ธฐ๋ฅ์ ์ค๋ช ํ๋ ๋ถ๋ถ์์ ์ถ์ฒ ๊ฒฐ๊ณผ๋ฅผ ์๋น์ค์ ๋ฐ๋ก ์ ์ฉํ๋๊ฒ ์๋๋ผ ๊ธฐํ์๊ฐ ๋ช๋ช ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค๋ ๋ด์ฉ์ด ์ธ์๊น์๋ค. ๋ด์ค๋ฅผ ์๋ก ๋ค๋ฉด, ์๊ณ ๋ฆฌ์ฆ ์์ผ๋ก ์ด๊ฑฐ ์ถ์ฒํ๋ฉด ๋ถ๋ช ํ ํด๋ฆญํ๋ค! ์ถ์ ๊ธฐ์ฌ๋ค์ด ์์ง๋ง ์ธ๋ก ์ ์ฑ ๋ฌด๋๋ฌธ์ ๊ทธ๋ฌ๋ฉด ์๋๋ ๊ฒฝ์ฐ๋ค์ด ๋ง๋ค๊ณ . ์ฌ์ค ๋ฌด์ฒ ๋น์ฐํ ์๊ธฐ์ธ๋ฐ ์ค์ ๋ก ๋ค์ผ๋๊น ๋๋์ด ๋ ๋ฌ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ํ์ด์ฌ์ ๊ดํ ์ฌ๋ผ์ด๋์ธ๋ฐ ์ค๊ฐ์ ๋จธ์ ๋ฌ๋์ ๋ํ ์ฌ๋ก๋ก ํ์์ด Tensorflow ๋ก ๊ฐ๋จํ ๋ง๋ ์ด์ํผํ๊ธฐ ๋ชจ๋ธ์ ์๊ฐํ์ จ๋ค. ์ํ๊ณ ์ผ ๊ตฌ๊ธ์ด๋๊นโฆํ๊ณ ๊ทธ๋ ๋ค ์น๋๋ฐ ์ด ๊ฒ์์ ๊ฐ์ธ์ด ๊ฐ๋จํ ๋ง๋ ๊ฒ์ด๊ณ , ๋ ์ด ๋ท์ง๋ผ๋ ๊ฒ์์ ์ด๋ ธ์ ๋ ๊ณฐํ๋ ์ด์ด์ ๋ค์ด์๋ ์ด์คํฐ์๊ทธ๋ก ์ด์ฌํ ํ๋ ๊ธฐ์ต์ด ์์ด์ ์ถฉ๊ฒฉ์ด ์ปธ๋ค. ์ปดํจํฐ๊ฐ ์คํ 2 ๋ฅผ ์ธ๊ฐ๋ณด๋ค ์ํ๊ฒ ๋๋ ๋ ์ด์ค๋ฉด ๋ฐ๋์ธ๋ค์ด ๊ทธ๋ฌ๋ฏ์ด ์ถฉ๊ฒฉ์ด ํด ๋ฏํ๋ค. ์ด๋ ๊ฒ ์๊ฐํ๋ ์ํ๊ณ ์ ์ด์ธ๋์ด ๋๊ฒฐํ ๋ ์ฌ๋๋ค์ ์ถฉ๊ฒฉ์ด ์ปธ๋ ๊ฒ์ด ์ดํด๊ฐ ๋๊ธฐ ์์ํ๋ค.
HN ๋งํฌ ํด์ปค๋ด์ค์์ 1000 ์ ์ ๋๋ ๊ฒฝ์ฐ๋ ๋ณ๋ก ์๋ ๊ฒ ๊ฐ์๋ฐ ์ด ๊ธฐ์ฌ๊ฐ ๊ทธ๋ฌ๋ค. 12 ๋ ๊ฒฝ๋ ฅ์ ๋์์ด๋ ๊ฒธ ๊ฐ๋ฐ์, ํ๊ตญ๋ง๋ก ๋๋ฐ์๊ฐ ๋จธ์ ๋ฌ๋์ ๊ณต๋ถํด์ PHP + MySQL + jQuery ๋ก ๋๋ฑ ๋ง๋ ์๋น์ค์ธ๋ฐ ์ฅ์ฌ๊ฐ ์๋๋ค๊ณ . ์ค์ ๋ค์ด๊ฐ๋ด์ ๋ช ๊ฐ์ ๋ก๊ณ ๋ฅผ ๋ง๋ค์ด ๋ดค๋๋ฐ ํ๋ฆฌํฐ๊ฐ ์๊ทผํ ๊ด์ฐฎ๋ค.
์ฌ๊ธฐ์ ์ปดํจํฐ์ ์ธ๊ฐ์ ๊ณต์์ ์ด์ดํ๋ ค๋ ์๊ฐ์ ํ๋๋ ์๊ณ (์คํ๋ ค ๊ทธ๋ฌ๋ฉด ์ฝ์ฅ์ ๋๋์ด ๋๋ค), ์ด๋์ ์ปดํจํฐ๊ฐ ์ฐ๋ฆฌ์ ํ๋จ์ ํ ๋ค์ด์จ ๊ฒ์ ๋ํด ๋จ๊ธฐ๊ณ ์ถ์๋ค