
์๊ฐ
์ ๋ ๋ชจ์คํฌ๋ฐ์์ ์ด๋ฆฐ GopherCon Russia 2019 ์ปจํผ๋ฐ์ค์์ ์์ด๋ก ์ด ๊ฐ์ฐ์ ํ๊ณ , ๋์ฆ๋๋ ธ๋ธ๊ณ ๋ก๋์์ ์ด๋ฆฐ ๋ฏธํ ์์๋ ๋ฌ์์์ด๋ก ์ด ๊ฐ์ฐ์ ํ์ต๋๋ค. ์ด๋ B-ํธ๋ฆฌ๋งํผ ํํ์ง๋ ์์ง๋ง ํฅ๋ฏธ๋ก์ด ๋นํธ๋งต ์ธ๋ฑ์ค์ ๋ํ ๋ด์ฉ์ ๋๋ค. ๋๋ ๊ณต์ ํ๋ค ์์ด๋ก ๋ ํ์ ๋ํ ์ฐ์ค๊ณผ ๋ฌ์์์ด๋ก ๋ ๋๋ณธ.
๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง, ์ธ์ ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ณด๋ค ๋ ์ข๊ณ , ์ธ์ ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ณด๋ค ๋ ๋์๊ณ , ์ด๋ค ๊ฒฝ์ฐ์ ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด๋ค ์ธ๊ธฐ DBMS๊ฐ ์ด๋ฏธ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. Go๋ก ์ฐ๋ฆฌ๋ง์ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ "๋์ ํธ๋ก" ์ฐ๋ฆฌ๋ ๊ธฐ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๋ฆฌ๋ง์ ์ด๊ณ ์ ์ ๋ฌธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค.
์ ์์
์ด ์ฌ๋ฌ๋ถ๊ป ์ ์ฉํ๊ณ ํฅ๋ฏธ๋ก์ธ ์ ์๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค. ๊ฐ์๋ค!
์๊ฐ

์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! ์ง๊ธ์ 6์์ด๊ณ , ์ฐ๋ฆฌ ๋ชจ๋ ์์ฒญ ํผ๊ณคํด์. ์ง๋ฃจํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค ์ด๋ก ์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ์ ์ง๊ธ์ด ๋ฑ โโ๋ง๋ ๋์ฃ ? ๊ฑฑ์ ํ์ง ๋ง์ธ์. ์ฌ๊ธฐ์ ๊ธฐ์ ๋ช ์ค์ ์์ค ์ฝ๋๊ฐ ์์ ๊ฑฐ์์. ๐
์ง์งํ๊ฒ ๋งํด์, ๋ณด๊ณ ์๋ ์ ๋ณด๋ก ๋์ณ๋๊ณ ์๊ณ , ์ฐ๋ฆฌ์๊ฒ๋ ์๊ฐ์ด ๋ง์ง ์์ต๋๋ค. ๊ทธ๋ผ ์์ํด๋ณผ๊น์.

์ค๋์ ๋ค์ ๋ด์ฉ์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ์ง์๋ ๋ฌด์์ธ๊ฐ?
- ๋นํธ๋งต ์ธ๋ฑ์ค๋ ๋ฌด์์ ๋๊น?
- ์ด๋์์ ์ฌ์ฉ๋๊ณ ์ด๋์์ ์ฌ์ฉ๋์ง ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์ ๋ ๋ฌด์์ธ๊ฐ;
- Go์์๋ ๊ฐ๋จํ๊ฒ ๊ตฌํํ์ง๋ง ์ปดํ์ผ๋ฌ๋ ์ฝ๊ฐ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค.
- ์กฐ๊ธ ๋ ๊ฐ๋จํ์ง๋ง Go ์ด์ ๋ธ๋ฆฌ๋ก ํจ์ฌ ๋ ์์ฐ์ ์ธ ๊ตฌํ์ ๋๋ค.
- ๋นํธ๋งต ์ธ๋ฑ์ค์ "๋ฌธ์ "
- ๊ธฐ์กด ๊ตฌํ.
๊ทธ๋ ๋ค๋ฉด ์ง์๋ ๋ฌด์์ผ๊น์?

์ธ๋ฑ์ค๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ธ์ ์ฐ๋ฆฌ๊ฐ ์ ์ง ๊ด๋ฆฌํ๊ณ ์
๋ฐ์ดํธํ๋ ๋ณ๋์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์
๋๋ค. ์ด๋ ๊ฒ์ ์๋๋ฅผ ๋์ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ธ๋ฑ์ค๊ฐ ์๋ค๋ฉด ๊ฒ์์ ์ํด ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ํ์ํด์ผ ํฉ๋๋ค(์ ์ฒด ์ค์บ์ด๋ผ๊ณ ํ๋ ํ๋ก์ธ์ค). ์ด ํ๋ก์ธ์ค๋ ์ ํ ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋๋ฅผ ๊ฐ์ต๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒญ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฉฐ ์ ํ ๋ณต์ก๋๋ ๋๋ฌด ๋๋ฆฝ๋๋ค. ์ด์์ ์ผ๋ก๋ ๋์์ ์ด๊ฑฐ๋ ์์์ ์ธ ๊ฐ์ ์ป๊ฒ ๋ ๊ฒ์
๋๋ค.
์ด๊ฒ์ ๊ดํํ๊ณ ๋ณต์กํ ์ฃผ์ ์ด๋ฉฐ ๋ฏธ๋ฌํ ์ฐจ์ด์ ์์ถฉ ๊ด๊ณ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์์ญ ๋ ๊ฐ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ฐ๋ฐ๊ณผ ์ฐ๊ตฌ๋ฅผ ๊ฑฐ์น ๊ฒฐ๊ณผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋ฅผ ๋ง๋๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ ๊ทผ ๋ฐฉ์์ ๋ช ๊ฐ์ง์ ๋ถ๊ณผํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.

์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ฒ์ ๊ณต๊ฐ์ ๊ณ์ธต์ ์ผ๋ก ์ค์ฌ์ ๊ฒ์ ๊ณต๊ฐ์ ๋ ์์ ๋ถ๋ถ์ผ๋ก ๋๋๋ ๊ฒ์
๋๋ค.
์ฐ๋ฆฌ๋ ๋ณดํต ๋ค์ํ ์ข ๋ฅ์ ๋๋ฌด๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์ ์ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ท์ฅ์ ์ฌ๋ฌ ๊ฐ์ง ์ฃผ์ ๋ก ๊ตฌ๋ถ๋ ์์ ์ฌ๋ฃ ์์๊ฐ ๋ค์ด ์๋ ํฐ ์ฌ๋ฃ ์์๊ฐ ์์ต๋๋ค. ๋ง์ฝ ๋ฌผํ์ด ํ์ํ๋ค๋ฉด, "์ฟ ํค"๋ผ๊ณ ์ ํ ์์๋ณด๋ค๋ "๋ฌผํ"์ด๋ผ๊ณ ์ ํ ์์์์ ์ฐพ์ ๊ฐ๋ฅ์ฑ์ด ๋์ง ์๋์?

๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ํ๋ ์์๋ ์์ ๊ทธ๋ฃน์ ์ฆ์ ์ ํํ๋ ๊ฒ์
๋๋ค. ์ด ์์
์ ํด์ ๋งต์ด๋ ์ญ ์ธ๋ฑ์ค์์ ์ํ๋ฉ๋๋ค. ํด์ ๋งต์ ์ฌ์ฉํ๋ ๊ฒ์ ์ด์ ์์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ๋ค๋ง, ์์๋ฅผ ๋ด์ ์์ ๋์ ์ท์ฅ์ ์ต์ข
ํ๋ชฉ์ด ๋ค์ด ์๋ ์ฌ๋ฌ ๊ฐ์ ์์ ์์๊ฐ ์๋ค๋ ์ ์ด ๋ค๋ฆ
๋๋ค.

์ธ ๋ฒ์งธ ์ ๊ทผ๋ฒ์ ๊ฒ์์ ํ์์ฑ์ ์์ ๋ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ๋ ๋ธ๋ฃธ ํํฐ๋ ๋ป๊พธ๊ธฐ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฆ์ ๋ต๋ณ์ ์ ๊ณตํ๋ฏ๋ก ๊ฒ์ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค.

๋ง์ง๋ง ๋ฐฉ๋ฒ์ ํ๋ ํ๋์จ์ด๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ํ์ ์ต๋ํ ํ์ฉํ๋ ๊ฒ์
๋๋ค. ๋นํธ๋งต ์ธ๋ฑ์ค์์ ์ ํํ ์ด๋ฐ ์ผ์ ํฉ๋๋ค. ๋ค, ์ด๋ฅผ ์ฌ์ฉํ ๋ ๋๋ก๋ ์์ธ ์ ์ฒด๋ฅผ ์ดํด๋ด์ผ ํ์ง๋ง, ์ฐ๋ฆฌ๋ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์์
์ ์ํํฉ๋๋ค.
์ ๊ฐ ๋งํ๋ฏ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋ผ๋ ์ฃผ์ ๋ ๊ด๋ฒ์ํ๊ณ ํํ์ด ๋ง์ต๋๋ค. ์ด๋ ๋๋ก๋ ์ฌ๋ฌ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๋์์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ฒ์ ์๋๋ฅผ ํ์ธต ๋ ๋์ฌ์ผ ํ๊ฑฐ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ ์ ํ์ ๋ค๋ฃจ์ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ์ต๋๋ค.
์ค๋์ ์ธ๊ธ๋ ์ ๊ทผ ๋ฐฉ์ ์ค ๊ฐ์ฅ ์ ์๋ ค์ง์ง ์์ ๋นํธ๋งต ์ธ๋ฑ์ค์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค.
์ ๊ฐ ์ด ์ฃผ์ ์ ๋ํด ๋งํ ์๊ฒฉ์ด ์๋์?

์ ๋ Badoo์์ ํ ๋ฆฌ๋๋ก ์ผํ๊ณ ์์ต๋๋ค(์๋ง๋ ์ ํฌ์ ๋ค๋ฅธ ์ ํ์ธ Bumble์ ๋ ์ ์๊ณ ๊ณ์ค ๊ฒ๋๋ค). ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ ์ธ๊ณ์ ์ผ๋ก 400์ต ๋ช
์ด ๋๋ ์ฌ์ฉ์๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ, ๊ทธ๋ค์๊ฒ ๊ฐ์ฅ ์ ๋ง๋ ๊ฒ์ ์ ํํ๊ธฐ ์ํด ๋ง์ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ํฌํจํ ๋ง์ถคํ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋นํธ๋งต ์ธ๋ฑ์ค๋ ๋ฌด์์ผ๊น์?

์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ๋นํธ๋งต ์ธ๋ฑ์ค๋ ๋นํธ๋งต์ด๋ ๋นํธ์
์ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํํฉ๋๋ค. ์์์ ๋ณด๋ฉด ์ด ์์ธ์ ์ผ๋ถ ๊ฐ์ฒด(์: ์ฌ๋)์ ๊ทธ ์์ฑ ๋๋ ๋งค๊ฐ๋ณ์(๋์ด, ๋ ์๊น ๋ฑ)๋ฅผ ๋ํ๋ด๋ ํ๋ ์ด์์ ๋นํธ๋งต๊ณผ ๋นํธ ์ฐ์ฐ(AND, OR, NOT)์ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ฟผ๋ฆฌ์ ๋ตํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.

๋นํธ๋งต ์ธ๋ฑ์ค๋ ๋ฎ์ ์นด๋๋๋ฆฌํฐ(์: "๋ ์๊น" ๋๋ "๊ฒฐํผ ์ํ" ๋๋น "๋์ฌ์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ")๋ฅผ ๊ฐ๋ ์ฌ๋ฌ ์ด์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ๊ฒฐํฉํ๋ ๊ฒ์ ์ฌ๋ก์ ๊ฐ์ฅ ์ ํฉํ๊ณ ๋งค์ฐ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ค๊ณ ํฉ๋๋ค. ํ์ง๋ง ๋์ค์ ์ด๊ฒ์ด ๋์ ๊ธฐ์ ์ด์๋ ์ ์๋ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋นํธ๋งต ์ธ๋ฑ์ค์ ๊ฐ์ฅ ๊ฐ๋จํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

๋ค์๊ณผ ๊ฐ์ ์ด์ง ์์ฑ์ ๊ฐ์ง ๋ชจ์คํฌ๋ฐ ๋ ์คํ ๋ ๋ชฉ๋ก์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
- ์งํ์ฒ ๊ทผ์ฒ
- ๊ฐ์ธ ์ฃผ์ฐจ์ฅ์ด ์์ต๋๋ค
- ๋ฒ ๋๋ค๊ฐ ์์ต๋๋ค.
- ํ ์ด๋ธ์ ์์ฝํ ์ ์์ต๋๋ค(์์ฝ ๊ฐ๋ฅ);
- ์ฑ์์ฃผ์์์๊ฒ ์ ํฉํจ (๋น๊ฑด ์นํ์ )
- ๊ฐ๋น์ผ.

๊ฐ ๋ ์คํ ๋์ 0๋ถํฐ ์์ํ๋ ๋ฒํธ๋ฅผ ๋ถ์ฌํ๊ณ 6๊ฐ์ ๋นํธ๋งต(๊ฐ ๊ธฐ๋ฅ๋น ํ๋์ฉ)์ ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ์คํ ๋์ ํด๋น ๋ถ๋์ฐ์ด ์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ์ด๋ฌํ ๋นํธ๋งต์ ์ฑ์๋๋ค. ๋ ์คํ ๋ 4์ ๋ฒ ๋๋ค๊ฐ ์๋ ๊ฒฝ์ฐ "๋ฒ ๋๋ค ์์" ๋นํธ๋งต์ ๋นํธ #4๊ฐ 1๋ก ์ค์ ๋ฉ๋๋ค(๋ฒ ๋๋ค๊ฐ ์๋ ๊ฒฝ์ฐ 0).

์ด์ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ฐ๋จํ ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ์ ๋ตํ ์ ์์ต๋๋ค.
- "์ฑ์์ฃผ์์ ์นํ์ ์ธ ๋ ์คํ ๋์ ๋ณด์ฌ์ฃผ์ธ์"
- "๋ฒ ๋๋ค ์๊ณ ์์ฝ์ด ๊ฐ๋ฅํ ์ ๋ ดํ ๋ ์คํ ๋์ ์๋ ค์ฃผ์ธ์."


์ด๋ป๊ฒ? ํ๋ฒ ์ดํด๋ณด์ฃ . ์ฒซ ๋ฒ์งธ ์์ฒญ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ "์ฑ์์ฃผ์ ์นํ์ " ๋นํธ๋งต์ ๊ฐ์ ธ์์ ํด๋น ๋นํธ๋ฅผ ํ์ํ๋ ๋ ์คํ ๋ ๋ชฉ๋ก์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ๋ฟ์
๋๋ค.


๋ ๋ฒ์งธ ์ง๋ฌธ์ ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค. "๋น์ผ" ๋นํธ๋งต์์ ๋นํธ NOT ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์ ๋ ดํ ๋ ์คํ ๋ ๋ชฉ๋ก์ ๊ตฌํ ๋ค์, ์ด๋ฅผ "์์ฝ ๊ฐ๋ฅ" ๋นํธ๋งต๊ณผ AND ์ฐ์ฐํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ "๋ฒ ๋๋ค ๊ฐ๋ฅ" ๋นํธ๋งต๊ณผ AND ์ฐ์ฐํด์ผ ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ค๋ ๋นํธ๋งต์๋ ๋ชจ๋ ๊ธฐ์ค์ ์ถฉ์กฑํ๋ ์์ค ๋ชฉ๋ก์ด ํฌํจ๋ฉ๋๋ค. ์ด ์์์๋ "Youth"๋ผ๋ ๋ ์คํ ๋๋ง ์์ต๋๋ค.


์ฌ๊ธฐ์๋ ๋ง์ ์ด๋ก ์ด ์์ง๋ง ๊ฑฑ์ ํ์ง ๋ง์ธ์. ๊ณง ์ฝ๋๋ฅผ ๋ณผ ์ ์์ ๊ฒ๋๋ค.
๋นํธ๋งต ์ธ๋ฑ์ค๋ ์ด๋์ ์ฌ์ฉ๋๋์?

๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ๊ตฌ๊ธ์์ ๊ฒ์ํ๋ฉด, ๋ต๋ณ์ 90%๊ฐ ์ด๋ค ์์ผ๋ก๋ Oracle DB์ ๊ด๋ จ์ด ์์ต๋๋ค. ํ์ง๋ง ๋ค๋ฅธ DBMS๋ ์ด ๋ฉ์ง ๊ธฐ๋ฅ์ ์ง์ํ ๊ฐ๋ฅ์ฑ์ด ์์ง ์๋์? ์ค๋ง.
์ฃผ์ ์ฉ์์ ๋ชฉ๋ก์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

MySQL์ ์์ง ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ์ง์ํ์ง ์์ง๋ง ์ด ์ต์
์ ์ถ๊ฐํ๋ ค๋ ์ ์์ด ์์ต๋๋ค.).
PostgreSQL์ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ์ง์ํ์ง ์์ง๋ง, ๊ฐ๋จํ ๋นํธ๋งต๊ณผ ๋นํธ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ค๋ฅธ ์ธ๋ฑ์ค์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํฉ๋๋ค.
Tarantool์๋ ๋นํธ์ ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํ ๊ฐ๋จํ ๊ฒ์์ ์ง์ํฉ๋๋ค.
Redis์๋ ๊ฐ๋จํ ๋นํธ ํ๋๊ฐ ์์ต๋๋ค) ๊ฒ์ํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
MongoDB๋ ์์ง ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ์ง์ํ์ง ์์ง๋ง, ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๋ ์ ์๋ ์์ต๋๋ค.
Elasticsearch๋ ๋ด๋ถ์ ์ผ๋ก ๋นํธ๋งต์ ์ฌ์ฉํฉ๋๋ค).

- ํ์ง๋ง ์ฐ๋ฆฌ ์ง์๋ ์๋ก์ด ์ด์์ด ์๊ฒผ์ต๋๋ค. ๋ฐ๋ก ํ๋ก์ฌ์ ๋๋ค. ์ด๋ Go๋ก ์์ฑ๋ ์๋ก์ด ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋นํธ๋งต ์ธ๋ฑ์ค๋ง ํฌํจ๋์ด ์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ทธ๋ ์ ๋ํด์๋ ์ ์ ํ์ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
Go์์์ ๊ตฌํ
ํ์ง๋ง ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ์ด์ ๋ ๋ฌด์์ผ๊น์? ์ด ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ ์ Go์์ ๋งค์ฐ ๊ฐ๋จํ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ๊ตฌํํ ์๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.

๋นํธ๋งต์ ๋ณธ์ง์ ์ผ๋ก ๋จ์ง ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์
๋๋ค. Go์์๋ ์ด๋ฅผ ์ํด ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
๋ ์คํ ๋ ๊ธฐ๋ฅ๋น ๋นํธ๋งต์ด ํ๋์ฉ ์์ผ๋ฉฐ, ๋นํธ๋งต์ ๊ฐ ๋นํธ๋ ํน์ ๋ ์คํ ๋์ ํด๋น ๊ธฐ๋ฅ์ด ์๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ค๋๋ค.

๋ ๊ฐ์ ๋์ฐ๋ฏธ ํจ์๊ฐ ํ์ํฉ๋๋ค. ํ๋๋ ๋นํธ๋งต์ ๋ฌด์์ ๋ฐ์ดํฐ๋ก ์ฑ์ฐ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฌด์์์ด์ง๋ง, ๋ ์คํ ๋์ด ๊ฐ ์์ฑ์ ๊ฐ์ง ํ๋ฅ ์ ์ผ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ์คํฌ๋ฐ์๋ ์์ฝ์ด ๋ถ๊ฐ๋ฅํ ๋ ์คํ ๋์ด ๊ฑฐ์ ์๊ณ , ๊ทธ ์ค ์ฝ 20%๋ ์ฑ์์ฃผ์์์๊ฒ ์นํ์ ์ธ ๊ณณ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ ๋ฒ์งธ ๊ธฐ๋ฅ์ ๋นํธ๋งต์ ๋ ์คํ ๋ ๋ชฉ๋ก์ผ๋ก ๋ณํํฉ๋๋ค.


"ํํฐ์ค๊ฐ ์๊ณ ์์ฝ์ด ๊ฐ๋ฅํ ์ ๋ ดํ ๋ ์คํ ๋์ ๋ณด์ฌ์ฃผ์ธ์"๋ผ๋ ์ง์์ ๋ตํ๋ ค๋ฉด NOT๊ณผ AND๋ผ๋ ๋ ๊ฐ์ ๋นํธ ์ฐ์ฐ์ด ํ์ํฉ๋๋ค.
๋ ๋ณต์กํ AND NOT ์ฐ์ฐ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ฝ๊ฐ ๋จ์ํํ ์ ์์ต๋๋ค.
๊ฐ ์์
๋ง๋ค ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ ๋ค ์ฌ๋ผ์ด์ค๋ฅผ ์ดํด๋ณด๊ณ , ๊ฐ ์ฌ๋ผ์ด์ค์์ ํด๋น ์์๋ฅผ ๊ฐ์ ธ์ ๋นํธ ์ฐ์ฐ์ผ๋ก ๊ฒฐํฉํ ๋ค์, ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ๊ณผ ์ฌ๋ผ์ด์ค์ ๋ฃ์ต๋๋ค.

์ด์ ์ฐ๋ฆฌ๋ ๋นํธ๋งต๊ณผ ํจ์๋ฅผ ์ฌ์ฉํด ๊ฒ์์ด์ ๋ตํ ์ ์์ต๋๋ค.

ํจ์๊ฐ ๋งค์ฐ ๊ฐ๋จํ๊ณ ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ๊ฒฐ๊ณผ ์ฌ๋ผ์ด์ค๋ฅผ ๋ฐํํ์ง ์์ ๋ง์ ๋น์ฉ์ ์ ๊ฐํ์ง๋ง ์ฑ๋ฅ์ ๊ทธ๋ ๊ฒ ๋์ง ์์ต๋๋ค.
pprof๋ก ์ฝ๊ฐ ํ๋กํ์ผ๋ง์ ํ ํ, Go ์ปดํ์ผ๋ฌ์ ๋งค์ฐ ๊ฐ๋จํ์ง๋ง ๋งค์ฐ ์ค์ํ ์ต์ ํ ๊ธฐ๋ฅ์ธ ํจ์ ์ธ๋ผ์ด๋์ด ๋น ์ก๋ค๋ ๊ฒ์ ์์์ต๋๋ค.

๋ฌธ์ ๋, Go ์ปดํ์ผ๋ฌ๊ฐ ์ฌ๋ผ์ด์ค๋ฅผ ํต๊ณผํ๋ ๋ฃจํ๋ฅผ ๋ชน์ ๋๋ ค์ํ๊ณ , ๊ทธ๋ฌํ ๋ฃจํ๊ฐ ํฌํจ๋ ํจ์๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋จํธํ ๊ฑฐ๋ถํ๋ค๋ ๊ฒ์
๋๋ค.

ํ์ง๋ง ์ ๋ ๋๋ ค์ํ์ง ์๊ณ , ์๋ ์ฒ๋ผ ๋ฃจํ ๋์ goto๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ฌ๋ฅผ ์์ผ ์ ์์ต๋๋ค.


๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๋ถ์ด ๋ณผ ์ ์๋ฏ์ด ์ด์ ์ปดํ์ผ๋ฌ๋ ์ฐ๋ฆฌ ํจ์๋ฅผ ์๋์ผ๋ก ์ธ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค! ๊ทธ ๊ฒฐ๊ณผ, ์ฝ 2๋ง์ดํฌ๋ก์ด๋ฅผ ์ ์ฝํ ์ ์์์ต๋๋ค. ๋์์ง ์๋ค์!

๋ ๋ฒ์งธ ๋ณ๋ชฉ ํ์์ ์ด์
๋ธ๋ฆฌ ์ถ๋ ฅ์ ์์ธํ ์ดํด๋ณด๋ฉด ์ฝ๊ฒ ์ ์ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฃจํ ๋ด๋ถ์ ์ฌ๋ผ์ด์ค ๋ฒ์ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋ฌธ์ ๋ Go๊ฐ ์์ ํ ์ธ์ด๋ผ๋ ์ ์ธ๋ฐ, ์ปดํ์ผ๋ฌ๋ ์ธ ๊ฐ์ ์ธ์(์ธ ๊ฐ์ ์ฌ๋ผ์ด์ค)์ ํฌ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅผ๊น ๋ด ๊ฑฑ์ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ก ์ ์ผ๋ก๋ ๋ฒํผ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๋ชจ๋ ์ฌ๋ผ์ด์ค์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ค๋ ๊ฒ์ ๋ณด์ฌ ์ปดํ์ผ๋ฌ๋ฅผ ์์ฌ์์ผ ๋ณด๊ฒ ์ต๋๋ค. ํจ์์ ์์ ๋ถ๋ถ์ ๊ฐ๋จํ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.

์ด๋ฅผ ๋ณด๊ณ ์ปดํ์ผ๋ฌ๋ ๊ธฐ๊บผ์ด ๊ฒ์ฌ๋ฅผ ๊ฑด๋๋ฐ๊ณ , ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ 500๋๋
ธ์ด๋ฅผ ๋ ์ ์ฝํ๊ฒ ๋ฉ๋๋ค.
๋๋ ๋ฐฐ์น
๋ค, ์ฐ๋ฆฌ๋ ๊ฐ๋จํ ๊ตฌํ์ผ๋ก ์ด๋ ์ ๋ ์ฑ๋ฅ์ ๋์ด๋ด๋ ๋ฐ ์ฑ๊ณตํ์ง๋ง, ๊ทธ ๊ฒฐ๊ณผ๋ ํ์ฌ ํ๋์จ์ด๋ก ๊ฐ๋ฅํ ๊ฒ๋ณด๋ค ํจ์ฌ ๋๋นด์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ํ๋ ์ผ์ ๊ธฐ๋ณธ์ ์ธ ๋นํธ ์ฐ์ฐ๋ฟ์ด๋ฉฐ, ์ฐ๋ฆฌ์ ํ๋ก์ธ์๋ ์ด๋ฅผ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ํํฉ๋๋ค. ํ์ง๋ง ๋ถํํ๋ ์ฐ๋ฆฌ๋ ํ๋ก์ธ์์ ๋งค์ฐ ์์ ์์ ๋ง์ "๊ณต๊ธ"ํฉ๋๋ค. ์ฐ๋ฆฌ์ ํจ์๋ ๋ฐ์ดํธ ๋จ์๋ก ์์ ์ ์ํํฉ๋๋ค. UInt8 ์ฌ๋ผ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด 64๋ฐ์ดํธ ์ฒญํฌ๋ก ์์ ํ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋งค์ฐ ์ฝ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.

๋ณด์๋ค์ํผ, ์ด ์์ ๋ณํ๋ก ๋ฐฐ์น ํฌ๊ธฐ๊ฐ 8๋ฐฐ ๋์ด๋์ ํ๋ก๊ทธ๋จ ์๋๊ฐ 8๋ฐฐ ๋นจ๋ผ์ก์ต๋๋ค. ๋งํ์๋ฉด ์ด๋์ ์ ํ์ ์
๋๋ค.

์ด์ ๋ธ๋ฆฌ ์ธ์ด ๊ตฌํ

ํ์ง๋ง ์ด๊ฒ์ด ๋์ ์๋๋๋ค. ์ ํฌ์ ํ๋ก์ธ์๋ 16, 32, ์ฌ์ง์ด 64๋ฐ์ดํธ ํฌ๊ธฐ์ ์ฒญํฌ๋ก๋ ์์
ํ ์ ์์ต๋๋ค. ์ด๋ฐ "๊ด๋ฒ์ํ" ์ฐ์ฐ์ SIMD(Single Instruction Multiple Data)๋ผ๊ณ ํ๋ฉฐ, ์ด๋ฐ ์ฐ์ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋ณํํ๋ ๊ณผ์ ์ ๋ฒกํฐํ๋ผ๊ณ ํฉ๋๋ค.
์ํ๊น๊ฒ๋ Go ์ปดํ์ผ๋ฌ๋ ํ๋ฅญํ ๋ฒกํฐํ๊ธฐ์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋๋ค. ํ์ฌ Go ์ฝ๋๋ฅผ ๋ฒกํฐํํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ Go ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์์ ์ ์๋์ผ๋ก ์์ฑํ๋ ๊ฒ์ ๋๋ค.

Go ์ด์
๋ธ๋ฌ๋ ์ด์ํ ์ง์น์ด๋ค. ์ฌ๋ฌ๋ถ์ ์ด์
๋ธ๋ฆฌ ์ธ์ด๊ฐ ์์ ์ด ์์ฑํ๊ณ ์๋ ์ปดํจํฐ์ ์ํคํ
์ฒ์ ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋ผ ์๋ค๋ ๊ฑธ ์๊ณ ์์ ๊ฒ๋๋ค. ํ์ง๋ง Go์์๋ ๊ทธ๋ ์ง ์์ต๋๋ค. Go ์ด์
๋ธ๋ฆฌ๋ IRL(์ค๊ฐ ํํ ์ธ์ด)์ ๋ ๊ฐ๊น์ต๋๋ค. ์ฆ, ์ฌ์ค์ ํ๋ซํผ์ ๋
๋ฆฝ์ ์
๋๋ค. Rob Pike๊ฐ ํ๋ฅญํ ๊ณต์ฐ์ ํผ์ณค์ต๋๋ค. ์ด ์ฃผ์ ์ ๋ํด์๋ ๋ช ๋
์ ๋ด๋ฒ์ GopherCon์์ ๋ค๋ฃจ์์ต๋๋ค.
๋ํ Go๋ ๊ธฐ์กด์ AT&T์ Intel ํฌ๋งท๊ณผ ๋ค๋ฅธ ํน์ดํ Plan 9 ํฌ๋งท์ ์ฌ์ฉํฉ๋๋ค.

Go ์ด์
๋ธ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ ๊ทธ๋ค์ง ์ฌ๋ฏธ์๋ ์ผ์ด ์๋๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๋๋ค.
ํ์ง๋ง ๋คํํ๋ Go ์ด์
๋ธ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋ ๋ ๊ฐ์ง ๊ณ ๊ธ ๋๊ตฌ๊ฐ ์ด๋ฏธ ์์ต๋๋ค. ๋ฐ๋ก PeachPy์ avo์
๋๋ค. ๋ ์ ํธ๋ฆฌํฐ ๋ชจ๋ ๊ฐ๊ฐ Python๊ณผ Go๋ก ์์ฑ๋ ์์ ์์ค ์ฝ๋์์ Go ์ด์
๋ธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.

์ด๋ฌํ ์ ํธ๋ฆฌํฐ๋ ๋ ์ง์คํฐ ํ ๋น, ๋ฃจํ ์์ฑ ๋ฑ์ ์์
์ ๊ฐ์ํํ๋ฉฐ, ์ ๋ฐ์ ์ผ๋ก Go์์ ์ด์
๋ธ๋ฆฌ ํ๋ก๊ทธ๋๋ฐ์ ์ธ๊ณ์ ์ง์
ํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
avo๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ Go ํ๋ก๊ทธ๋จ๊ณผ ๊ฑฐ์ ๋น์ทํ ๊ฒ์
๋๋ค.

์ด๊ฒ์ AVO ํ๋ก๊ทธ๋จ์ ๊ฐ์ฅ ๋จ์ํ ์์
๋๋ค. main() ํจ์๊ฐ ์๋๋ฐ, ์ด ํจ์๋ ๊ทธ ์์ฒด ๋ด์ Add() ํจ์๋ฅผ ์ ์ํ๊ณ ์์ผ๋ฉฐ, ์ด ํจ์์ ๋ชฉ์ ์ ๋ ์ซ์๋ฅผ ๋ํ๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฆ์ผ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ ์ ํฉํ ํ๋ก์ธ์ ๋ ์ง์คํฐ ์ค ํ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ฐ๋ฏธ ํจ์๊ฐ ์์ต๋๋ค. ADDQ์์ ๋ณผ ์ ์๋ฏ์ด, ๊ฐ ํ๋ก์ธ์ ์์
์๋ avo์ ํด๋นํ๋ ํจ์๊ฐ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํ๋ ๋์ฐ๋ฏธ ํจ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

go generate๋ฅผ ํธ์ถํ๋ฉด avo์์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ณ ๊ทธ ๊ฒฐ๊ณผ ๋ ๊ฐ์ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
- Go ์ด์ ๋ธ๋ฆฌ์์ ๊ฒฐ๊ณผ ์ฝ๋์ .s๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- stub.go์๋ Go์ ์ด์ ๋ธ๋ฆฌ๋ผ๋ ๋ ์ธ๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ ํจ์ ํค๋๊ฐ ์์ต๋๋ค.

์ด์ avo๊ฐ ๋ฌด์์ ํ๋์ง, ์ด๋ป๊ฒ ํ๋์ง ์ดํด๋ณด์์ผ๋ ํจ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ ๋ ํจ์์ ์ค์นผ๋ผ ๋ฐ ๋ฒกํฐ(SIMD) ๋ฒ์ ์ ๋ชจ๋ ๊ตฌํํ์ต๋๋ค.
๋จผ์ ์ค์นผ๋ผ ๋ฒ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

์ด์ ์์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฐ๋ฆฌ๋ ์์ ๋กญ๊ณ ์ ํจํ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ฅผ ์์ฒญํ๋ฏ๋ก ์ธ์์ ๋ํ ์คํ์
๊ณผ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ ํ์๊ฐ ์์ต๋๋ค. ์๋ณด๋ ์ฐ๋ฆฌ๋ฅผ ๋์ ํด ์ด ๋ชจ๋ ์ผ์ ํด์ค๋๋ค.

์ด์ ์๋ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ Go ์ปดํ์ผ๋ฌ๋ฅผ ์์ด๊ธฐ ์ํด ๋ผ๋ฒจ๊ณผ goto(๋๋ ์ ํ)๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ด์ ๋ ์ฒ์๋ถํฐ ์ด ์์
์ ์ฌ์ฉํฉ๋๋ค. ์์ ์ ์ฃผ๊ธฐ๊ฐ ๋ ๋์ ์์ค์ ๊ฐ๋
์ด๋ผ๋ ๊ฒ์
๋๋ค. ์ด์
๋ธ๋ฆฌ์์๋ ๋ผ๋ฒจ๊ณผ ์ ํ๋ง ์์ต๋๋ค.

๋๋จธ์ง ์ฝ๋๋ ์ด์ ์ต์ํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ๋ ๋ผ๋ฒจ๊ณผ ์ ํ๋ฅผ ์ฌ์ฉํด ๋ฃจํ๋ฅผ ์๋ฎฌ๋ ์ด์
ํ๊ณ , ๋ ์ฌ๋ผ์ด์ค์์ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ๊ฐ์ ธ์ ๋นํธ ์ฐ์ฐ(์ด ๊ฒฝ์ฐ์๋ AND NOT)์ผ๋ก ๊ฒฐํฉํ ๋ค์, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ๊ณผ ์ฌ๋ผ์ด์ค์ ๋ฃ์ต๋๋ค. ๋ชจ๋.

์ต์ข
์ด์
๋ธ๋ฆฌ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์คํ์
๊ณผ ํฌ๊ธฐ(๋
น์์ผ๋ก ๊ฐ์กฐ ํ์)๋ฅผ ๊ณ์ฐํ ํ์๊ฐ ์์๊ณ , ์ฌ์ฉ๋ ๋ ์ง์คํฐ(๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์)๋ฅผ ์ถ์ ํ ํ์๋ ์์์ต๋๋ค.

์ด์
๋ธ๋ฆฌ ๊ตฌํ์ ์ฑ๋ฅ์ ๊ฐ์ฅ ๋ฐ์ด๋ Go ๊ตฌํ์ ์ฑ๋ฅ๊ณผ ๋น๊ตํด๋ณด๋ฉด ๋์ผํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์์๋ ์ผ์ด์์ต๋๋ค. ๊ฒฐ๊ตญ, ์ฐ๋ฆฌ๋ ํน๋ณํ ์ผ์ ํ ๊ฒ ์๋๋๋ค. Go ์ปดํ์ผ๋ฌ๊ฐ ํ๋ ์ผ์ ๊ทธ๋๋ก ์ฌํํ์ ๋ฟ์
๋๋ค.
์ํ๊น๊ฒ๋, ์ด์ ๋ธ๋ฆฌ๋ก ์์ฑ๋ ํจ์๋ฅผ ์ปดํ์ผ๋ฌ์ ์ธ๋ผ์ธ์ผ๋ก ์ ์ฉํ๋๋ก ๊ฐ์ ํ ์๋ ์์ต๋๋ค. ํ์ฌ Go ์ปดํ์ผ๋ฌ์๋ ์ด ๊ธฐ๋ฅ์ด ์์ง๋ง, ๊ฝค ์ค๋ซ๋์ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด ๋ฌ๋ผ๋ ์์ฒญ์ด ์์์ต๋๋ค.
์ด๊ฒ์ด ์ด์ ๋ธ๋ฆฌ์์ ์์ ํจ์๋ฅผ ์ฌ์ฉํด๋ ์๋ฌด๋ฐ ์ด์ ์ ์ป์ ์ ์๋ ์ด์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ํฐ ํจ์๋ฅผ ์์ฑํ๊ฑฐ๋, ์๋ก์ด math/bits ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ด์ ๋ธ๋ฆฌ๋ฅผ ํผํด์ผ ํฉ๋๋ค.
์ด์ ํจ์์ ๋ฒกํฐ ๋ฒ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

์ด ์์ ์์๋ AVX2๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ผ๋ฏ๋ก 32๋ฐ์ดํธ ์ฒญํฌ์์ ์๋ํ๋ ์์
์ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ์ฝ๋ ๊ตฌ์กฐ๋ ์ค์นผ๋ผ ๋ฒ์ ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ๋งค๊ฐ๋ณ์ ๋ก๋, ๋ฌด๋ฃ ์ผ๋ฐ ๋ ์ง์คํฐ ์์ฒญ ๋ฑ์
๋๋ค.

์๋ก์ด ๊ธฐ๋ฅ ์ค ํ๋๋ ๋ ๋์ ๋ฒกํฐ ์ฐ์ฐ์ด ํน์ํ๊ณ ๋์ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์
๋๋ค. 32๋ฐ์ดํธ ์ฒญํฌ์ ๊ฒฝ์ฐ Y ์ ๋์ฌ๊ฐ ๋ถ์ ๋ ์ง์คํฐ์
๋๋ค. ๊ทธ๋์ ์ฝ๋์์ YMM() ํจ์๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์
๋๋ค. 512๋นํธ ์ฒญํฌ๋ฅผ ์ฌ์ฉํ๋ AVX-64๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ ๋์ฌ๋ Z๊ฐ ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ํ์ ์ ๋ฃจํ ์ธ๋กค๋ง์ด๋ผ๋ ์ต์ ํ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒ์
๋๋ค. ์ฆ, ๋ฃจํ์ ์์ ๋ถ๋ถ์ผ๋ก ์ด๋ํ๊ธฐ ์ ์ 8๊ฐ์ ๋ฃจํ ์ฐ์ฐ์ ์๋์ผ๋ก ์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ์ต์ ํ๋ ์ฝ๋์ ๋ถ๊ธฐ ์๋ฅผ ์ค์ด๊ณ , ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ ๋ ์ง์คํฐ ์์ ๋ฐ๋ผ ์ ํ๋ฉ๋๋ค.

๊ทธ๋ผ ์ฑ๋ฅ์ ์ด๋จ๊น์? ๊ทธ๋
๋ ์๋ฆ๋ค์์! Go์ ์ต๊ณ ์๋ฃจ์
๊ณผ ๋น๊ตํ์ ๋ ์ฝ 7๋ฐฐ์ ์๋ ํฅ์์ ์ป์์ต๋๋ค. ์ธ์์ ์ด์ฃ ?

ํ์ง๋ง ์ด๋ฌํ ๊ตฌํ๋ AVX-512, ํ๋ฆฌํ์นญ ๋๋ ์ฟผ๋ฆฌ ํ๋๋์ JIT(Just-In-Time) ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฌ์ ์ผ๋ก ๋ ๋นจ๋ฆฌ ์ํํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ ํ์คํ ๋ณ๋์ ๋ณด๊ณ ์์์ ๋ค๋ฃจ์ด์ผ ํ ์ฃผ์ ์
๋๋ค.
๋นํธ๋งต ์ธ๋ฑ์ค ๋ฌธ์
์ด์ Go์์ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋จํ๊ฒ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๊ณผ ์ด์
๋ธ๋ฆฌ์์ ํจ์ฌ ๋ ์ฑ๋ฅ์ด ์ข์ ๋นํธ๋งต ์ธ๋ฑ์ค ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ์์ผ๋, ๋ง์ง๋ง์ผ๋ก ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ์ด์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.

์ด์ ๋
ผ๋ฌธ์์๋ ๋นํธ๋งต ์ธ๋ฑ์ค์ ์ธ ๊ฐ์ง ๋ฌธ์ ์ ์ ์ธ๊ธํ์ง๋ง, ์ต์ ๋
ผ๋ฌธ๊ณผ ์ ๋ ๊ทธ ๋ฌธ์ ์ ๋ค์ด ๋ ์ด์ ์ ์ ํ์ง ์๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ค ๊ฐ๊ฐ์ ๋ํด ๊น์ด ์๊ฒ ๋ค๋ฃจ์ง ์๊ณ , ํผ์์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํฐ ๊ธฐ์ ๋ฌธ์
๊ทธ๋์ ๋นํธ๋งต ์ธ๋ฑ์ค๋ ๋ฎ์ ๊ธฐ์, ์ฆ ๊ฐ์ด ์ ์(์: ์ฑ๋ณ ๋๋ ๋ ์๊น) ํ๋์๋ง ์ ํฉํ๋ค๊ณ ํฉ๋๋ค. ๊ทธ ์ด์ ๋ ๋์ ๊ธฐ์์ ๊ฒฝ์ฐ ์ด๋ฌํ ํ๋๋ฅผ ์ผ๋ฐ์ ์ผ๋ก(๊ฐ ํ๋๋น 1๋นํธ) ํํํ๋ฉด ๋๋ฌด ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ , ๊ฒ๋ค๊ฐ ์ด๋ฌํ ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๋๋ฌผ๊ฒ(๋๋ฌผ๊ฒ) ์ฑ์์ง๊ธฐ ๋๋ฌธ์
๋๋ค.


๋๋ก๋ ์ซ์๋ฅผ ํํํ๋ ๋ฐ ์ฌ์ฉํ๋ ํ์ค์ ์ธ ํํ ๋ฐฉ์๊ณผ ๊ฐ์ ๋ค๋ฅธ ํํ ๋ฐฉ์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ ๊ฒ์ ๋ฐ๊พธ์ด ๋์ ๊ฒ์ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ถํ์ด์์ต๋๋ค. ์ง๋ ์์ญ ๋
๋์ ๊ณผํ์์ ์ฐ๊ตฌ์๋ค์ ๋นํธ๋งต์ ์ํ ์๋ง์ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํด ์์ต๋๋ค. ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๋นํธ๋งต ์์
์ ์ํํ๊ธฐ ์ํด ๋นํธ๋งต์ ์์ถ ํด์ ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ฆ, ์์ถ๋ ๋นํธ๋งต์์ ๋ฐ๋ก ๋นํธ๋งต ์์
์ ์ํํ ์ ์์ต๋๋ค.

์ต๊ทผ์๋ ๋นํธ๋งต๊ณผ ๊ฐ์ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์๋ ๋ฑ์ฅํ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ค์ ๋นํธ๋งต์ ์ธ ๊ฐ์ง ๋ค๋ฅธ ํํ, ์ฆ ๋นํธ๋งต ์์ฒด, ๋ฐฐ์ด, ์์ ๋นํธ ๋ฐ์ ๋์์ ์ฌ์ฉํ๊ณ ์ด๋ฅผ ๊ท ํ ์๊ฒ ์กฐ์ ํ์ฌ ์ฑ๋ฅ์ ๊ทน๋ํํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ์ต์ํํฉ๋๋ค.
๋๋ถ๋ถ์ ์ธ๊ธฐ ์๋ ์์ฉํ๋ก๊ทธ๋จ์์ ์ธ๋ถ์ง๋ ๋นํธ๋งต์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค. ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๊ตฌํ์ด ์ด๋ฏธ ์์ฒญ๋๊ฒ ๋ง์ด ์กด์ฌํ๋ฉฐ, Go์ ๋ํ ๊ตฌํ๋ 3๊ฐ ์ด์ ์์ต๋๋ค.

๋์ ์นด๋๋๋ฆฌํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ ๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋น๋(binning)์ด๋ผ๊ณ ํฉ๋๋ค. ์ฌ๋์ ํค๋ฅผ ๋ํ๋ด๋ ํ๋๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ธ์. ํค๋ ๋ถ๋ ์์์ ์ซ์์ด์ง๋ง ์ฐ๋ฆฌ ์ธ๊ฐ์ ํค๋ฅผ ๊ทธ๋ฐ ์์ผ๋ก ์๊ฐํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ์ ํค๋ 185,2cm์ 185,3cm ์ฌ์ด์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
1cm ์ด๋ด์์ ๋น์ทํ ๊ฐ์ ๊ฐ๋ ๊ทธ๋ฃน๋ผ๋ฆฌ ๊ทธ๋ฃนํํ ์ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํค๊ฐ 50cm๋ณด๋ค ์๊ณ ํค๊ฐ 250cm๋ณด๋ค ํฐ ์ฌ๋์ด ๊ฑฐ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด, ๋ณธ์ง์ ์ผ๋ก ๋ฌดํํ ๊ธฐ์๋ฅผ ๊ฐ๋ ํ๋๋ฅผ ์ฝ 200๊ฐ์ ๊ฐ์ ๊ธฐ์๋ฅผ ๊ฐ๋ ํ๋๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
๋ฌผ๋ก ํ์ํ๋ค๋ฉด ๋์ค์ ์ถ๊ฐ ํํฐ๋ง์ ํ ์๋ ์์ต๋๋ค.
๊ณ ๋์ญํญ ๋ฌธ์
๋นํธ๋งต ์ธ๋ฑ์ค์ ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ์ ์ ๋ฐ์ดํธ ๋น์ฉ์ด ๋งค์ฐ ๋ง์ด ๋ ๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ฌ์ ์ผ๋ก ์๋ฐฑ ๊ฐ์ ๋ค๋ฅธ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋์์๋ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋์ ์ ๊ทผ ๋ฌธ์ ๋ ๊ธฐํ ๊ณต์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ ๊ธ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํฐ ์ ๊ธ ์ฅ์น๊ฐ ํ๋ ์๋ ๊ฒฝ์ฐ, ์ด ์ ๊ธ ์ฅ์น๊ฐ ๋ณ๋ชฉ ํ์์ ์ผ์ผํฌ ๋ ์ ๊ธ ๊ฒฝํฉ์ด๋ผ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.

์ด ๋ฌธ์ ๋ ์ค๋ฉ์ด๋ ๋ฒ์ ๊ด๋ฆฌ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํด๊ฒฐํ๊ฑฐ๋ ์ฐํํ ์ ์์ต๋๋ค.
์ค๋ฉ์ ๊ฐ๋จํ๊ณ ์ ์๋ ค์ง ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฉํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ์ค๋ฉํ ์ ์์ต๋๋ค. ํ๋์ ํฐ ์ ๊ธ ๋์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ๊ธ์ ์ป๊ฒ ๋์ด ์ ๊ธ ๊ฒฝํฉ์ด ์์ด์ง๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ฒ์ ์ด ์ง์ ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ฒ์์ด๋ ์ฝ๊ธฐ์ ์ฌ์ฉํ ์์ธ ์ฌ๋ณธ ํ ๋ถ์ ์ฐ๊ธฐ๋ ์ ๋ฐ์ดํธ์ ์ฌ์ฉํ ์ฌ๋ณธ ํ ๋ถ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ๊ธฐ๊ฐ(์๋ฅผ ๋ค์ด 100ms ๋๋ 500ms)๋ง๋ค ํ ๋ฒ์ฉ ์ด๋ฅผ ๋ณต์ ํ๊ณ ๋ฐ๊ฟ๋๋ค. ๋ฌผ๋ก , ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฝ๊ฐ ์ง์ฐ๋๋ ๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, ๋ถํ ๋ ๋ฒ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ ๋ณต์กํ ์ฟผ๋ฆฌ
๋นํธ๋งต ์ธ๋ฑ์ค์ ๋ง์ง๋ง ๋ฌธ์ ๋ "๋ฒ์" ์ฟผ๋ฆฌ์ ๊ฐ์ ๋ ๋ณต์กํ ์ ํ์ ์ฟผ๋ฆฌ์๋ ์ ํฉํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ์ค, ์๊ฐํด๋ณด๋ฉด AND, OR ๋ฑ์ ๋นํธ ์ฐ์ฐ์ "200๋ฐ ๊ฐ์ค ์๊ธ์ด 300~XNUMX๋ฌ๋ฌ์ธ ํธํ
์ ๋ณด์ฌ์ฃผ์ธ์"์ ๊ฐ์ ์ฟผ๋ฆฌ์๋ ๊ทธ๋ค์ง ์ ํฉํ์ง ์์ต๋๋ค.

์์งํ๊ณ ๋งค์ฐ ์ด๋ฆฌ์์ ํด๊ฒฐ์ฑ
์ ๊ฐ ๋ฌ๋ฌ ๊ฐ์น์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ ๋นํธ OR ์ฐ์ฐ์ผ๋ก ๊ฒฐํฉํ๋ ๊ฒ์
๋๋ค.

์กฐ๊ธ ๋ ์ ํํ ํด๊ฒฐ์ฑ
์ ๊ทธ๋ฃนํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, 50๋ฌ๋ฌ ๋จ์์
๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ํ๋ก์ธ์ค ์๋๊ฐ 50๋ฐฐ ๋นจ๋ผ์ง ๊ฒ๋๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ ์ด๋ฌํ ์ ํ์ ์ฟผ๋ฆฌ์ ๋ง์ถฐ ํน๋ณํ ๋ง๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊ณผํ ๋
ผ๋ฌธ์์๋ ์ด๋ฅผ ๋ฒ์ ์ธ์ฝ๋ฉ๋ ๋นํธ๋งต์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.

์ด ํํ์์๋ ๋จ์ง ํ ๋นํธ๋ง ์ด๋ค ๊ฐ(์: 200)์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์๋๋ผ, ํด๋น ๊ฐ๊ณผ ๊ทธ ์์ ๋ชจ๋ ๊ฐ์ ์ค์ ํฉ๋๋ค. 200 ์ด์. 300๋ ๋์ผ: 300 ์ด์. ๋ฑ.
์ด ํํ์ ์ฌ์ฉํ๋ฉด ์ธ๋ฑ์ค๋ฅผ ๋ ๋ฒ๋ง ํ์ํ์ฌ ์ด๋ฌํ ์ข
๋ฅ์ ๊ฒ์ ์ฟผ๋ฆฌ์ ๋ตํ ์ ์์ต๋๋ค. ๋จผ์ , ๊ฐ์ค ์๊ธ์ด 300๋ฌ๋ฌ ์ดํ์ธ ํธํ
๋ชฉ๋ก์ ๊ตฌํ ๋ค์, ๊ฐ์ค ์๊ธ์ด 199๋ฌ๋ฌ ์ดํ์ธ ํธํ
๋ชฉ๋ก์ ์ ๊ฑฐํฉ๋๋ค. ์ค๋น๊ฐ ๋.

๋๋ผ์ค์ง ๋ชจ๋ฅด์ง๋ง, ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ค์ฟผ๋ฆฌ๋ ๊ฐ๋ฅํฉ๋๋ค. ๋น๊ฒฐ์ ์ขํ๋ฅผ ๊ธฐํํ์ ๋ชจ์์ผ๋ก ๋๋ฌ์ผ ์ง๋ฆฌ์ ํํ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, Google์ S2์
๋๋ค. ๋ํ์ ๋ฒํธ๋ฅผ ๋งค๊ธธ ์ ์๋ ์ธ ๊ฐ ์ด์์ ๊ต์ฐจํ๋ ์ ์ผ๋ก ํํ๋ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ฐ๋ฆฌ๋ ์ง๋ฆฌ ์ฟผ๋ฆฌ๋ฅผ "๊ฐ๊ฒฉ๋ณ"(๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ์ค์ ๋ฐ๋ผ)๋ก ์ฌ๋ฌ ๊ฐ์ ์ฟผ๋ฆฌ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
Ready ์๋ฃจ์
์ ๊ฐ ์ฌ๋ฌ๋ถ์ ๊ด์ฌ์ ์กฐ๊ธ์ด๋ผ๋ ๋์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ, ์ด์ ์ฌ๋ฌ๋ถ์ ๋ฌด๊ธฐ๊ณ ์ ๋ ๋ค๋ฅธ ์ ์ฉํ ๋๊ตฌ๊ฐ ์๊ธฐ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๋ฐ ์ผ์ด ์๊ธฐ๋ฉด ์ด๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ผ ํ ์ง ์๊ฒ ๋ ๊ฒ๋๋ค.
ํ์ง๋ง ๋ชจ๋ ์ฌ๋์ด ์ฒ์๋ถํฐ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์๊ฐ๊ณผ ์ธ๋ด์ฌ, ๋ฆฌ์์ค๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ์ ์๋๋๋ค. ํนํ SIMD๋ฅผ ์ฌ์ฉํ๋ ๋ฑ ๋์ฑ ์ง๋ณด๋ ๋ฐฉ์์ด ๊ทธ๋ ์ต๋๋ค.
๋คํํ๋ ์ฌ๋ฌ๋ถ์ ๋์ธ ์ ์๋ ๋ช ๊ฐ์ง ๊ธฐ์ฑ ์๋ฃจ์
์ด ์์ต๋๋ค.

์ธ๋ถ์ง๋ ๋นํธ๋งต
์ฒซ์งธ, ์ ๊ฐ ์ด๋ฏธ ์ธ๊ธํ ๊ฒ๊ณผ ๊ฐ์ ์ธ๋ถ์ง๋ ๋นํธ๋งต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ณธ๊ฒฉ์ ์ธ ๋นํธ๋งต ์ธ๋ฑ์ค๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ปจํ
์ด๋์ ๋นํธ ์ฐ์ฐ์ด ํฌํจ๋์ด ์์ต๋๋ค.

์ํ๊น๊ฒ๋ ํ์ฌ Go ๊ตฌํ ์ค ์ด๋ ๊ฒ๋ SIMD๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ฆ, ์๋ฅผ ๋ค์ด Go ๊ตฌํ์ C ๊ตฌํ๋ณด๋ค ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค.
ํ๋ก์ฌ
๋์์ด ๋ ์ ์๋ ๋ ๋ค๋ฅธ ์ ํ์ Pilosa DBMS์ธ๋ฐ, ์ด ์ ํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํธ๋งต ์ธ๋ฑ์ค๋ง ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ ๋น๊ต์ ์๋ก์ด ์๋ฃจ์
์ด์ง๋ง ๋๋ผ์ด ์๋๋ก ์ฌ๋๋ค์ ๋ง์์ ์ฌ๋ก์ก๊ณ ์์ต๋๋ค.

Pilosa๋ ๋ด๋ถ์ ์ผ๋ก ์ธ๋ถ์ง๋ ๋นํธ๋งต์ ์ฌ์ฉํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ์์์ ์ธ๊ธํ ๋ชจ๋ ๊ฒ(๊ทธ๋ฃนํ, ๋ฒ์ ์ธ์ฝ๋ฉ ๋นํธ๋งต, ํ๋ ๊ฐ๋
๋ฑ)์ ๋จ์ํํ๊ณ ์ค๋ช
ํฉ๋๋ค.
์ด๋ฏธ ์ต์ํ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด Pilosa๋ฅผ ์ฌ์ฉํ๋ ์๋ฅผ ์ ๊น ์ดํด๋ณด๊ฒ ์ต๋๋ค.

์ด ์๋ ์์ ๋ณธ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. Pilosa ์๋ฒ์ ๋ํ ํด๋ผ์ด์ธํธ๋ฅผ ๋ง๋ค๊ณ , ์ธ๋ฑ์ค์ ํ์ํ ํ๋๋ฅผ ๋ง๋ ๋ค์, ํ๋๋ฅผ ํ๋ฅ ์ด ํฌํจ๋ ๋ฌด์์ ๋ฐ์ดํฐ๋ก ์ฑ์ด ํ ๋ง์ง๋ง์ผ๋ก ์ต์ํ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ "๋น์ผ" ํ๋๋ฅผ NOTํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ "ํ
๋ผ์ค" ํ๋์ "์์ฝ" ํ๋์ ๊ต์ฐจ(๋๋ AND)ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๋ ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.

์ ๋ ๊ฐ๊น์ด ๋ฏธ๋์ MySQL๊ณผ PostgreSQL๊ณผ ๊ฐ์ DBMS์๋ ์ด๋ฌํ ์๋ก์ด ์ ํ์ ์ธ๋ฑ์ค, ์ฆ ๋นํธ๋งต ์ธ๋ฑ์ค๊ฐ ๋์
๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.

๊ฒฐ๋ก

์์ง ์ ๋ค์ง ์์ผ์
จ๋ค๋ฉด ๊ฐ์ฌํฉ๋๋ค. ์ ํ๋ ์๊ฐ์ผ๋ก ์ธํด ๋ง์ ์ฃผ์ ์ ๋ํด ๊ฐ๋จํ ์ธ๊ธํด์ผ ํ์ง๋ง, ์ ๊ฐ ์ ํ ์ด์ผ๊ธฐ๊ฐ ์ ์ตํ๊ณ ์ฌ์ง์ด ๋๊ธฐ๋ฅผ ๋ถ์ฌํ๋ ๋ฐ ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋นํธ๋งต ์ธ๋ฑ์ค๋ ์ง๊ธ ๋น์ฅ ํ์ํ์ง ์๋๋ผ๋ ์์๋๋ฉด ์ข์ต๋๋ค. ์ด๊ฒ์ ์ฌ๋ฌ๋ถ์ ๋๊ตฌ์์์ ์ถ๊ฐ๋๋ ๋ ๋ค๋ฅธ ๋๊ตฌ๋ก ์ผ์ผ์ธ์.
์ฐ๋ฆฌ๋ Go์ ๋ค์ํ ์ฑ๋ฅ ํฅ์ ๊ธฐ๋ฒ๊ณผ Go ์ปดํ์ผ๋ฌ๊ฐ ์์ง ์ํ์ง ๋ชปํ๋ ๋ถ๋ถ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๊ฑด ๋ถ๋ช ํ ๋ชจ๋ Go ํ๋ก๊ทธ๋๋จธ๊ฐ ์์์ผ ํ ๋ด์ฉ์ด์์.
์ ๊ฐ ๋ง์๋๋ฆฌ๊ณ ์ถ์๋ ๊ฒ์ ์ ๋ถ์
๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
์ถ์ฒ : habr.com
