๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นŒ๋”ฉ ๋ธ”๋ก. ๋‘ ๋ฒˆ์งธ ๊ทผ์‚ฌ

๋ฐœํ‘œ

๋™๋ฃŒ ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” ํ•œ์—ฌ๋ฆ„์— ๋Œ€๊ธฐ์—ด ์‹œ์Šคํ…œ ์„ค๊ณ„์— ๊ด€ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ์ธ "VTrade ์‹คํ—˜"์„ ๋ฐœํ‘œํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” ๊ฑฐ๋ž˜์†Œ, ๊ฒฝ๋งค ๋ฐ ์ƒ์  ๊ตฌ์ถ•์— ๋Œ€ํ•œ ์ด๋ก ๊ณผ ์‹ค์ œ๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ ๋๋ถ€๋ถ„์—์„œ ๊ฐ€์žฅ ๊ด€์‹ฌ ์žˆ๋Š” ์ฃผ์ œ์— ํˆฌํ‘œํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นŒ๋”ฉ ๋ธ”๋ก. ๋‘ ๋ฒˆ์งธ ๊ทผ์‚ฌ

์ด๊ฒƒ์€ Erlang/Elixir์˜ ๋ถ„์‚ฐ ๋ฐ˜์‘ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ด€ํ•œ ์‹œ๋ฆฌ์ฆˆ์˜ ๋งˆ์ง€๋ง‰ ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ์•ˆ์— ์ฒซ ๋ฒˆ์งธ ๊ธฐ์‚ฌ ๋ฐ˜์‘ํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ์ด๋ก ์  ๊ธฐ์ดˆ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ธฐ์‚ฌ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ํŒจํ„ด๊ณผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ ๋ฒ ์ด์Šค์™€ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์˜ ๊ฐœ๋ฐœ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์กฐ์ง

์‹ค์ œ ์ƒํ™œ์—์„œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฌ๋Ÿฌ ์ƒํ˜ธ ์ž‘์šฉ ํŒจํ„ด์„ ๊ฒฐํ•ฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์ ํŠธ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์‚ฌ์šฉ์ž ์„œ๋น„์Šค๋Š” req-resp ์š”์ฒญ์— ์‘๋‹ตํ•˜๊ณ  pub-sub๋ฅผ ํ†ตํ•ด ํ”„๋กœํ•„ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณด๊ณ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง• ๋’ค์—๋Š” ์„œ๋น„์Šค ๋…ผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฒฐํ•จ์„ฑ ๋ถ„์‚ฐ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋•Œ ์ƒํ™ฉ์€ ๋”์šฑ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ด์ œ ์„œ๋น„์Šค๋Š” 5๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋˜ํ•œ ํ”„๋กœํ•„ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ๊ตฌ๋… ๋ชฉ๋ก์„ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  : ์šฐ๋ฆฌ๋Š” ์ผ๊ด€๋œ ์ €์žฅ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณต์ œ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์ด์ „์— ํ•ด๊ฒฐ๋˜์—ˆ๊ณ  ์‹œ์Šคํ…œ์— ์ด๋ฏธ ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ธต์ด ์žˆ๊ณ  ํ•ธ๋“ค๋Ÿฌ์— ์ด์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ณต์‹์ ์ธ ์„ค๋ช…์ด ๋”์šฑ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด ๋ฉ”์‹œ์ง• ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ ค๋ฉด req-resp ๊ตํ™˜ ์ง€์ ์—์„œ ๊ท ํ˜• ์กฐ์ •์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ์ด๋Š” ์‚ฌ์šฉ์ž ๋ฌธ์„œ ํ™•์ธ, ๋‹ค์šด๋กœ๋“œํ•œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ, ์†Œ์…œ ๋ฏธ๋””์–ด์™€ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ. ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์–ด๋–ป๊ฒŒ๋“  ๋ถ„์‚ฐ๋˜์–ด์•ผ ํ•˜๋ฉฐ ์‹คํ–‰ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‘ ๊ฐ€์ง€ ์†”๋ฃจ์…˜ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๊ธฐ์‚ฌ์˜ ์ž‘์—… ๋ถ„๋ฐฐ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ์„ธ์„œ ํ’€์„ ๊ด€๋ฆฌํ•  ์‚ฌ์šฉ์ž ์ •์˜ ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌ์ธํŠธ 3์—๋Š” pub-sub ํ…œํ”Œ๋ฆฟ ํ™•์žฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ตฌํ˜„์„ ์œ„ํ•ด์„œ๋Š” pub-sub ๊ตํ™˜ ํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์„œ๋น„์Šค ๋‚ด์—์„œ ์ด ํฌ์ธํŠธ์˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ถ”๊ฐ€๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Š” ๊ตฌ๋… ๋ฐ ๊ตฌ๋… ์ทจ์†Œ ์ฒ˜๋ฆฌ ๋…ผ๋ฆฌ๋ฅผ ๋ฉ”์‹œ์ง• ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ์ž ๊ตฌํ˜„์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ถ„ํ•ดํ•œ ๊ฒฐ๊ณผ, ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ ค๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ 5๊ฐœ์˜ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ตฌ๋…์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒŒ์‹œ-๊ตฌ๋… ์ปจํŠธ๋กค๋Ÿฌ๋ผ๋Š” ์ถ”๊ฐ€ ์—”ํ„ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
5๊ฐœ์˜ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ถ”๊ฐ€ ์ž‘์—…์€ ๊ตํ™˜ ์ง€์ ์—์„œ ๊ท ํ˜• ์กฐ์ • ๊ทœ์น™์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์ž ์‹œ ํ›„์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ณต์žก์„ฑ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. pub-sub ์ปจํŠธ๋กค๋Ÿฌ์™€ ์‚ฌ์šฉ์ž ์ง€์ • ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋‹จ์ผ ๋ณต์‚ฌ๋ณธ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ๋”๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ๋” ์„ ์ •

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋ฆฌ๋” ์„ ํƒ์€ ์ผ๋ถ€ ๋กœ๋“œ์˜ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์ผ์ •์„ ๋‹ด๋‹นํ•˜๋Š” ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.

์ค‘์•™ ์ง‘์ค‘ํ™” ๊ฒฝํ–ฅ์ด ์—†๋Š” ์‹œ์Šคํ…œ์—์„œ๋Š” paxos ๋˜๋Š” raft์™€ ๊ฐ™์€ ๋ณดํŽธ์ ์ด๊ณ  ํ•ฉ์˜ ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
๋ฉ”์‹œ์ง•์€ ๋ธŒ๋กœ์ปค์ด์ž ํ•ต์‹ฌ ์š”์†Œ์ด๋ฏ€๋กœ ๋ชจ๋“  ์„œ๋น„์Šค ์ปจํŠธ๋กค๋Ÿฌ, ์ฆ‰ ํ›„๋ณด ๋ฆฌ๋”์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง•์„ ์‚ฌ์šฉํ•˜๋ฉด ํˆฌํ‘œ ์—†์ด ๋ฆฌ๋”๋ฅผ ์ž„๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตํ™˜ ์ง€์ ์„ ์‹œ์ž‘ํ•˜๊ณ  ์—ฐ๊ฒฐํ•œ ํ›„ ๋ชจ๋“  ์„œ๋น„์Šค๋Š” ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. #'$leader'{exchange = ?EXCHANGE, pid = LeaderPid, servers = Servers}. ๋งŒ์•ฝ์— LeaderPid ์ผ์น˜ํ•˜๋‹ค pid ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ๋ฆฌ๋”๋กœ ์ง€์ •๋˜๋ฉฐ ๋ชฉ๋ก์€ Servers ๋ชจ๋“  ๋…ธ๋“œ์™€ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ  ์ž‘๋™ ์ค‘์ธ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋Š” ์ˆœ๊ฐ„ ๋ชจ๋“  ์„œ๋น„์Šค ์ปจํŠธ๋กค๋Ÿฌ๋Š” #'$slave_up'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts} ะธ #'$slave_down'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts} ๊ฐ๊ฐ.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ธ์‹ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์–ธ์ œ๋“ ์ง€ ํ•˜๋‚˜์˜ ๋ฆฌ๋”๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ค‘์žฌ์ž

๋ณต์žกํ•œ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฌธ์ œ์—์„œ๋Š” ์ค‘๊ฐœ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์„œ๋น„์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ, ๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ… ๋˜๋Š” ๋กœ๊น… ๋ฌธ์ œ ๋“ฑ์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ์ „์— ํ”„๋ก์‹œ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ชจ๋“  ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œ-๊ตฌ๋… ์ตœ์ ํ™”์˜ ์ „ํ˜•์ ์ธ ์˜ˆ๋Š” ์‹œ์žฅ์˜ ๊ฐ€๊ฒฉ ๋ณ€๋™๊ณผ ๊ฐ™์€ ์—…๋ฐ์ดํŠธ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์ฝ”์–ด์™€ ์•ก์„ธ์Šค ๊ณ„์ธต(์›น ํด๋ผ์ด์–ธํŠธ์— ์›น์†Œ์ผ“ API๋ฅผ ์ œ๊ณตํ•˜๋Š” N ์„œ๋ฒ„)์„ ๊ฐ–์ถ˜ ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
์ •๋ฉด์œผ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ๊ณ ๊ฐ ์„œ๋น„์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” ํ”Œ๋žซํผ๊ณผ์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์„ ์ข…๋ฃŒํ•˜๋Š” ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์ด ์—ฐ๊ฒฐ์„ ์„œ๋น„์Šคํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ํ”„๋กœ์„ธ์Šค์˜ ๋งฅ๋ฝ์—์„œ ์—…๋ฐ์ดํŠธ ์Šน์ธ ๋ฐ ๊ตฌ๋…์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ตฌ๋… ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋„์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์—ฐ๊ฒฐ์„ ์„œ๋น„์Šคํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

"๋‰ด์Šค" ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ตฌ๋…์ž๊ฐ€ 50000๋ช…์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋…์ž๋Š” 5๊ฐœ์˜ ์„œ๋ฒ„์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ตํ™˜ ์ง€์ ์— ๋„๋‹ฌํ•˜๋Š” ๊ฐ ์—…๋ฐ์ดํŠธ๋Š” ๊ตฌ๋…์ž ์ˆ˜์— ๋”ฐ๋ผ ๊ฐ ์„œ๋ฒ„์—์„œ 50000๋ฒˆ, ์ฆ‰ 10000๋ฒˆ ๋ณต์ œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ํšจ๊ณผ์ ์ธ ๊ณ„ํš์€ ์•„๋‹ˆ์ฃ ?
์ƒํ™ฉ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ตํ™˜ ์ง€์ ๊ณผ ์ด๋ฆ„์ด ๊ฐ™์€ ํ”„๋ก์‹œ๋ฅผ ๋„์ž…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ „์—ญ ์ด๋ฆ„ ๋“ฑ๋ก์ž๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด๋ฆ„์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ๊ณ„์ธต ์„œ๋ฒ„์—์„œ ์ด ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด websocket API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„์˜ ์›๋ž˜ ๊ฒŒ์‹œ-๊ตฌ๋… ๊ตํ™˜ ์ง€์ ์ด ์•„๋‹Œ ์ด๋ฅผ ๊ตฌ๋…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋Š” ๊ณ ์œ ํ•œ ๊ตฌ๋…์˜ ๊ฒฝ์šฐ์—๋งŒ ์ฝ”์–ด๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ๋“ค์–ด์˜ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋“  ๊ตฌ๋…์ž์—๊ฒŒ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ ์ปค๋„๊ณผ ์•ก์„ธ์Šค ์„œ๋ฒ„ ๊ฐ„์— 5๊ฐœ๊ฐ€ ์•„๋‹Œ 50000๊ฐœ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… ๋ฐ ๋ฐธ๋Ÿฐ์‹ฑ

์š”์ฒญ-์‘๋‹ต

ํ˜„์žฌ ๋ฉ”์‹œ์ง• ๊ตฌํ˜„์—๋Š” 7๊ฐ€์ง€ ์š”์ฒญ ๋ฐฐํฌ ์ „๋žต์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • default. ์š”์ฒญ์€ ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • round-robin. ์š”์ฒญ์€ ์—ด๊ฑฐ๋˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ„์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  • consensus. ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฆฌ๋”์™€ ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์€ ๋ฆฌ๋”์—๊ฒŒ๋งŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • consensus & round-robin. ๊ทธ๋ฃน์—๋Š” ๋ฆฌ๋”๊ฐ€ ์žˆ์ง€๋งŒ ์š”์ฒญ์€ ๋ชจ๋“  ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
  • sticky. ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ๊ณ„์‚ฐ๋˜์–ด ํŠน์ • ํ•ธ๋“ค๋Ÿฌ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด ์„œ๋ช…์ด ์žˆ๋Š” ํ›„์† ์š”์ฒญ์€ ๋™์ผํ•œ ์ฒ˜๋ฆฌ๊ธฐ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.
  • sticky-fun. ๊ตํ™˜ํฌ์ธํŠธ ์ดˆ๊ธฐํ™” ์‹œ์— ๋Œ€ํ•œ ํ•ด์‹œ ๊ณ„์‚ฐ ๊ธฐ๋Šฅ sticky ๊ท ํ˜•์„ ์žก๋Š” ๊ฒƒ.
  • fun. Sticky-Fun๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ์ž๋งŒ์ด ์ถ”๊ฐ€๋กœ ๋ฆฌ๋””๋ ‰์…˜, ๊ฑฐ๋ถ€ ๋˜๋Š” ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ฐฐ ์ „๋žต์€ ๊ตํ™˜ ์ง€์ ์ด ์ดˆ๊ธฐํ™”๋  ๋•Œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋ฐธ๋Ÿฐ์‹ฑ ์™ธ์—๋„ ๋ฉ”์‹œ์ง•์„ ์‚ฌ์šฉํ•˜๋ฉด ์—”ํ„ฐํ‹ฐ์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ ํƒœ๊ทธ ์œ ํ˜•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์—ฐ๊ฒฐ ํƒœ๊ทธ. ์ด๋ฒคํŠธ๊ฐ€ ์–ด๋–ค ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๊ตํ™˜ ์ง€์ ์— ์—ฐ๊ฒฐ๋˜์ง€๋งŒ ๋ผ์šฐํŒ… ํ‚ค๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ํƒœ๊ทธ. ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ๊ทธ๋ฃน์œผ๋กœ ๊ฒฐํ•ฉํ•˜๊ณ  ๋ผ์šฐํŒ… ๋ฐ ๋ฐธ๋Ÿฐ์‹ฑ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. req-resp ํŒจํ„ด์˜ ๊ฒฝ์šฐ ๋ผ์šฐํŒ…์€ ์„ ํ˜•์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ตํ™˜ ์ง€์ ์— ์š”์ฒญ์„ ๋ณด๋‚ธ ๋‹ค์Œ ์ด๋ฅผ ์„œ๋น„์Šค์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋…ผ๋ฆฌ์  ๊ทธ๋ฃน์œผ๋กœ ๋ถ„ํ• ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ถ„ํ• ์€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ์š”์ฒญ์ด ํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ ๊ทธ๋ฃน์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • ํƒœ๊ทธ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋‹ต๋ณ€์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์€ ๋น„๋™๊ธฐ์‹์ด๋ฏ€๋กœ ์„œ๋น„์Šค ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ RequestTag๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์š”์ฒญ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒŒ์‹œ-๊ตฌ๋…

pub-sub์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ์กฐ๊ธˆ ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฒŒ์‹œ๋˜๋Š” ๊ตํ™˜ ์ง€์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตํ™˜ ์ง€์ ์€ ํ•„์š”ํ•œ ๋ผ์šฐํŒ… ํ‚ค๋ฅผ ๊ตฌ๋…ํ•œ ๊ตฌ๋…์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค(์ด๊ฒƒ์€ ์ฃผ์ œ์™€ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

ํ™•์žฅ์„ฑ ๋ฐ ๋‚ด๊ฒฐํ•จ์„ฑ

์‹œ์Šคํ…œ ์ „์ฒด์˜ ํ™•์žฅ์„ฑ์€ ์‹œ์Šคํ…œ์˜ ๋ ˆ์ด์–ด์™€ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ™•์žฅ์„ฑ ์ •๋„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ์„œ๋น„์Šค๋Š” ์ด ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์ถ”๊ฐ€ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์‹œ์šด์ „ ์‹œ ์ตœ์ ์˜ ๋ฐธ๋Ÿฐ์‹ฑ ์ •์ฑ…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ„๋„์˜ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค ์ž์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน๋ณ„ํžˆ ๋กœ๋“œ๋œ ๊ตํ™˜ ์ง€์ ์„ ๋ณ„๋„์˜ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํŠน๋ณ„ํžˆ ๋กœ๋“œ๋œ ์˜์—ญ์— ํ”„๋ก์‹œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ์€ ์•„ํ‚คํ…์ฒ˜์˜ ์œ ์—ฐ์„ฑ๊ณผ ๊ฐœ๋ณ„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ณตํ†ต ๋…ผ๋ฆฌ ์—”ํ„ฐํ‹ฐ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๋Šฅ๋ ฅ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ณต์€ ํ™•์žฅ์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ์†๋„์— ๋‹ฌ๋ ค ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์˜ ๋ฉ”์‹œ์ง•์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ•จ๊ป˜ ์„ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. 50~60๋Œ€์˜ ๋จธ์‹ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ถ€์กฑํ•˜๋”๋ผ๋„ ํŽ˜๋”๋ ˆ์ด์…˜์— ์˜์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์—ฐํ•ฉ์ด๋ผ๋Š” ์ฃผ์ œ๋Š” ์ด ๊ธฐ์‚ฌ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ๋ถ„์„ํ•  ๋•Œ ์ด๋ฏธ ์„œ๋น„์Šค ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ค‘๋ณต์„ฑ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”์‹œ์ง•๋„ ์˜ˆ์•ฝ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๋˜๋Š” ์‹œ์Šคํ…œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง•์€ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์งง์€ ์‹œ๊ฐ„์— ์ž๋™์œผ๋กœ ๋ณต๊ตฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ถ”๋ฝ ์‹œ ํ•˜์ค‘์„ ๋ฐ›๋Š” ์ถ”๊ฐ€ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Erlang์—๋Š” OTP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ‘œ์ค€ ๋ถ„์‚ฐ ๋ชจ๋“œ ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ๋ชจ๋“œ๋Š” ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ด์ „์— ์‹คํ–‰ํ•œ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜์—ฌ ๋ณต๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ž๋™์œผ๋กœ ์žฅ์•  ์กฐ์น˜ ๋…ธ๋“œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

ะŸั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ

์ตœ์†Œํ•œ Rabbitmq์˜ ์„ฑ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์‹œ์ง•์„ ๋Œ€๋žต์ ์œผ๋กœ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ฐพ์•˜๋‹ค ๊ณต์‹ ๊ฒฐ๊ณผ OpenStack ํŒ€์˜ RabbitMQ ํ…Œ์ŠคํŠธ.

๋‹จ๋ฝ 6.14.1.2.1.2.2. ์›๋ณธ ๋ฌธ์„œ๋Š” RPC CAST์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นŒ๋”ฉ ๋ธ”๋ก. ๋‘ ๋ฒˆ์งธ ๊ทผ์‚ฌ

OS ์ปค๋„์ด๋‚˜ Erlang VM์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์„ค์ •์€ ๋ฏธ๋ฆฌ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์กฐ๊ฑด:

  • erl์€ ๋‹ค์Œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค: +A1 +sbtu.
  • ๋‹จ์ผ erlang ๋…ธ๋“œ ๋‚ด ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋ฐ”์ผ ๋ฒ„์ „์˜ ์ด์ „ i7์ด ์„ค์น˜๋œ ๋žฉํ†ฑ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ŠคํŠธ๋Š” 10G ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. NAT ๋ชจ๋“œ์˜ ๋„คํŠธ์›Œํฌ.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ:

req_resp_bench(_) ->
  W = perftest:comprehensive(10000,
    fun() ->
      messaging:request(?EXCHANGE, default, ping, self()),
      receive
        #'$msg'{message = pong} -> ok
      after 5000 ->
        throw(timeout)
      end
    end
  ),
  true = lists:any(fun(E) -> E >= 30000 end, W),
  ok.

1 ์Šคํฌ๋ฆฝํŠธ : ํ…Œ์ŠคํŠธ๋Š” ์ด์ „ i7 ๋ชจ๋ฐ”์ผ ๋ฒ„์ „์ด ์„ค์น˜๋œ ๋…ธํŠธ๋ถ์—์„œ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ, ๋ฉ”์‹œ์ง• ๋ฐ ์„œ๋น„์Šค๋Š” ํ•˜๋‚˜์˜ Docker ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Sequential 10000 cycles in ~0 seconds (26987 cycles/s)
Sequential 20000 cycles in ~1 seconds (26915 cycles/s)
Sequential 100000 cycles in ~4 seconds (26957 cycles/s)
Parallel 2 100000 cycles in ~2 seconds (44240 cycles/s)
Parallel 4 100000 cycles in ~2 seconds (53459 cycles/s)
Parallel 10 100000 cycles in ~2 seconds (52283 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (49317 cycles/s)

2 ์Šคํฌ๋ฆฝํŠธ: NAT(Docker) ์•„๋ž˜์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋Š” 3๊ฐœ์˜ ๋…ธ๋“œ.

Sequential 10000 cycles in ~1 seconds (8684 cycles/s)
Sequential 20000 cycles in ~2 seconds (8424 cycles/s)
Sequential 100000 cycles in ~12 seconds (8655 cycles/s)
Parallel 2 100000 cycles in ~7 seconds (15160 cycles/s)
Parallel 4 100000 cycles in ~5 seconds (19133 cycles/s)
Parallel 10 100000 cycles in ~4 seconds (24399 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (34517 cycles/s)

๋ชจ๋“  ๊ฒฝ์šฐ์— CPU ์‚ฌ์šฉ๋ฅ ์€ 250%๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

๋‚˜๋Š” ์ด ์‚ฌ์ดํด์ด ๋งˆ์Œ์˜ ๋คํ”„์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ๋‚ด ๊ฒฝํ—˜์ด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์—ฐ๊ตฌ์›๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•์˜ ์‹œ์ž‘ ๋‹จ๊ณ„์— ์žˆ๊ณ  Erlang/Elixir์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์‹ค๋ฌด์ž ๋ชจ๋‘์—๊ฒŒ ์‹ค์งˆ์ ์ธ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. , ํ•˜์ง€๋งŒ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์˜์‹ฌ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค ...

ะคะพั‚ะพ @chuttersnap

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

VTrade ์‹คํ—˜ ์‹œ๋ฆฌ์ฆˆ์˜ ์ผ๋ถ€๋กœ ์–ด๋–ค ์ฃผ์ œ๋ฅผ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  • ์ด๋ก : ์‹œ์žฅ, ์ฃผ๋ฌธ ๋ฐ ํƒ€์ด๋ฐ: DAY, GTD, GTC, IOC, FOK, MOO, MOC, LOO, LOC

  • ์ฃผ๋ฌธ์„œ. ๊ทธ๋ฃนํ™”๋ฅผ ํ†ตํ•œ ์ฑ… ๊ตฌํ˜„์˜ ์ด๋ก ๊ณผ ์‹ค์ œ

  • ๊ฑฐ๋ž˜ ์‹œ๊ฐํ™”: ํ‹ฑ, ๋ฐ”, ํ•ด์ƒ๋„. ๋ณด๊ด€๋ฐฉ๋ฒ•๊ณผ ์ ‘์ฐฉ๋ฐฉ๋ฒ•

  • ๋ฐฑ์˜คํ”ผ์Šค. ๊ธฐํš ๋ฐ ๊ฐœ๋ฐœ. ์ง์› ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์‚ฌ๊ณ  ์กฐ์‚ฌ

  • API. ์–ด๋–ค ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•„์š”ํ•œ์ง€, ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.

  • ์ •๋ณด ์ €์žฅ: ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์˜ PostgreSQL, Timescale, Tarantool

  • ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์˜ ๋ฐ˜์‘์„ฑ

  • ๋‹ค๋ฅธ. ๋Œ“๊ธ€์— ์“ฐ๊ฒ ์Šต๋‹ˆ๋‹ค

6๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 4๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€