MMO RPG์ฒ˜๋Ÿผ ๋Œ€๊ทœ๋ชจ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒŒ์ž„์€ ์–ด๋ฆผ๋„ ์—†์ง€๋งŒ... ์ผ๋ฐ˜์ ์ธ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„๋ฅ˜๋Š”
์‹ค์‹œ๊ฐ„์ด ์•„๋‹Œ ์ด์ƒ์€ ์›น์„œ๋ฒ„(WAS)๋ฅผ ์‚ฌ์šฉํ•จ



๊ธฐ์ˆ  ์Šคํƒ์€ ๋Œ€๊ฐœ ์•„๋ž˜์™€ ๊ฐ™์Œ.
๊ณผ๊ฑฐ๋ถ€ํ„ฐ ์ฆ๊ฒจ ์“ฐ์ด๋˜ ๊ฒƒ์€ php๊ณ 
๋‚˜๋Š” ์ฃผ๋กœ java๋ฅผ ์ด์šฉํ•จ



Php + mysql + memcached + codeigniter + nginx ๋“ฑ์ด ์“ฐ์˜€์Œ. ์š”์ฆ˜๋„ ์‹ ๊ทœ ๊ฐœ๋ฐœ ๋•Œ ์„œ๋ฒ„ ์ชฝ์€ ์ด๊ธฐ์ˆ ์„ ์„ ํƒํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ..๊ธฐ์กด์— ์ต์ˆ™ํ•ด์ ธ์„œ ํŽธํ•ด์„œ ์ธ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•จ



Java + mysql + mybatis + redis + tomcat + spring boot
๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ณผ๊ฑฐ์—๋Š” php๋กœ ๊ตฌ์ถ•์„ ํ•˜๋‹ค๊ฐ€
์š”์ฆ˜์—๋Š” ์ด๋Ÿฐ ๊ธฐ์ˆ ์Šคํƒ์„ ์„ ํƒํ•ด์„œ ์“ฐ๊ณ  ์žˆ์–ด



์š”์ฆ˜์€ node.jsํ•˜๊ณ  mongodb๋„ ๋งŽ์ด ์“ฐ๋Š”๊ฑฐ ๊ฐ™๋”๋ผ
๊ธฐ์กด์— ์จ์„œ ์ต์ˆ™ํ•˜๋‹ค๋ฉด node.js๋„ ์ข‹์€ ์„ ํƒ์ง€ ๊ฐ™์€๋ฐ
๋น„์ „๊ณต์ž๋ผ๋ฉด ์ข‹์€ ์„ ํƒ์ง€๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ด
์ผ๋‹จ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์ž˜๋ชปํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์–ด๋ฒ„๋ฆฌ๋Š”๋ฐ
๋ช‡๋ช‡์€ ๊ทธ๊ฑด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์•ˆํ•œ ๊ฐœ๋ฐœ์ž ์ž˜๋ชป์ด๋‹ค๋ผ๊ณ  ๋งํ•˜์ง€๋งŒ
์œ„์˜ ๋‹ค๋ฅธ ์„œ๋ฒ„๋“ค์€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ž˜๋ชปํ–ˆ๋‹ค๊ณ  WAS ์ž์ฒด๊ฐ€
์ฃฝ์–ด๋ฒ„๋ฆฌ์ง€ ์•Š์•„
์ฆ‰ ์ž…๋ฌธํ•˜๊ธฐ ์‰ฌ์šด ๋Œ€์‹  ์‚ฌ์šฉํ•˜๊ธฐ ์กฐ๊ธˆ ๊นŒ๋‹ค๋กญ๋‹ค๊ณ  ๋ด
๋ฌผ๋ก  ๋”ฅํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€๋ฉด ์–ด๋А ์„œ๋ฒ„ ์—”์ง„์ด๋‚˜ ํŠœ๋‹์„ ํ•ด์•ผ๊ฒ ์ง€๋งŒ
Node.js๋Š” ๋‹จ์ผ์ฝ”์–ด, ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ์ธ์ง€๋ผ
ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์˜ฌ๋ ค์„œ ์šด์˜ํ•œ๋‹ค ํ•˜๋“œ๋ผ๊ณ ...



๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ
L4 ์Šค์œ„์น˜ ์žฅ๋น„๋ฅผ...์ธ๋””๊ฒœ ๊ทœ๋ชจ์—์„œ ์“ธ๋ฆฌ๋Š” ์—†์„ํ…Œ๊ณ 
๋ณดํ†ต ์ ์šฉํ•˜๋ฉด HAproxy ์จ์„œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์ฒ˜๋Ÿผ ์šด์šฉํ• ํ…๋ฐ
์ •์„์€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•˜๋Š” ๊ฑฐ๊ฒ ์ง€๋งŒ
์ดˆ๋‹น ์š”์ฒญ์ˆ˜ ๋ช‡๋ฐฑ ์ˆ˜์ค€์€ ๊ฑ WAS ํ•œ๋Œ€ ์จ๋„ ๋ผ
์ฐธ๊ณ ๋กœ ์ดˆ๋‹น์š”์ฒญ์ˆ˜ ๋ช‡๋ฐฑ์ด๋ž€ ์ด์•ผ๊ธฐ๋Š”
๋™์‹œ์ ‘์†์ž๊ฐ€ ๋ช‡์ฒœ~๋ช‡๋งŒ ์ด๋ž€ ์ด์•ผ๊ธฐ๊ณ 
์ด๋Š” ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์œ ์ €์ˆ˜๊ฐ€ 10๋งŒ~50๋งŒ ์ •๋„ ๋œ๋‹ค๋Š” ๊ฑฐ์ž„



์ผ๋‹จ ์™œ WAS 1๋Œ€๊ฐ€ ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ด๋ƒ๊ณ  ํ•˜๋ฉด
Was๊ฐ€ ์—ฌ๋Ÿฌ๋Œ€์ธ ๊ฒฝ์šฐ์—๋Š” ์„ธ์…˜์„ ๊ณต์œ ํ•ด์ค˜์•ผํ•ด
์„ธ์…˜์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ
๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ ˆ๋””์Šค์— ํ†ฐ์บฃ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์˜ฌ๋ ค์„œ
์‚ฌ์šฉํ•จ



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



๋ฌผ๋ก  ๊ฒŒ์ž„์ด ๋Œ€๋ฐ•ํ„ฐ์ ธ์„œ ์ œ๋Œ€๋กœ ์šด์˜์„ ํ•˜๋ ค๋ฉด
์ ‘์†์ž ์ˆ˜์— ๋”ฐ๋ผ์„œ ์˜คํ†  ์Šค์ผ€์ผ์—… ํ•ด์•ผํ•˜๋Š”๋ฐ
์ด์ •๋„ ์ˆ˜์ค€ ๋˜๋ฉด ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ๋‚˜์„๊ฑฐ์•ผ.



์•”ํŠผ ๋‚ด๊ฐ€ ์ถ”์ฒœํ•˜๋Š” ๊ฑฐ๋Š”
was๊ฐ€ 1๋Œ€๋ผ๊ณ  ํ•˜์ง€๋งŒ ์„œ๋ฒ„ ๋Œ€์ˆ˜๊ฐ€ 1๋Œ€๋Š” ์•„๋‹˜
๋ญ”์†Œ๋ฆฌ๋ƒ๋ฉด
DB์„œ๋ฒ„ - ์บ์‹œ์„œ๋ฒ„(๋ ˆ๋””์Šค) - WAS์„œ๋ฒ„์•ผ
๋ฌผ๋ก  DB์„œ๋ฒ„๋„ ์กฐ๊ธˆ ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€๋ฉด
๋งˆ์Šคํ„ฐDB/์Šฌ๋ ˆ์ด๋ธŒDB
๋กœ๊ทธDB ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ ์•ผ ํ•˜๋Š”๋ฐ...
๊ทธ๋Ÿฌ๋ฉด ์„œ๋ฒ„ ์ž„๋Œ€๋ฃŒ๊ฐ€ ์›” 10๋งŒ์› ๋„˜๊ฒŒ ๋‚˜์˜ฌํ…Œ๋‹ˆ
์ผ๋‹จ์€ master DB ํ•œ๋Œ€๋กœ๋„ ๋‚˜์˜์ง€ ์•Š์•„



์œ ์ €์ •๋ณด๋‚˜ ๊ณ„์ •์ •๋ณด ๊ฒŒ์ž„ ์ •๋ณด ๊ฐ™์€๊ฑด
์œ„์˜ WAS๋ฅผ ํ†ตํ•ด์„œ ํ•˜๋ฉด ๋˜๊ณ ,
๋ฃธ ๊ธฐ๋ฐ˜์˜ ์‹ค์‹œ๊ฐ„ ๋Œ€์ „ ๋ฐฉ์‹์ด๋ผ๋ฉด
์—ฌ๊ธฐ์— Poton Pun2๋ฅผ ๋ณ‘์šฉ์—์„œ ์“ฐ๊ฑฐ๋‚˜...
์•„๋‹ˆ๋ฉด Amazon Lamdaํ•˜๊ณ  Gamelift๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„
ํ•˜๋‚˜์˜ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ ์ƒ๊ฐํ•ด



์™œ db์™€ ์บ์‹œ, was ์„œ๋ฒ„๋ฅผ ๋‚˜๋ˆ„๋ƒ๋ฉด
๋ถ€์ˆ˜์ ์œผ๋กœ๋Š” ๊ด€๋ฆฌ์ ์ธ ํŽธ์˜์„ฑ์ด ์žˆ๊ณ 
์ฃผ๋œ ์›์ธ์€ ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์„ ๊ฑธ๊ธฐ ์œ„ํ•ด์„œ์•ผ
DB์„œ๋ฒ„๋‚˜ ์บ์‹œ ์„œ๋ฒ„๋Š” Was ์„œ๋ฒ„๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ
๋ฐฉํ™”๋ฒฝ์„ ๊ฑธ์–ด์ฃผ๋Š”๊ฒŒ ์ข‹์•„.
๋ฐฉํ™”๋ฒฝ ๊ฑฐ๋Š”๊ฑด iptable ์„ค์ • ํ•˜๋Š” ๊ฒƒ๋„ ์žˆ๊ธด ํ•œ๋ฐ
Aws ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ฝ˜์†”์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ
์ด๊ฒŒ ๋‚ซ์ง€ ์‹ถ์–ด.


Java๋ƒ php๋ƒ node.js๋ƒ๋Š” ์งˆ๋ฌธ์—๋Š”
๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ตณ์ด ์ž๋ฐ”๋ฅผ ์“ธ ํ•„์š” ์—†์ด
Node.js๋‚˜ php๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๋ด.



๊ทผ๋ฐ ์„œ๋ฒ„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋‹จ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋กœ์ง์ด ๋Œ์•„๊ฐ€๊ณ 
์„œ๋ฒ„ ๋กœ์ง์ด ๋ณต์žกํ•˜๊ฒŒ ๋Œ์•„๊ฐˆ ๊ฒฝ์šฐ์—๋Š”
์ž๋ฐ”๋ฅผ ์ถ”์ฒœํ•ด
์ผ๋‹จ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๊ณ ,
crontab์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ค˜์•ผ ํ•˜๋Š”
Php์™€ ๋‹ฌ๋ฆฌ, ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ crontab์ฒ˜๋Ÿผ
์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด.
๊ฒŒ๋‹ค๊ฐ€ java๊ฐ€ ๋А๋ฆฌ๋‹ค ๋А๋ฆฌ๋‹ค ํ•˜์ง€๋งŒ
Php๋ž‘ ๋ž‘ ๋น„๊ตํ•˜๋ฉด ๊ฒ๋‚˜ ๋นจ๋ผ
C++๋กœ ์งœ๋ฉด 1์ดˆ ๊ฑธ๋ฆด ์—ฐ์‚ฐ์ด ์žˆ๋‹ค ์น˜๋ฉด
C#์ด๋ฉด 3์ดˆ, java๋ฉด 5์ดˆ ์ •๋„๊ฐ€ ๊ฑธ๋ ค
๊ทธ๋ฆฌ๊ณ  php๋Š” 20์ดˆ ๊ฐ€๋Ÿ‰์ด ๊ฑธ๋ฆฌ๊ณ ,
๋Š” 40์ดˆ ๊ฐ€๋Ÿ‰์ด ๊ฑธ๋ ค



์ด๊ฑด ๋‹ค์‹œ ๋งํ•ด์„œ ์ž๋ฐ”๋กœ ์งœ๋ฉด ์„œ๋ฒ„ 1๋Œ€๋ฉด ๋  ์—ฐ์‚ฐ์ด๋ฉด
๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ php๋Š” ์„œ๋ฒ„๊ฐ€ 4๋Œ€๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๋‹จ ์ด์•ผ๊ธฐ์•ผ



๋ฌผ๋ก  ์—ฌ๊ธฐ์„œ ๋” ์ฝ”์–ดํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€๋ฉด
JNI๋ฅผ ์จ์„œ C++์˜ ํž˜์„ ๋นŒ๋ฆฌ๊ธฐ๋„ ํ•˜๋Š”๋ฐ
๊ทธ์ •๋„ ๋ ˆ๋ฒจ์ด ํ•„์š”ํ•œ ๊ฒŒ์ž„์„ ๋งŒ๋“ ๋‹ค๋ฉด
์ „๋ฌธ๊ฐ€๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ๋‚ซ๊ณ 
์ „๋ฌธ๊ฐ€๋ฅผ ๋ชป๊ตฌํ•˜๊ฒ ์œผ๋ฉด ์ƒ์šฉ ๊ฒŒ์ž„ ์„œ๋ฒ„ ์—”์ง„์„
๋„์ž…ํ•˜๋Š”๊ฒŒ ์ฐจ๋ผ๋ฆฌ ๋‚˜์„ ๋“ฏ ์‹ถ์–ด



๊ทธ๋ฆฌ๊ณ  ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์ถ”์ฒœํ•˜๋Š” ์ด์œ ๋Š”
Spring security๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์•ผ
์ž์ฒด ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด๋‚˜ ์™ธ๋ถ€ ๋กœ๊ทธ์ธ ์—ฐ๋™ (Oauth2.0) ๋“ฑ์„
์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด
์—ฌ๊ธฐ์„œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ง์ ‘ ๊ฐœ๋ฐœ๋„ ๋ชปํ•˜๋ƒ
์™œ ๋กœ๊ทธ์ธ์„ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ƒ๋Š” ์• ๋“ค๋„ ์žˆ์„ํ…๋ฐ
์–ด์„คํ”„๊ฒŒ ๋งŒ๋“ค๋‹ค๊ฐ€ ์งฑ๊ฐœ ์• ๋“คํ•œํ…Œ ์„œ๋ฒ„ ํ„ธ๋ ค์„œ
๊ฐœ์ธ์ •๋ณด ์œ ์ถœ ๋˜์—ˆ๋‹ค๊ณ  ์งˆ์งˆ ์งœ๋ฉด์„œ ๊ณต์ง€ ์˜ฌ๋ฆฌ์ง€ ๋ง๊ณ 
ํŒ€๋‚ด ๋ณด์•ˆ ๋‹ด๋‹น์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ชจ๋ฅผ๊นŒ
์—†์œผ๋ฉด ๊ฐœ๋ฐœ๋ถ€์‹ฌ ๋ถ€๋ฆฌ์ง€ ๋ง๊ณ  ๋ณด์•ˆ์ ์ธ ๋ถ€๋ถ„์€
๊ฒ€์ฆ๋œ ์†”๋ฃจ์…˜์— ๋งก๊ฒจ



๋Œ€๋žต์ ์œผ๋กœ 1๋‹ฌ์ด๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ
์Šคํ”„๋ง ๋ถ€ํŠธ ์ฑ…์„ ์ฐพ๋Š”๋‹ค๋ฉด
๊ฐ€๊ธ‰์ ์ด๋ฉด ์ €์ž๊ฐ€ ์™ธ๊ตญ์ธ์ธ ๋ฒˆ์—ญ์„œ๋ฅผ ๊ณจ๋ผ
Spring framework๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์“ฐ๋ผ๊ณ  ๋‚˜์˜จ๊ฒŒ
spring boot์ธ๋ฐ... ํ•œ๊ตญ์€ SI ๋ฐ”๋‹ฅ์˜ ํŠน์„ฑ ์ƒ
์–ด๋А ์ฑ…์ด๊ฑด spring framework๋ฅผ ๋‹ค๋ฃธ
์–ด๋”œ๊ฐ€๋‚˜ ์›๋ฆฌ ์ฐพ๋Š” ๋ณ‘์‹ ์€ ์กด์žฌํ•ด์„œ
์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋ฅด๋Š”๋ฐ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์“ฐ๋ƒ๊ณ 
๋”ธ๋”ธ์ด ์น˜๋Š” ์• ๋“ค๋„ ์žˆ๋Š”๋ฐ
๋ชฐ๋ผ๋„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€๊ฒŒ spring boot์ž„



์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅธ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด...
์„œ๋ฒ„๋Š” ๊ฐ€๊ธ‰์  ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•จ
ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐœ์ ํ™”ํ•˜๋ฉด ๊ฒŒ์ž„์ด ๋А๋ ค์งˆ ๋ฟ์ด์ง€๋งŒ
์„œ๋ฒ„๋Š” ๋ฐœ์ ํ™”ํ•˜๋ฉด ๊ทธ๊ฒŒ ๋‹ค ๋น„์šฉ์œผ๋กœ ๋˜๋Œ์•„์˜ฌ ๋ฟ๋”๋Ÿฌ
๊ฐœ์ธ์ •๋ณด ์œ ์ถœ์ด๋ผ๋„ ๋˜๋ฉด ๊ณจ์น˜์•„ํŒŒ์ง



์ • ์จ์•ผํ•œ๋‹ค ์‹ถ์œผ๋ฉด
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•  ์ •๋„๋กœ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š”๊ฒŒ ์ข‹์•„


์„ค๊ณ„์—์„œ ๋ฐ˜์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค์€
๊ฐœ์ธ์ •๋ณด (์ด๋ฆ„ ๋‚˜์ด ์„ฑ๋ณ„ ์ฃผ์†Œ ์—ฐ๋ฝ์ฒ˜)๋“ฑ์€ ๊ฐ€๊ธ‰์ 
์ˆ˜์ง‘ํ•˜์ง€ ๋ง๊ณ , ๋งŒ์— ํ•˜๋‚˜ ์ˆ˜์ง‘ํ•˜๋ฉด
๊ฒŒ์ž„DB์™€๋Š” ๋ณ„๋„์˜ DB์— ์•”ํ˜ธํ™”ํ•ด์„œ ๋ณด๊ด€ํ•ด์•ผํ•จ
ํœด๋ฉด๊ณ„์ • ์—ญ์‹œ ๊ฒŒ์ž„DB์™€๋Š” ๋ณ„๋„์˜ ํœด๋ฉด๊ณ„์ •์šฉ DB์—
์˜ฎ๊ฒจ ๋ณด๊ด€ํ•ด์„œ, ๋งŒ์—ํ•˜๋‚˜ ๊ฒŒ์ž„DB๊ฐ€ ํ„ธ๋ ค๋„
ํœด๋ฉด๊ณ„์ •์€ ์•ˆํ„ธ๋ฆฌ๊ฒŒ ์กฐ์น˜ํ•ด์•ผํ•จ.
๋” ๋”ฅํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€๋ฉด ๊ฒŒ์ž„ ์•ฝ๊ด€ ๊ฐ™์€ ๊ฒƒ๋„ ๊ณ ์ง€ํ•ด์•ผํ•˜๊ณ 
์–ธ์ œ ๋™์˜ํ–ˆ๋Š”์ง€ ๋™์˜ ์ผ์ž๋„ ์ €์žฅํ•ด์„œ ์„œ๋ฒ„์— ๋ณด๊ด€ํ•ด์•ผํ•จ


์›น ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์–ด๋А๊ฒŒ ์‰ฝ๋ƒ ์–ด๋ ต๋ƒ ํ•˜๋Š”๋ฐ
์–ด์ฐจํ”ผ Json์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ  ๋ฐ›๋Š” API ๋งŒ๋“ค๊ฑฐ๋ฉด
Spring boot๋„ ์ถฉ๋ถ„ํžˆ ์‰ฝ๋‹ค๊ณ  ๋ด„
์ผ๋‹จ php๋Š” json ์ธ์ฝ”๋”ฉ ๋””์ฝ”๋”ฉ ํ•ด์„œ ์‚ฝ์งˆํ•ด์•ผ ๋˜๋Š”๋ฐ ๋ฐ˜ํ•ด
Spring boot๋Š” rest controller๋กœ ๋งŒ๋“ค์–ด์„œ
์˜ค๋ธŒ์ ํŠธ๋ฅผ returnํ•˜๋ฉด ๊ทธ๊ฒŒ json ํ˜•ํƒœ๋กœ ๋™‡ ์ฐํž˜
๊ทธ๋ฆฌ๊ณ  ์œ ์ €๊ฐ€ ์š”์ฒญํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ์›ํ•˜๋Š” ํด๋ž˜์Šค ํ˜•ํƒœ๋กœ
๋ฐ”์ธ๋”ฉ์ด ๊ฐ€๋Šฅ

์•„ ์ฐธ๊ณ ๋กœ
์Šคํ”„๋ง์—๋Š” DI(์˜์กด์„ฑ ์ฃผ์ž…)ํ•˜๊ณ  IoC(์ œ์–ด์˜ ์—ญ์ „)์ด๋ž€
๊ฐœ๋…์ด ์กด์žฌํ•˜๋Š”๋ฐ
์ด๊ฒŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ๊ต‰์žฅํžˆ ์ƒ์†Œํ•œ ๊ฐœ๋…์ด ๋  ์ˆ˜๋„ ์žˆ์–ด
์ต์ˆ™ํ•ด์ง€๋ฉด ์ •๋ง ํŽธํ•˜์ง€๋งŒ ์•ˆ๋งž์œผ๋ฉด ์Šคํ”„๋ง ๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ
ํ”„๋กœ์ ํŠธ๊ฐ€ ์ ํ•ฉํ• ์ง€๋„ ๋ชฐ๋ผ

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

ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌ ๋ฐ›๋Š” ๋ถ€๋ถ„
ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ถ€๋ถ„
์œ ์ €์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ถ€๋ถ„

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

๋ฐ˜๋ฉด์— ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด
๊ฐ๊ฐ์˜ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜์ ธ์ฃผ๊ณ 
๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋น„๊ตํ•ด๋ด„์œผ๋กœ์จ
ํ•ด๋‹น ๋ถ€๋ถ„์ด ์ž˜ ๋Œ์•„๊ฐ€๋Š”์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์ฆ์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด

๋งˆ์ง€๋ง‰์œผ๋กœ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” Jmeter๋‚˜
nGrinder๋“ฑ์ด ์žˆ๋Š”๋ฐ
๊ฐ๊ฐ์˜ endpoint ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ api ํ˜ธ์ถœ๋˜๋Š” url ๊ฒฝ๋กœ๋ฅผ
๋„ฃ๊ณ  api๋ฅผ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด

๋‹จ์ˆœ ์กฐํšŒ ๊ฐ™์€ ๊ฑฐ๋Š” ์‘๋‹ต์†๋„๊ฐ€ 10ms ์ด๋‚ด๋กœ ๋‚˜์™€์•ผํ•ด
๊ทธ๋Ÿฌ๋ฉด ํ†ฐ์บฃ์„œ๋ฒ„๊ฐ€ ์ตœ๋Œ€ ์ ‘์†์ž์ˆ˜๋ฅผ 100๋ช…, ์ตœ๋Œ€์“ฐ๋ ˆ๋“œ ์ˆ˜๋ฅผ
100๊ฐœ ์ด์ƒ(๋ณดํ†ต์€ ์ตœ๋Œ€ ์ ‘์†์ž ์ˆ˜์˜ 2๋ฐฐ ์ •๋„) ์„ค์ •ํ•ด๋†“์œผ๋ฉด
์ด๋ก ์ ์œผ๋กœ๋Š” ์ดˆ๋‹น 1๋งŒ๊ฑด์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด
๋ฌผ๋ก  ์„œ๋ฒ„ cpu ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ด๊ฐ€๋ฉด์„œ
์„œ๋ฒ„์—์„œ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ‘์†์ž ์ˆ˜์™€ ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ ์ˆ˜๋ฅผ
๊ฒฐ์ •ํ•˜๋ฉด ๋จ.

๋ฌผ๋ก  aws ํ”„๋ฆฌํ‹ฐ์–ด ๊ฐ™์€ ๊ฑฐ์—์„œ ์„œ๋ฒ„ 1๋Œ€ ์ดˆ๋‹น 1๋งŒ๊ฑด ๊ฐ€๋Šฅ?
์ด์ง€๋ž„ ํ•˜๋ฉด ์•„๊ตฌ์ฐฝ ๋•Œ๋ ค์•ผ ํ•˜๊ณ 
๋ชปํ•ด๋„ ์ƒ์šฉ์„œ๋ฒ„๋Š” 4์ฝ”์–ด 8๊ธฐ๊ฐ€ ์งœ๋ฆฌ ์จ ์ฃผ์ž
์›” ๋ช‡๋งŒ์› ์งœ๋ฆฌ์•ผ.
๋ณดํ†ต์€ cpu๊ฐ€ 20~30% ์ •๋„ ์‚ฌ์šฉ๋˜๋ฉด
์„œ๋ฒ„ ์ฆ์„ค์„ ํ•ด์•ผํ•˜๋Š” ์‹œ์ ์ธ๋ฐ...
์•„ ๋ชฐ๋ผ ๋๊นŒ์ง€ ๊ฐ€์ž ใ……ใ…‚ ํ•˜๋ฉด์„œ 80~90%๊นŒ์ง€ ์“ฐ๋ฉด
์ด๋ก ์ ์œผ๋กœ๋Š” ์ดˆ๋‹น 10๋งŒ๊ฑด๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ...
์ง„์งœ ์ด๋”ฐ๊ตฌ๋กœ ์“ฐ๋ฉด ์‚๋—ํ•˜๋ฉด ์„œ๋ฒ„ ๋’ค์ง€๋Š” ๊ฑฐ๋‹ˆ๊นŒ



์—์ด ์„œ๋ฒ„ 1๋Œ€๋กœ ๋ฌด์Šจ TPS 10๋งŒ๊ฑด์ด์—์š” ํ•˜๋ฉด
์‚ฌ์‹ค ๋งž๋Š” ๋ง์ž„. ์บ์‹œ ์„œ๋ฒ„๊ฐ€ ๋ชป๋ฒ„ํ‹ธ๊ป„?
์บ์‹œ์„œ๋ฒ„๋„ ์„œ๋ฒ„ ์‚ฌ์–‘์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ฒ ์ง€๋งŒ
๊ฐ™์€ ์‚ฌ์–‘์—์„œ mysql์ด tps 200๊ฑด ๋‚˜์˜จ๋‹ค์น˜๋ฉด
Redis๋Š” 40000๊ฑด ์ •๋„ ๋‚˜์˜จ๋‹ค ๋ณด๋ฉด ๋จ.
๋ฌผ๋ก  4๋งŒ๊ฑด ๋„๋‹ฌ ํ•  ๋•Œ๊นŒ์ง€ ๋†”๋‘์ง€ ์•Š๊ณ 
๋ณดํ†ต์€ 1๋งŒ๊ฑด ์•ˆํŒŽ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋ฅผ ๋Š˜๋ฆผ
์ฆ‰ Was๊ฐ€ ์ดˆ๋‹น 10๋งŒ๊ฑด์„ ์š”์ฒญํ•˜๋ฉด ๋Œ€๋žต ๋ ˆ๋””์Šค ์„œ๋ฒ„๋Š”
๋ถ„์‚ฐ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ 10๋Œ€๊ฐ€ ํ•„์š”ํ•˜๋‹จ ๊ฑฐ์ž„.
๋ฌผ๋ก  ์ œ๋Œ€๋กœ ๊ฐœ๋… ๋ฐ•ํžŒ ํšŒ์‚ฌ๋Š”... was ํ•œ๋Œ€์— 10๋งŒ๊ฑด
๋ฌผ๋ฆฌ๊ฒŒ ๋ƒ…๋‘์ง€ ์•Š๋Š”๋ฐ... ์„œ๋ฒ„ ํญ์ฃผ ์ค‘์ด๋ผ๊ณ  ๋กœ๊ทธ์ธ ๋Œ€๊ธฐ
์‹œํ‚ค๋Š” ํšŒ์‚ฌ๋„ ๋งŽ์–ด ใ„ฒใ„ฒ ๋ชจ๋“  ํšŒ์‚ฌ๊ฐ€ ์˜คํ†  ์Šค์ผ€์ผ์—…
๊ฐ™์€๊ฑธ ํ•˜๋Š”๊ฑด ์•„๋‹˜





์“ฐ๋‹ค๋ณด๋‹ˆ ์กด๋‚˜ ๊ธธ์–ด์กŒ๋„ค...
์•”ํŠผ ๊ฒŒ์ž„ ์„œ๋ฒ„ ๊ตฌ์ถ•์— ๋„์ „ํ•˜๋Š” ์‚ฌ๋žŒ์€ ํŒŒ์ดํŒ…ํ•ด