์ฐ๋ฆฌ ์ ์ ๋ค์ ํผ๋ก๋ ๋ชจ๋ฅด๊ณ ์๋ก์๊ฒ ๋ฉ์์ง๋ฅผ ์๋๋ค.
๊ทธ๊ฒ์ ๊ฝค ๋ง์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ์์ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ์ฝ์ผ๋ ค๊ณ ํ๋ฉด 150๋ง๋
์ด์์ด ๊ฑธ๋ฆฝ๋๋ค. ๊ทํ๊ฐ ์๋นํ ๊ณ ๊ธ ๋
์์ด๊ณ ๊ฐ ๋ฉ์์ง์ XNUMX์ด ์ด์์ ์๋นํ์ง ์๋๋ค๋ฉด ๋ง์ด์ฃ .
์ด๋ฌํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ก์ธ์คํ๊ธฐ ์ํ ๋ ผ๋ฆฌ๋ฅผ ์ต์ ์ผ๋ก ๊ตฌ์ถํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ค์ง ์ข์ง ์์ ์๊ฐ์ ๋ชจ๋ ๊ฒ์ด ๊ณง ์๋ชป๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ง ์ ์์ต๋๋ค.
์ฐ๋ฆฌ์๊ฒ ์ด ์๊ฐ์ XNUMX๋
๋ฐ ์ ์ ์ฐพ์์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ด ์ํฉ์ ์ด๋ฅด๋ ๊ณ ๊ฒฐ๊ตญ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์์๋๋ก ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ณ๋ ฅ
์ฒซ ๋ฒ์งธ ๊ตฌํ์์ VKontakte ๋ฉ์์ง๋ PHP ๋ฐฑ์๋์ MySQL์ ์กฐํฉ์์ ์๋ํ์ต๋๋ค. ์ด๋ ์๊ท๋ชจ ํ์ ์น์ฌ์ดํธ์ ๋ํ ์์ ํ ์ผ๋ฐ์ ์ธ ์๋ฃจ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ฌ์ดํธ๋ ํต์ ํ ์ ์์ ์ ๋๋ก ์ฑ์ฅํ๊ณ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ต์ ํ๋ฅผ ์๊ตฌํ๊ธฐ ์์ํ์ต๋๋ค.
2009๋ ๋ง์ ์ต์ด์ ํ ์คํธ ์์ง ์ ์ฅ์๊ฐ ์์ฑ๋์์ผ๋ฉฐ 2010๋ ์ ๋ฉ์์ง๊ฐ ์ด๊ณณ์ผ๋ก ์ ์ก๋์์ต๋๋ค.
ํ
์คํธ ์์ง์์ ๋ฉ์์ง๋ ์ผ์ข
์ "์ฌ์ํจ"์ธ ๋ชฉ๋ก์ ์ ์ฅ๋์์ต๋๋ค. ์ด๋ฌํ ๊ฐ ๋ชฉ๋ก์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์์ ํ ์ฌ์ฉ์์ธ uid์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๋ฉ์์ง์๋ ๋ํ์ ์๋ณ์, ํ
์คํธ, ์ฒจ๋ถ ํ์ผ ๋ฑ ์ผ๋ จ์ ์์ฑ์ด ์์ต๋๋ค. "์์" ๋ด๋ถ์ ๋ฉ์์ง ์๋ณ์๋ local_id์ด๋ฉฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉฐ ์ ๋ฉ์์ง์ ๋ํด ์์ฐจ์ ์ผ๋ก ํ ๋น๋ฉ๋๋ค. "์์"๋ ๋
๋ฆฝ์ ์ด๋ฉฐ ์์ง ๋ด๋ถ์์ ์๋ก ๋๊ธฐํ๋์ง ์์ต๋๋ค. ์์ ๊ฐ์ ํต์ ์ PHP ์์ค์์ ๋ฐ์ํฉ๋๋ค. ๋ด๋ถ์์ ํ
์คํธ ์์ง์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ธฐ๋ฅ์ ์ดํด๋ณผ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋ ์ฌ์ฉ์ ๊ฐ์ ํต์ ์ ์ถฉ๋ถํ์ต๋๋ค. ๋ค์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ถ์ธกํด ๋ณด์ธ์.
2011๋ XNUMX์ VKontakte๋ ์ฌ๋ฌ ์ฐธ๊ฐ์์์ ๋ํ, ์ฆ ๋ค์ค ์ฑํ ์ ๋์ ํ์ต๋๋ค. ์ด๋ค๊ณผ ํ๋ ฅํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ ์๋ก์ด ํด๋ฌ์คํฐ(member-chats ๋ฐ chat-members)๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์ฌ์ฉ์์ ์ฑํ ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๋ ๋ฒ์งธ๋ ์ฑํ ๋ณ ์ฌ์ฉ์์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ชฉ๋ก ์์ฒด ์ธ์๋ ์ด๋ํ ์ฌ์ฉ์ ๋ฐ ํด๋น ์ฌ์ฉ์๊ฐ ์ฑํ ์ ์ถ๊ฐ๋ ์๊ฐ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
"PHP, ์ฑํ
์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์"๋ผ๊ณ ์ฌ์ฉ์๊ฐ ๋งํฉ๋๋ค.
โ์, {username}๋.โ PHP๊ฐ ๋งํฉ๋๋ค.
์ด ๊ณํ์๋ ๋จ์ ์ด ์์ต๋๋ค. ๋๊ธฐํ๋ ์ฌ์ ํ PHP์ ์ฑ
์์
๋๋ค. ๋๊ท๋ชจ ์ฑํ
๊ณผ ๋์์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์ฌ์ฉ์๋ ์ํํ ์ด์ผ๊ธฐ์
๋๋ค. ํ
์คํธ ์์ง ์ธ์คํด์ค๋ uid์ ๋ฐ๋ผ ๋ค๋ฅด๋ฏ๋ก ์ฑํ
์ฐธ๊ฐ์๋ ์๋ก ๋ค๋ฅธ ์๊ฐ์ ๋์ผํ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ์ง์ ์ด ๋ฉ์ถ๋ค๋ฉด ์ด๊ฒ์ผ๋ก ์ด ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฐ ์ผ์ ์ผ์ด๋์ง ์์ ๊ฒ์
๋๋ค.
2015๋ ๋ง์ ์ปค๋ฎค๋ํฐ ๋ฉ์์ง๋ฅผ ์ถ์ํ๊ณ , 2016๋ ์ด์๋ ์ด๋ฅผ ์ํ API๋ฅผ ์ถ์ํ์ต๋๋ค. ์ปค๋ฎค๋ํฐ์ ๋๊ท๋ชจ ์ฑ๋ด์ด ๋ฑ์ฅํ๋ฉด์ ๊ณ ๋ฅธ ๋ถํ ๋ถ์ฐ์ ์์ด๋ฒ๋ฆด ์๋ ์์์ต๋๋ค.
์ข์ ๋ด์ ํ๋ฃจ์ ์๋ฐฑ๋ง ๊ฐ์ ๋ฉ์์ง๋ฅผ ์์ฑํฉ๋๋ค. ์๋ฌด๋ฆฌ ๋ง์ด ๋ง์ ์ฌ์ฉ์๋ผ๋ ์ด๋ฅผ ์๋ํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ทธ๋ฌํ ๋ด์ด ์ด์๋ ํ ์คํธ ์์ง์ ์ผ๋ถ ์ธ์คํด์ค๊ฐ ์ต๋ํ ์ด๋ ค์์ ๊ฒช๊ธฐ ์์ํ์์ ์๋ฏธํฉ๋๋ค.
2016๋ ์ ๋ฉ์์ง ์์ง์ ์ฑํ ํ์ ๋ฐ ํ์ ์ฑํ ์ธ์คํด์ค 100๊ฐ, ํ ์คํธ ์์ง 8000๊ฐ์ ๋๋ค. ๊ฐ๊ฐ 64GB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ถ ์์ฒ ๋์ ์๋ฒ์์ ํธ์คํ ๋์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์๊ธ์กฐ์น๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ 32GB ๋ ๋๋ ธ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ธก์ ์ถ์ ํ์ต๋๋ค. ๊ธ๊ฒฉํ ๋ณํ๊ฐ ์๋ค๋ฉด ์ด ์ ๋๋ฉด ์์ผ๋ก XNUMX๋ ์ ๋๋ ์ถฉ๋ถํ ๊ฒ์ ๋๋ค. ํ๋์จ์ด๋ฅผ ํ๋ณดํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด๋ฅผ ์ต์ ํํด์ผ ํฉ๋๋ค.
์ํคํ ์ฒ์ ํน์ฑ์ ํ๋์จ์ด๋ฅผ ์ฌ๋ฌ ๊ฐ ๋๋ฆฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ์ฆ, ์ ์ด๋ ์๋์ฐจ ์๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฌ๋ ๊ฒ์ ๋๋ค. ๋ถ๋ช ํ ์ด๊ฒ์ ๋ค์ ๋น์ผ ๊ธธ์ ๋๋ค. ์ต์ ํํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๋ก์ด ๊ฐ๋
์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ํต์ฌ ๋ณธ์ง์ ์ฑํ ์ ๋๋ค. ์ฑํ ์๋ ์ด์ ๊ด๋ จ๋ ๋ฉ์์ง ๋ชฉ๋ก์ด ์์ต๋๋ค. ์ฌ์ฉ์์๊ฒ ์ฑํ ๋ชฉ๋ก์ด ์์ต๋๋ค.
ํ์ํ ์ต์๊ฐ์ ๋ ๊ฐ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค.
- ์ฑํ ์์ง. ์ด๊ฒ์ ์ฑํ ๋ฒกํฐ์ ์ ์ฅ์์ ๋๋ค. ๊ฐ ์ฑํ ์๋ ์ด์ ๊ด๋ จ๋ ๋ฉ์์ง ๋ฒกํฐ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ฉ์์ง์๋ ํ ์คํธ์ ์ฑํ ๋ด๋ถ์ ๊ณ ์ ํ ๋ฉ์์ง ์๋ณ์(chat_local_id)๊ฐ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์์ง. ์ด๋ ์ฌ์ฉ์ ๋ฒกํฐ(์ฌ์ฉ์์ ๋ํ ๋งํฌ)์ ์ ์ฅ์์ ๋๋ค. ๊ฐ ์ฌ์ฉ์๋ Peer_id ๋ฒกํฐ(๋ํ์ - ๋ค๋ฅธ ์ฌ์ฉ์, ๋ค์ค ์ฑํ ๋๋ ์ปค๋ฎค๋ํฐ)์ ๋ฉ์์ง ๋ฒกํฐ๋ฅผ ๊ฐ์ต๋๋ค. ๊ฐ Peer_id์๋ ์ด์ ๊ด๋ จ๋ ๋ฉ์์ง ๋ฒกํฐ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ฉ์์ง์๋ chat_local_id์ ํด๋น ์ฌ์ฉ์์ ๊ณ ์ ํ ๋ฉ์์ง ID(user_local_id)๊ฐ ์์ต๋๋ค.
์ ํด๋ฌ์คํฐ๋ TCP๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ํต์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฒญ ์์๊ฐ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ์์ฒญ ์์ฒด์ ์ด์ ๋ํ ํ์ธ์ ํ๋ ๋๋ผ์ด๋ธ์ ๊ธฐ๋ก๋๋ฏ๋ก ์์ง์ด ์คํจํ๊ฑฐ๋ ๋ค์ ์์๋ ํ ์ธ์ ๋ ์ง ๋๊ธฐ์ด ์ํ๋ฅผ ๋ณต์ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์์ง๊ณผ ์ฑํ
์์ง์ ๊ฐ๊ฐ 4๊ฐ์ ์ค๋์ด๋ฏ๋ก ํด๋ฌ์คํฐ ๊ฐ์ ์์ฒญ ๋๊ธฐ์ด์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋ฉ๋๋ค(๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์ ํ ์์ผ๋ฉฐ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์๋ํฉ๋๋ค).
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์คํฌ ์์
์ ๋ฐ์ด๋๋ฆฌ ๋ณ๊ฒฝ ๋ก๊ทธ(binlog), ์ ์ ์ค๋
์ท ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ถ ์ด๋ฏธ์ง ์กฐํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํ๋ฃจ ๋์์ ๋ณ๊ฒฝ ์ฌํญ์ binlog์ ๊ธฐ๋ก๋๊ณ , ํ์ฌ ์ํ์ ์ค๋
์ท์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ค๋
์ท์ ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ์ต์ ํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ชจ์์
๋๋ค. ํค๋(์ด๋ฏธ์ง์ ๋ฉํ์ธ๋ฑ์ค)์ ๋ฉํํ์ผ ์ธํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํค๋๋ RAM์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ฉฐ ์ค๋
์ท์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์์น๋ฅผ ๋ํ๋
๋๋ค. ๊ฐ ๋ฉํํ์ผ์๋ ๋จ์ผ ์ฌ์ฉ์์ ๊ด๋ จ๋ ๋ฐ์ดํฐ์ ๊ฐ์ด ๊ฐ๊น์ด ์์ ์ ํ์ํ ์ ์๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ค๋
์ท ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฟผ๋ฆฌํ๋ฉด ํ์ํ ๋ฉํํ์ผ์ ์ฝ์ ๋ค์ ์ค๋
์ท์ด ์์ฑ๋ ํ ๋ฐ์ํ binlog์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ ๋ คํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ด์ ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
๋์์ ํ๋ ๋๋ผ์ด๋ธ ์์ฒด์ ๋ฐ์ดํฐ๋ ํ๋ฃจ์ ํ ๋ฒ๋ง ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ชจ์คํฌ๋ฐ์์๋ ๋ถํ๊ฐ ์ต์์ธ ๋ฆ์ ๋ฐค์ ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋๋ถ์(๋์คํฌ์ ๊ตฌ์กฐ๊ฐ ํ๋ฃจ ์ข ์ผ ์ผ์ ํ๋ค๋ ์ฌ์ค์ ์๊ณ ์์) ๋ฒกํฐ๋ฅผ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฐฐ์ด๋ก ๋์ฒดํ ์ ์์ผ๋ฉฐ ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฅ์๋ฉ๋๋ค.
์๋ก์ด ์ฒด๊ณ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- PHP ๋ฐฑ์๋๋ ๋ฉ์์ง ์ ์ก ์์ฒญ์ ํตํด ์ฌ์ฉ์ ์์ง์ ์ ์ํฉ๋๋ค.
- user-engine์ ์์ฒญ์ ์ํ๋ chat-engine ์ธ์คํด์ค๋ก ํ๋ก์ํ๊ณ , ์ด ์ธ์คํด์ค๋ user-engine chat_local_id(์ด ์ฑํ ๋ด ์ ๋ฉ์์ง์ ๊ณ ์ ์๋ณ์)๋ก ๋ฐํ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ chat_engine์ ์ฑํ ์ ๋ชจ๋ ์์ ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ธ๋ก๋์บ์คํธํฉ๋๋ค.
- user-engine์ chat-engine์ผ๋ก๋ถํฐ chat_local_id๋ฅผ ๋ฐ๊ณ user_local_id๋ฅผ PHP์ ๋ฐํํฉ๋๋ค. ์ด๋ ์ด ์ฌ์ฉ์์ ๊ณ ์ ํ ๋ฉ์์ง ์๋ณ์์ ๋๋ค. ์ด ์๋ณ์๋ ์๋ฅผ ๋ค์ด API๋ฅผ ํตํ ๋ฉ์์ง ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฒ ์ธ์๋ ๋ช ๊ฐ์ง ๋ ์ค์ํ ์ฌํญ์ ๊ตฌํํด์ผ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ํ์ ๋ชฉ๋ก์ ๋ํ ๋ชฉ๋ก์ ์ด ๋ ํ์๋๋ ๊ฐ์ฅ ์ต๊ทผ ๋ฉ์์ง์ ๋๋ค. ์ฝ์ง ์์ ๋ฉ์์ง, ํ๊ทธ('์ค์', '์คํธ' ๋ฑ)๊ฐ ์๋ ๋ฉ์์ง.
- ์ฑํ ์์ง์์ ๋ฉ์์ง ์์ถ
- ์ฌ์ฉ์ ์์ง์ ๋ฉ์์ง ์บ์ฑ
- ๊ฒ์(๋ชจ๋ ๋ํ ์์ ๋ฐ ํน์ ๋ํ ์์ ๋ด์์)
- ์ค์๊ฐ ์ ๋ฐ์ดํธ(๋กฑํด๋ง).
- ๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ์์ ์บ์ฑ์ ๊ตฌํํ๊ธฐ ์ํด ๊ธฐ๋ก์ ์ ์ฅํฉ๋๋ค.
๋ชจ๋ ํ์ ๋ชฉ๋ก์ ๊ตฌ์กฐ๋ ๋น ๋ฅด๊ฒ ๋ณํํ๊ณ ์์ต๋๋ค. ๊ทธ๋ค๊ณผ ํจ๊ป ์ผํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋
๋ฉ์์ง์๋ ๋ง์ ์์ ์ ๋ณด(์ฃผ๋ก ํ
์คํธ)๊ฐ ํฌํจ๋์ด ์์ด ์์ถํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ํ๋์ ๊ฐ๋ณ ๋ฉ์์ง๋ผ๋ ์ ํํ๊ฒ ๋ณด๊ด ์ทจ์ํ ์ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฉ์์ง๋ฅผ ์์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฑํ ๋ณด๋ค ์ฌ์ฉ์ ์๊ฐ ํจ์ฌ ์ ๊ธฐ ๋๋ฌธ์ ์ฑํ ์์ง์ ์์ ์ก์ธ์ค ๋์คํฌ ์์ฒญ์ ์ ์ฅํ๊ธฐ ์ํด ๋ฉ์์ง๋ฅผ ์ฌ์ฉ์ ์์ง์ ์บ์ํฉ๋๋ค.
๋ฉ์์ง ๊ฒ์์ ์ฌ์ฉ์ ์์ง์์ ์ด ์ฌ์ฉ์์ ์ฑํ ์ด ํฌํจ๋ ๋ชจ๋ ์ฑํ ์์ง ์ธ์คํด์ค์ ๋ํ ๋๊ฐ์ ์ฟผ๋ฆฌ๋ก ๊ตฌํ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ์์ง ์์ฒด์ ๊ฒฐํฉ๋ฉ๋๋ค.
๊ธ์, ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ด ๊ณ ๋ ค๋์์ผ๋ฏ๋ก ๋จ์ ๊ฒ์ ์๋ก์ด ๊ณํ์ผ๋ก ์ ํํ๋ ๊ฒ๋ฟ์ ๋๋ค. ๊ฐ๊ธ์ ์ด๋ฉด ์ฌ์ฉ์๊ฐ ๋์น ์ฑ์ง ๋ชปํ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๋ณ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ํ ์คํธ ์์ง๊ณผ ๋ค์ค ์ฑํ ๋ฐฉ๊ณผ ๊ทธ ์์ ์๋ ์ฌ์ฉ์์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ ๊ฐ์ ํด๋ฌ์คํฐ ์ฑํ ํ์ ๋ฐ ํ์ ์ฑํ ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์๋ก์ด ์ฌ์ฉ์ ์์ง๊ณผ ์ฑํ ์์ง์ผ๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ด์ ๋ฐฉ์์ ํ์ ์ฑํ ์ ์ฃผ๋ก ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉ๋์์ต๋๋ค. ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฑํ ํ์์๊ฒ ์ ์ํ๊ฒ ์ ์กํ ํ ๋ ์ด์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค์ ์ฐธ์ฌํ์ง ์์์ต๋๋ค.
์ฑํ
ํ์์ ์ํ ๋๊ธฐ์ด์
๋๋ค. ์ฌ๊ธฐ์๋ 100๊ฐ์ ์ธ์คํด์ค๊ฐ ํฌํจ๋์ด ์๊ณ ์ฑํ
์์ง์๋ 4๊ฐ์ ์ธ์คํด์ค๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ค๋ฉด ๊ท์ ์ ์ค์ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ์ฑํ
ํ์์ ๋์ผํ 4๊ฐ ์ฌ๋ณธ์ผ๋ก ๋๋ ๋ค์ ์ฑํ
์์ง์์ ์ฑํ
ํ์ binlog ์ฝ๊ธฐ๊ฐ ํ์ฑํ๋์์ต๋๋ค.
์ด์ ์ฑํ
์์ง์ ์ฑํ
ํ์์ ๋ค์ค ์ฑํ
์ ๋ํด ์๊ณ ์์ง๋ง ๋ ๋ช
์ ๋ํ ์๋์์ ๋ํ์ ๋ํด์๋ ์์ง ์๋ฌด๊ฒ๋ ๋ชจ๋ฆ
๋๋ค. ์ด๋ฌํ ๋ํ๋ ์ฌ์ฉ์๋ฅผ ์ฐธ์กฐํ์ฌ ํ
์คํธ ์์ง์ ์์นํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ "์ ๋ฉด"์ผ๋ก ์ทจํ์ต๋๋ค. ๊ฐ ์ฑํ
์์ง ์ธ์คํด์ค๋ ๋ชจ๋ ํ
์คํธ ์์ง ์ธ์คํด์ค์ ํ์ํ ๋ํ๊ฐ ์๋์ง ๋ฌผ์์ต๋๋ค.
ํ๋ฅญํฉ๋๋ค. ์ฑํ
์์ง์ ๋ค์ค ์ฑํ
์ด ๋ฌด์์ธ์ง, ์ด๋ค ๋ํ๊ฐ ์๋์ง ์๊ณ ์์ต๋๋ค.
๊ฐ ์ฑํ
์ ๋ฉ์์ง ๋ชฉ๋ก์ ๋ง๋ค๋ ค๋ฉด ๋ค์ค ์ฑํ
์ฑํ
์ ๋ฉ์์ง๋ฅผ ๊ฒฐํฉํด์ผ ํฉ๋๋ค. ๋จผ์ chat-engine์ ์ด ์ฑํ
์ ๋ชจ๋ ์ฌ์ฉ์ ๋ฉ์์ง๋ฅผ ํ
์คํธ ์์ง์์ ๊ฒ์ํฉ๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ฝค ๋ง์ ์(์ต๋ ์์ต ๊ฐ)๊ฐ ์์ง๋ง ๋งค์ฐ ๋๋ฌธ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ์ฑํ
์ RAM์ ์์ ํ ๋ค์ด๊ฐ๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋ ฌ๋์ง ์์ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ณต์ฌ๋ณธ์ผ๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ฉ์์ง๋ ๋ชจ๋ ์ฌ์ฉ์์ ํด๋นํ๋ ์๋ก ๋ค๋ฅธ ํ
์คํธ ์์ง ์ธ์คํด์ค์์ ๊ฐ์ ธ์ต๋๋ค. ๋ชฉํ๋ ๋ฉ์์ง๋ฅผ ์ ๋ ฌํ๊ณ ๋ถํ์ํ ๊ณต๊ฐ์ ์ฐจ์งํ๋ ๋ณต์ฌ๋ณธ์ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค.
๊ฐ ๋ฉ์์ง์๋ ๋ณด๋ธ ์๊ฐ๊ณผ ํ ์คํธ๊ฐ ํฌํจ๋ ํ์์คํฌํ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋ ฌ์ ์๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ๋ค์ค ์ฑํ ์ฐธ๊ฐ์์ ๊ฐ์ฅ ์ค๋๋ ๋ฉ์์ง์ ํฌ์ธํฐ๋ฅผ ๋ฐฐ์นํ๊ณ ์๋ํ ๋ณต์ฌ๋ณธ์ ํ ์คํธ์์ ํด์๋ฅผ ๋น๊ตํ์ฌ ํ์์คํฌํ๋ฅผ ๋๋ฆฌ๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. ๋ณต์ฌ๋ณธ์ ํด์์ ํ์์คํฌํ๊ฐ ๋์ผํ๋ค๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ด์ง๋ง ์ค์ ๋ก๋ ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ์์๋ค์ํผ ์ด์ ๊ตฌ์ฑํ์ ๋๊ธฐํ๋ PHP์ ์ํด ์ํ๋์์ผ๋ฉฐ ๋๋ฌผ๊ฒ ๋์ผํ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์๊ฐ์ด ์ฌ์ฉ์๋ง๋ค ๋ฌ๋์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก XNUMX์ด ์ด๋ด์ ํ์์คํฌํ๋ฅผ ํธ์งํ ์ ์์์ต๋๋ค. ๋ ๋ฒ์งธ ๋ฌธ์ ๋ ์์ ์๋ง๋ค ๋ฉ์์ง ์์๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌํ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ ์ฃผ๋ฌธ ์ต์ ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ์ฌ๋ณธ์ ์์ฑํ ์ ์๋๋ก ํ์ฉํ์ต๋๋ค.
๊ทธ ํ ๋ฉํฐ์ฑ์ ๋ฉ์์ง์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ์ ์์ง์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ธ์จ ๋ฉ์์ง์๋ ๋ถ์พํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์์ ์์ ์์ง์ ์ ๋ฌ๋๋ ๋ฉ์์ง๋ user_local_id๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฒฉํ๊ฒ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ด์ ์์ง์์ ์ฌ์ฉ์ ์์ง์ผ๋ก ๊ฐ์ ธ์จ ๋ฉ์์ง๋ ์ด ์ ์ฉํ ์์ฑ์ ์์์ต๋๋ค. ๋์์ ํ ์คํธ์ ํธ์๋ฅผ ์ํด ์ ์ํ๊ฒ ์ก์ธ์คํ๊ณ , ํด๋น ํญ๋ชฉ์์ ํญ๋ชฉ์ ์ฐพ๊ณ , ์ ํญ๋ชฉ์ ์ถ๊ฐํ ์ ์์ด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๊ฐ์ ธ์จ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํน๋ณํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํฌ๊ธฐ์ ๋ฒกํฐ๋ฅผ ๋ํ๋ ๋๋ค. ๋ค๋ค ์ด๋ ์์ด? - ์์์ ํน๋ณํ ์์์ ํจ๊ป ๋ค๋ฅด๋ฉฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฐ ์ธ๊ทธ๋จผํธ์์ ์์๊ฐ ์ ๋ ฌ๋ฉ๋๋ค. ๊ทธ๋ฌํ ๊ตฌ์กฐ์์ ์์๋ฅผ ๊ฒ์ํ๋ ๋ฐ๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ๋ฅผ ํตํด ์ด์ง ๊ฒ์. ์์ ์ถ๊ฐ๋ ๋ค์ ๊ธฐ๊ฐ์ ๊ฑธ์ณ ์๊ฐ๋ฉ๋๋ค. .
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ธฐ์กด ์์ง์์ ์ ์์ง์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ์์๋์ต๋๋ค. ํ์ง๋ง ์ด ๊ณผ์ ์ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋ฉฐ, ์ด ๊ธฐ๊ฐ ๋์ ์ฌ์ฉ์๋ค์ด ์๋ก์๊ฒ ํธ์ง๋ฅผ ์ฐ๋ ์ต๊ด์ ํฌ๊ธฐํ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค. ์ด ์๊ฐ ๋์ ๋ฉ์์ง๋ฅผ ์์ง ์๊ธฐ ์ํด ์ด์ ํด๋ฌ์คํฐ์ ์ ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ์์ ๋ฐฉ์์ผ๋ก ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ๋ ์ฑํ
ํ์๊ณผ ์ฌ์ฉ์ ์์ง์ ๊ธฐ๋ก๋ฉ๋๋ค(์ด์ ์ฒด๊ณ์ ๋ฐ๋ฅธ ์ผ๋ฐ ์๋์์๋ ํ
์คํธ ์์ง์ด ์๋). user-engine์ ์์ฒญ์ chat-engine์ผ๋ก ํ๋ก์ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋์์ ์ด ์ฑํ
์ด ์ด๋ฏธ ๋ณํฉ๋์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ฑํ
์ด ์์ง ๋ณํฉ๋์ง ์์ ๊ฒฝ์ฐ ์ฑํ
์์ง์ ๋ฉ์์ง๋ฅผ ์์ฒด์ ์ผ๋ก ์์ฑํ์ง ์์ผ๋ฉฐ ํด๋น ์ฒ๋ฆฌ๋ ํ
์คํธ ์์ง์์๋ง ๋ฐ์ํฉ๋๋ค. ์ฑํ
์ด ์ด๋ฏธ chat-engine์ ๋ณํฉ๋ ๊ฒฝ์ฐ chat_local_id๋ฅผ user-engine์ ๋ฐํํ๊ณ ๋ชจ๋ ์์ ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋
๋๋ค. user-engine์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ
์คํธ ์์ง์ผ๋ก ํ๋ก์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋ฉด ํญ์ ๋กค๋ฐฑํ์ฌ ๊ธฐ์กด ์์ง์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๊ดํ ์ ์์ต๋๋ค. text-engine์ user-engine์ด ์ ์ฅํ๊ณ ๋ฐฑ์๋๋ก ๋ฐํํ๋ user_local_id๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ ํ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋น ์ฌ์ฉ์ ์์ง๊ณผ ์ฑํ
์์ง ํด๋ฌ์คํฐ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. chat-engine์ ์ ์ฒด chat-members binlog๋ฅผ ์ฝ์ ๋ค์ ์์์ ์ค๋ช
ํ ๊ตฌ์ฑํ์ ๋ฐ๋ผ ํ๋ก์๋ฅผ ์์ํฉ๋๋ค. ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ๋ ๊ฐ์ ๋๊ธฐํ๋ ํด๋ฌ์คํฐ(์ด์ ํด๋ฌ์คํฐ์ ์ ํด๋ฌ์คํฐ)๋ฅผ ์ป์ต๋๋ค. ๋จ์ ๊ฒ์ ์ฝ๊ธฐ๋ฅผ ํ
์คํธ ์์ง์์ ์ฌ์ฉ์ ์์ง์ผ๋ก ์ ํํ๊ณ ํ๋ก์ฑ์ ๋นํ์ฑํํ๋ ๊ฒ์
๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
์๋ก์ด ์ ๊ทผ ๋ฐฉ์ ๋๋ถ์ ์์ง์ ๋ชจ๋ ์ฑ๋ฅ ์งํ๊ฐ ๊ฐ์ ๋์์ผ๋ฉฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ๋ฉ์์ง์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ ์ํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ์ด ์์ ์ ์์ํ์ต๋๋ค. ์ต๋ ์ฑํ ์ฐธ๊ฐ์ ์๋ฅผ ๋๋ฆฌ๊ณ , ์ ๋ฌ๋ ๋ฉ์์ง์ ๋ํ ๊ฒ์์ ๊ตฌํํ๊ณ , ๊ณ ์ ๋ ๋ฉ์์ง๋ฅผ ์คํํ๊ณ , ์ฌ์ฉ์๋น ์ด ๋ฉ์์ง ์์ ๋ํ ์ ํ์ ๋์์ต๋๋ค.) .
๋
ผ๋ฆฌ์ ๋ณํ๋ ์ ๋ง ์์ฒญ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ํญ์ ๊ฑฐ๋ํ ํ๊ณผ ์๋ง์ ์ฝ๋ ๋ผ์ธ์ ์ํ ์๋
๊ฐ์ ๊ฐ๋ฐ์ ์๋ฏธํ๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ ์ฃผ๋ชฉํ๊ณ ์ถ์ต๋๋ค. ๋ฉ์์ง ์์ถ์ ์ํ Huffman, Splay ํธ๋ฆฌ ๋ฐ ๊ฐ์ ธ์จ ๋ฉ์์ง์ ๊ตฌ์กฐ์ ๊ฐ์ ๋ชจ๋ ์ถ๊ฐ ์คํ ๋ฆฌ์ ํจ๊ป ์ฑํ
์์ง ๋ฐ ์ฌ์ฉ์ ์์ง์ 20์ค ๋ฏธ๋ง์ ์ฝ๋์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ 3๊ฐ์ ๋ง์ 10๋ช
์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ์ต๋๋ค.
๋ํ ์๋ฒ ์๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฌ๋ ๋์ ์๋ฒ ์๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์์ต๋๋ค. ์ด์ ์ฌ์ฉ์ ์์ง๊ณผ ์ฑํ ์์ง์ 500๊ฐ์ ๋ฌผ๋ฆฌ์ ์์คํ ์ ์กด์ฌํ๋ ๋ฐ๋ฉด ์๋ก์ด ์ฒด๊ณ๋ ๋ก๋ํ ์ ์๋ ์ฌ์ ๊ณต๊ฐ์ด ํฝ๋๋ค. ์ฐ๋ฆฌ๋ ์ฅ๋น ๋น์ฉ์ ๋ง์ด ์ ์ฝํ์ต๋๋ค. ์ฐ๊ฐ ์ด์ ๋น์ฉ์ผ๋ก ์ฝ 5๋ง ๋ฌ๋ฌ + 750๋ง ๋ฌ๋ฌ๋ฅผ ์ ์ฝํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ฐ์ฅ ๋ณต์กํ๊ณ ๋๊ท๋ชจ์ ๋ฌธ์ ์ ๋ํ ์ต์์ ์๋ฃจ์
์ ์ฐพ๊ธฐ ์ํด ๋
ธ๋ ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ฐ ๊ฐ๋ฐ์๋ฅผ ๋ง์ด ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์์์ ์ฌ๋ฅ ์๋ ๊ฐ๋ฐ์๋ฅผ ์ฐพ๋ ์ด์ ์
๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ข์ํ๊ณ ์๊ณ ์์ผ๋ฉฐ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ํ ํ์ํ ์ง์์ ๊ฐ๊ณ ์๋ค๋ฉด ํ์ ํฉ๋ฅํ๋๋ก ์ด๋ํฉ๋๋ค. ์ฐ๋ฆฌ์๊ฒ ์ฐ๋ฝํ์ธ์
์ด ์ด์ผ๊ธฐ๊ฐ ๊ทํ์ ๊ดํ ์ด์ผ๊ธฐ๊ฐ ์๋๋๋ผ๋ ์ฐ๋ฆฌ๋ ์ถ์ฒ์ ์ค์ํ๊ฒ ์๊ฐํ๋ค๋ ์ ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค. ์น๊ตฌ์๊ฒ ์ด์ผ๊ธฐํด ๋ณด์ธ์
์ถ์ฒ : habr.com