Home > ๐Ÿ“– ๊ฐœ์ธ ๊ณต๋ถ€ > ๐Ÿ‘‰ Apache Hadoop > ๐Ÿ“˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์ดํ•ด์™€ ํ•˜๋‘ก์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

๐Ÿ“˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์ดํ•ด์™€ ํ•˜๋‘ก์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ
Apache Hadoop Study

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

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

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

์ด ๊ธ€์—์„œ๋Š” ํ•˜๋‘ก์„ ์™œ ์—ฌ์ „ํžˆ ๊ณต๋ถ€ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ์— ์•ž์„œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๋จผ์ € ํ•™์Šตํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


โ—ˆ


๐Ÿ˜ 1. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋“ฑ์žฅ ์ด์ „์˜ ์‹œ๋Œ€

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

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

๐Ÿ˜ 1.1. ์ปดํ“จํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ ํ•ด์™”์„๊นŒ


โœ… 1.1.1. 1930๋…„๋Œ€ ์ปดํ“จํ„ฐ์˜ ์‹œ์ž‘

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

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

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

โœ… 1.1.2. ์ปดํ“จํ„ฐ ๊ตฌ์กฐ์˜ ์ค‘์š”ํ•œ ์ „ํ™˜์ 

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

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

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฐœ๋…์ด ๋ฐ”๋กœ โ€˜์ €์žฅ ํ”„๋กœ๊ทธ๋žจ ๋ฐฉ์‹(stored-program concept)โ€™์ž…๋‹ˆ๋‹ค. ์ด ๊ฐœ๋…์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํ“จํ„ฐ์˜ ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅํ•˜๊ณ , CPU๊ฐ€ ์ด๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰ํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณ€๊ฒฝ์ด ํ›จ์”ฌ ์œ ์—ฐํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ์ปดํ“จํ„ฐ๊ฐ€ ์ง€๊ธˆ์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์†์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์ด ๋งˆ๋ จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

storedProgram

์ถœ์ฒ˜ : Stored Program Image ์ถœ์ฒ˜

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

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

โœ… 1.1.3. ๊ฐœ์ธ PC ์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋Œ€์ค‘ํ™”

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

1981๋…„, IBM์ด ๋ฐœํ‘œํ•œ IBM PC๋Š” ์ธํ…”์˜ 8086 ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์ดํ›„ ๋ฐ์Šคํฌํ†ฑ PC์˜ ํ‘œ์ค€์ด ๋˜์—ˆ๊ณ , ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ๋งŽ์€ ์ปดํ“จํ„ฐ๊ฐ€ x86 ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. x86 ์•„ํ‚คํ…์ฒ˜๋Š” CPU๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

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

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

๐Ÿ’ก x86 ์•„ํ‚คํ…์ฒ˜๋ž€?
x86 ์•„ํ‚คํ…์ฒ˜๋Š” ์ธํ…”์ด ๋งŒ๋“  8086 ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ์—์„œ ์‹œ์ž‘๋œ CPU์˜ ๋ช…๋ น์–ด ์ง‘ํ•ฉ ๊ตฌ์กฐ(Instruction Set Architecture, ISA)๋ฅผ ์ด์•ผ๊ธฐํ•จ.
์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋ฉด, CPU๊ฐ€ ์–ด๋–ค ๋ช…๋ น์–ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ •์˜ํ•œ ์ผ์ข…์˜ โ€˜์–ธ์–ด ์ฒด๊ณ„โ€™.

โœ… 1.1.4. Remote Procedure Call ( RPC ) ์˜ ๋“ฑ์žฅ

์ปดํ“จํ„ฐ๋Š” ์ธ๊ฐ„๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ปดํ“จํ„ฐ๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค๋ฉด, ๋ช…ํ™•ํ•œ ๋ช…๋ น์–ด๋งŒ ์ž…๋ ฅํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ์˜๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค.
โ€œ๋ฐ˜๋“œ์‹œ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋งŒ ๋ชจ๋“  ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ๊นŒ?โ€

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

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์˜์‹์—์„œ ๋“ฑ์žฅํ•œ ๊ฐœ๋…์ด ๋ฐ”๋กœ RPC(Remote Procedure Call)์ž…๋‹ˆ๋‹ค.

RPC๋Š” โ€˜์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœโ€™์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋ง ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์กด์žฌํ•˜๋Š” ํ•จ์ˆ˜(ํ”„๋กœ์‹œ์ €)๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งˆ์น˜ ๋‚ด ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ
int result = add(3, 5);

// ์‹ค์ œ๋กœ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์— ์žˆ๋Š” 'add' ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
// ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋กœ์ปฌ ํ˜ธ์ถœ์ฒ˜๋Ÿผ ์‚ฌ์šฉ

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

RPC๊ฐ€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹ค์šฉํ™”๋œ ๊ฒƒ์€ 1980๋…„๋Œ€์ž…๋‹ˆ๋‹ค. ํŠนํžˆ 1984๋…„, Sun Microsystems๊ฐ€ ์œ ๋‹‰์Šค ํ™˜๊ฒฝ์—์„œ ONC RPC(Open Network Computing RPC)๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์— ์ ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ๊ธฐ์— ๋“ฑ์žฅํ•œ ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋กœ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ(Client): ์š”์ฒญ(Request)์„ ๋ณด๋‚ด๋Š” ์ธก.
์„œ๋ฒ„(Server): ์š”์ฒญ์„ ๋ฐ›์•„ ์‘๋‹ต(Response)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธก.

RPC๋Š” ์ด ๊ตฌ์กฐ ์•ˆ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ†ต์‹ ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์š”์ฒญ-์‘๋‹ต(request-response) ํŒจํ„ด์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

โœ… 1.1.5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)์˜ ๋“ฑ์žฅ

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

์ด๋Ÿฌํ•œ ์‹œ๋Œ€์  ๋ฐฐ๊ฒฝ ์†์—์„œ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ(Database System)์ž…๋‹ˆ๋‹ค.

1970๋…„๋Œ€, IBM์˜ ์—ฐ๊ตฌ์›์ด์—ˆ๋˜ E.F. Codd๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”๋œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ(Relational Model)์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”(ํ–‰๊ณผ ์—ด)์˜ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ, ๋…ผ๋ฆฌ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ดํ›„ ์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐœ์ „ํ•œ ์‹œ์Šคํ…œ์ด ๋ฐ”๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

SQL์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์‚ฝ์ž…ํ•˜๊ณ , ์ˆ˜์ •ํ•˜๋ฉฐ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IBM์€ ์ด ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ 1983๋…„, ์„ธ๊ณ„ ์ตœ์ดˆ์˜ ์ƒ์šฉ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ IBM DB2๋ฅผ ์ถœ์‹œํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์žฅ์˜ ๋ฌธ์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, SQL(Structured Query Language)์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ, 1986๋…„ ANSI(๋ฏธ๊ตญํ‘œ์ค€ํ˜‘ํšŒ)์— ์˜ํ•ด ํ‘œ์ค€ํ™”๋ฉ๋‹ˆ๋‹ค.
SQL์˜ ํ‘œ์ค€ํ™”๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ๊ณผ ํ†ต์ผ์„ฑ์„ ๋†’์ด๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ๊นŒ์ง€๋„ ๋Œ€๋ถ€๋ถ„์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ‘œ์ค€ ์–ธ์–ด๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

-- ์˜ˆ: ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์—์„œ ์ด๋ฆ„์ด 'Hadoop' ์ด๋ผ๋Š” ๊ณ ๊ฐ์„ ์กฐํšŒ
SELECT * FROM customers WHERE name = 'Hadoop';

์ดํ›„ Oracle, MySQL, PostgreSQL ๋“ฑ ๋‹ค์–‘ํ•œ RDBMS๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด์„œ, ๋Œ€๋Ÿ‰์˜ ์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ํ™˜๊ฒฝ์ด ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค.

์ด ๋‹น์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•˜๋“œ์›จ์–ด ์ž์ฒด์˜ ์„ฑ๋Šฅ์„ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ์‹(Scale-Up)์œผ๋กœ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ๋“ฑ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ์‹์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ , ์ผ์ • ์ด์ƒ์œผ๋กœ๋Š” ํ™•์žฅ์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ๊ทน๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„ ํ•˜๋‘ก์ด๋ผ๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๊ฐ€ ๋˜๊ธฐ๋„ ํ•˜์˜€์œผ๋ฉฐ, ํ˜„์žฌ๋Š” ์ƒค๋”ฉ(Sharding) ์ด๋ผ๋Š” ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ Scale-Out ํ˜•ํƒœ๋กœ ์„ฑ๋Šฅ์„ ๋Š˜๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… 1.1.6. 3-Tier Architecture ์˜ ๋“ฑ์žฅ

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

์ด ๋ฐฉ์‹์€ ์†Œ๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ๋Š” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ๊ธ‰์ฆํ•˜๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„์— ์ง๋ฉดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ 3-Tier Architecture(3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜)์ž…๋‹ˆ๋‹ค.

1990๋…„๋Œ€ ์ค‘๋ฐ˜, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๊ฐ€ ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ 3-Tier Architecture๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ์„ธ ๊ฐœ์˜ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ณ„์ธต์€ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜๋˜๋ฉฐ, ์„œ๋กœ ๋ช…ํ™•ํ•œ ์ฑ…์ž„์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

โ–ถ 1. Presentation Tier (ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต)
์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ ‘ํ•˜๋Š” UI ๋ถ€๋ถ„์ด๋ฉฐ, ์›น ๋ธŒ๋ผ์šฐ์ €, ๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•ฉ๋‹ˆ๋‹ค.

โ–ถ 2. Application Tier (๋กœ์ง ๊ณ„์ธต)
์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค.

โ–ถ 3. Data Tier (๋ฐ์ดํ„ฐ ๊ณ„์ธต)
๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ณ„์ธต์ž…๋‹ˆ๋‹ค.

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

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

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ฐ ๊ณ„์ธต์€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ต์ฒดํ•  ๋•Œ ๋‹ค๋ฅธ ๊ณ„์ธต์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์šด์˜์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, RPC(Remote Procedure Call)๋‚˜ ์ „๋ฌธ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ(DBMS)๊ณผ์˜ ์—ฐ๊ณ„๊ฐ€ ์šฉ์ดํ•ด์ ธ ๊ณ„์ธต ๊ฐ„ ํ†ต์‹ ์ด ํšจ์œจ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ , ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ๋„ ํ›จ์”ฌ ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค.

3-Tier Architecture๋Š” ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ์ด ๋˜์—ˆ์œผ๋ฉฐ, ์ดํ›„ ๋“ฑ์žฅํ•˜๋Š” N-Tier Architecture, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(MSA) ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ฐ˜์ด ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

โœ… 1.1.7. Web-WAS-DB ๊ตฌ์กฐ์˜ ๋“ฑ์žฅ

3-Tier Architecture๊ฐ€ ๊ฐœ๋…์ ์œผ๋กœ ์ •๋ฆฝ๋œ ์ดํ›„, ์ด๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ์›น ํ™˜๊ฒฝ์—์„œ ๊ตฌํ˜„ํ•œ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋กœ Web-WAS-DB ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์ด ๊ตฌ์กฐ๋Š” ๊ฐ๊ฐ์˜ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ 1. Web Server(์›น ์„œ๋ฒ„)
์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ›์•„๋“ค์ด๋Š” ๊ณ„์ธต์ž…๋‹ˆ๋‹ค.
HTML, CSS, JS, ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์ •์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋‹จ์ˆœํ•œ ์š”์ฒญ์€ ์›น ์„œ๋ฒ„๊ฐ€ ์ง์ ‘ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์›น ์„œ๋ฒ„๋กœ๋Š” Apache, Nginx ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ 2. WAS(Web Application Server, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„)
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ„์ธต์œผ๋กœ, ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋ฐ์ดํ„ฐ ์กฐํšŒ, ๊ฒฐ์ œ ๋“ฑ ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” Tomcat, Spring Boot, JBoss ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ 3. Database(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„)
๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ณ„์ธต์œผ๋กœ, ์‚ฌ์šฉ์ž ์ •๋ณด, ์ƒํ’ˆ ์ •๋ณด, ๋กœ๊ทธ ๋“ฑ ์˜์†์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. MySQL, PostgreSQL, Oracle, MongoDB ๋“ฑ์˜ ์‹œ์Šคํ…œ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

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

Web-WAS-DB ๊ตฌ์กฐ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๊ณ„์ธต์˜ ์—ญํ• ์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ •์ ์ธ ์š”์ฒญ์€ ์›น ์„œ๋ฒ„์—์„œ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, WAS๋Š” ๋กœ์ง ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์š”์ฒญ๋งŒ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. DB๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ž์ฃผ ์š”์ฒญ๋˜๋Š” ์ •์  ์‘๋‹ต์€ ์บ์‹œ(Cache)๋กœ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘๊ณ , ๋™์ผํ•œ ์š”์ฒญ์ด ๋ฐ˜๋ณต๋  ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์ „์ฒด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์€ ์ˆ˜ํ‰ ํ™•์žฅ(Scale-Out) ๋ฐฉ์‹์œผ๋กœ ๋ฐœ์ „ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
WAS๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ถ„์‚ฐ์‹œํ‚ค๋ฉฐ MSA ๊ตฌ์กฐ๋กœ ์ ์ฐจ ๋ณ€ํ™”ํ•ด ๊ฐ”์œผ๋ฉฐ, DB๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•˜๋Š” ์ƒค๋”ฉ(Sharding)์ด๋‚˜ ํ•˜๋‘ก๊ณผ ๊ฐ™์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•˜์—ฌ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ˜ 1.2. ๊ธฐ์กด ์‹œ์Šคํ…œ์˜ ํ•œ๊ณ„์ 


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

์ด๋Ÿฌํ•œ ๋ฐœ์ „ ๊ณผ์ • ์†์—์„œ ๋“ฑ์žฅํ•œ ๋Œ€ํ‘œ์ ์ธ ๊ฐœ๋…์ด ๋ฐ”๋กœ ์œ„์—์„œ ์„ค๋ช…ํ•œ ํฐ ๋…ธ์ด๋งŒ ์•„ํ‚คํ…์ฒ˜์™€ x86 ๊ธฐ๋ฐ˜์˜ CPU ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.
์ด๋“ค ๊ฐœ๋…์„ ํ†ตํ•ด ์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘ ๋ฐฉ์‹์ด ํ‘œ์ค€ํ™”๋˜์—ˆ์œผ๋ฉฐ, ๋งŽ์€ ์‹œ์Šคํ…œ์ด ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ ๊ตฌ์กฐ๊ฐ€ ํ‘œ์ค€ํ™”๋œ ์ดํ›„์—๋Š” ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ๋” ๋น ๋ฅธ CPU๋กœ ๊ต์ฒดํ•œ๋‹ค๊ฑฐ๋‚˜, ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ต์ฒดํ•˜๋Š” ๋“ฑ, ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ์‹, ์ฆ‰ Scale-Up ๋ฐฉ์‹์œผ๋กœ ๋ฐœ์ „์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์˜จ๋ผ์ธ ์„œ๋น„์Šค๊ฐ€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ™•์‚ฐ๋˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๐Ÿ’ก ๋ฌด์–ด์˜ ๋ฒ•์น™
CPU ํŠธ๋žœ์ง€์Šคํ„ฐ ์ˆ˜๋Š” ์•ฝ 18~24๊ฐœ์›”๋งˆ๋‹ค ๋‘ ๋ฐฐ์”ฉ ์ฆ๊ฐ€
โ†’ ๊ทธ๋Ÿฌ๋‚˜ ์ด์กฐ์ฐจ๋„ ์˜ค๋Š˜๋‚ ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ๋‹นํ•˜๊ธฐ์—๋Š” ํ•œ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Œ.

์ด์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ์˜ ์ค‘์‹ฌ์€ ํ•˜๋“œ์›จ์–ด์—์„œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜๋ฐ–์— ์—†๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ Scale-Up ๋ฐฉ์‹์€ ๋” ์ข‹์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋„์ž…ํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ์ ‘๊ทผ์ด์—ˆ์ง€๋งŒ, ์ด๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๋ฉฐ ํ™•์žฅ์„ฑ์—๋„ ๋ถ„๋ช…ํ•œ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์— ๋”ฐ๋ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์ธ Scale-Out ์ „๋žต์„ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Scale-Out์€ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์‹œ์Šคํ…œ์„ ์—ฐ๊ฒฐํ•ด ์ „์ฒด ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์‹œ์Šคํ…œ ๊ฐ„ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์ค‘์š”ํ•œ ์กฐ๊ฑด์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๋ฉด ์ž์›์ด ๋งŽ์ด ์†Œ๋ชจ๋˜๊ฑฐ๋‚˜, ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ์ œ์•ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹จํŽธ์ ์œผ๋กœ ์‚ดํŽด๋ณด๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(Application Server)๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(Load Balancer)๋ฅผ ํ†ตํ•ด ์ „์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ณ„๋„์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•จ์œผ๋กœ์จ Scale-Out ํ™•์žฅ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์˜จ๋ผ์ธ ์„œ๋น„์Šค์˜ ํ•ต์‹ฌ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์‰ฝ๊ฒŒ Scale-Out์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ Sharding ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜๊ธฐ ์ด์ „๊นŒ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์žฅ์„ฑ์— ํฐ ์ œ์•ฝ์ด ์กด์žฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

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

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




โ—ˆ


๐Ÿ˜ 2. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋“ฑ์žฅ

๐Ÿ˜ 2.1. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ด๋ž€


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

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

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

๐Ÿ˜ 2.2. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ์ ์ธ ํŠน์ง•


๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ ๋ฐ˜๋“œ์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๋“ค์ด ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ๋ณด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

โœ… 2.2.1. Concurrency

๋™์‹œ์„ฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์ž‘์—… ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋ถ„์‚ฐ๋œ ์ปดํ“จํ„ฐ์—์„œ ๋™์‹œ์— ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋™์‹œ ์‹คํ–‰ ์ž์›์„ ๋Š˜๋ ค์„œ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐ•์ ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

โœ… 2.2.2. No Global Clock

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

โœ… 2.2.3.Independent Failure

์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋‚˜๋จธ์ง€ ์‹œ์Šคํ…œ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์—ฌ, ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์ด์•ผ๊ธฐํ•˜๋ฉด, ์‹œ์Šคํ…œ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•˜์—ฌ, ์ „์ฒด ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์ด ๊ฐ€์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

๐Ÿ˜ 2.3. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์ด๋ก 


โœ… 2.3.1 BASE ์ด๋ก 

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

1๏ธโƒฃ BASE์˜ ์š”์†Œ
BASE๋Š” ๋‹ค์Œ์˜ ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ Basically Available (๊ธฐ๋ณธ์ ์ธ ๊ฐ€์šฉ์„ฑ)
์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์™„์ „ํžˆ ์ค‘๋‹จ๋˜๋Š” ์ผ์€ ์—†๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ „์ฒด ์‹œ์Šคํ…œ์€ ๊ณ„์† ๋™์ž‘ํ•˜๋ฉฐ, ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ณต์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

โ–ถ Soft State (์œ ์—ฐํ•œ ์ƒํƒœ)
๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์‹œ์ ์—์„œ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ์™€ ์ดํ›„ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด์— ๋Œ€ํ•œ ์ผ๊ด€์„ฑ ์œ ์ง€ ์ฑ…์ž„์€ ์‹œ์Šคํ…œ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, Hadoop์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Writeํ•œ ์งํ›„ ๋ณต์ œ๊ฐ€ 0.0001์ดˆ๋งŒ์— ๋™์‹œ์— ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ณต์ œ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ ์ „์˜ ์‹œ์ ์—์„œ๋Š” ์ผ๋ถ€ ๋…ธ๋“œ์— ์ตœ์‹  ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ Eventually Consistent (์ตœ์ข…์ ์ธ ์ผ๊ด€์„ฑ)
๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ฆ‰์‹œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€์ง€๋Š” ์•Š์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๊ฒฐ๊ตญ ์ผ๊ด€๋œ ์ƒํƒœ๋กœ ์ˆ˜๋ ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ์ง€์—ฐ์€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜, ๋ฐ์ดํ„ฐ๋Š” ๊ฒฐ๊ตญ ์ €์žฅ๋˜๊ณ  ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
์œ„์˜ Hadoop ์˜ˆ์‹œ๋ฅผ ์ด์–ด๋ณด๋ฉด, Write์™€ ๋™์‹œ์— ๋ณต์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€๋Š” ์•Š์ง€๋งŒ, ๋‚ด๋ถ€ ์ •์ฑ…์— ๋”ฐ๋ผ ๋ณต์ œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉฐ, ๊ฒฐ๊ตญ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ BASE์˜ ํŠน์ง•
BASE๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณด์žฅํ•˜๋Š” ACID ์›์น™๊ณผ๋Š” ์ •๋ฐ˜๋Œ€์˜ ๋ฐฉํ–ฅ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.
ACID๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ณ ๋ฆฝ์„ฑ, ์ง€์†์„ฑ์„ ๊ฐ•์กฐํ•˜๋ฉฐ, ์€ํ–‰ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์ด ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ์—…๋ฌด์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด BASE๋Š” ์ฆ‰๊ฐ์ ์ธ ์ผ๊ด€์„ฑ(immediate consistency)์„ ํฌ๊ธฐํ•˜๊ณ , ๋Œ€์‹  ๋†’์€ ๊ฐ€์šฉ์„ฑ๊ณผ ์„ฑ๋Šฅ, ํ™•์žฅ์„ฑ์„ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ BASE๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์šฐ์„ ์‹œํ•˜๋Š” ์‹œ์Šคํ…œ, ์˜ˆ๋ฅผ ๋“ค์–ด SNS, ์‹ค์‹œ๊ฐ„ ๊ด‘๊ณ  ์‹œ์Šคํ…œ, ๋Œ€๊ทœ๋ชจ ๋กœ๊ทธ ๋ถ„์„ ํ”Œ๋žซํผ ๋“ฑ์— ์ ํ•ฉํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃ BASE์˜ ์‚ฌ๋ก€
Facebook ๊ด‘๊ณ  ํ”Œ๋žซํผ์˜ ๋ฆฌํฌํŠธ ์กฐํšŒ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด BASE ์›์น™์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ๊ด‘๊ณ  ๋ฆฌํฌํŠธ๋ฅผ ์กฐํšŒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์„œ์šธ ์ง€์—ญ ๋…ธ์ถœ๋œ ๊ด‘๊ณ  ์ด 10,000 ๊ฑด
๊ทธ ์ค‘, 1,000 ๊ฑด์ด ํƒ€๊ฒŸํŒ…๋˜์—ˆ๊ณ , ์ด ์ค‘ ๋‚จ์„ฑ์€ 100 ๋ช…

๊ทธ๋Ÿฌ๋‚˜ 10๋ถ„ ํ›„ ๋‹ค์‹œ ์กฐํšŒํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์กฐ๊ธˆ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์„œ์šธ ์ง€์—ญ ๋…ธ์ถœ๋œ ๊ด‘๊ณ  ์ด 10,000 ๊ฑด ๋™์ผ
๊ทธ ์ค‘, 1,060 ๊ฑด์ด ํƒ€๊ฒŸํŒ…๋˜์—ˆ๊ณ , ์ด ์ค‘ ๋‚จ์„ฑ์€ 102 ๋ช…์œผ๋กœ ๋Š˜์–ด๋‚จ

์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์ง„์ ์œผ๋กœ ์ˆ˜๋ ดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ฆ‰, ์ฒ˜์Œ์—๋Š” ์™„์ „ํ•œ ์ผ๊ด€์„ฑ์ด ์—†๋”๋ผ๋„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํžˆ ๋ฐ˜์˜๋œ๋‹ค๋Š” BASE ์›์น™์˜ Eventually Consistent๋ฅผ ๋ฐ˜์˜ํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

๋งˆ์ผ€ํ„ฐ๋Š” ์ฒ˜์Œ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋…ธ์ถœ : ํƒ€๊ฒŸํŒ… : ๋‚จ์ž = 100 : 10 : 1์ด๋ผ๋Š” ์„ฑ๊ณผ๋ฅผ ์ธก์ •ํ•˜๊ณ  ์ „๋žต์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜๋”๋ผ๋„, ์‚ฌ์šฉ์ž๋Š” ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ „๋žต์„ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… 2.3.2 CAP ์ด๋ก 

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๋‹ค ๋ณด๋ฉด ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ CAP ์ •๋ฆฌ(CAP Theorem)์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ก ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋™์‹œ์— ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์–ด๋ ค์šด ์„ธ ๊ฐ€์ง€ ์†์„ฑ์„ ์ •์˜ํ•˜๋ฉฐ, ์‹ค์ œ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ ๋ฌด์—‡์„ ์„ ํƒํ•˜๊ณ  ์–ด๋–ค ์†์„ฑ์„ ํฌ๊ธฐํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค.

CAP

์ถœ์ฒ˜ : CAP Image ์ถœ์ฒ˜



1๏ธโƒฃ CAP์˜ ์„ธ ๊ฐ€์ง€ ์š”์†Œ
CAP์€ ์•„๋ž˜์˜ ์„ธ ๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ Consistency (์ผ๊ด€์„ฑ)
๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ๋™์ผํ•œ ์š”์ฒญ์„ ํ•˜๋”๋ผ๋„ ๊ฐ™์€ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์†์„ฑ์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ผ๊ด€์„ฑ์€ ACID ์›์น™์—์„œ์˜ C(Consistency)์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ACID์˜ ์ผ๊ด€์„ฑ์€ ํŠธ๋žœ์žญ์…˜์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์˜๋ฏธํ•˜๋Š” ๋ฐ˜๋ฉด, CAP์˜ ์ผ๊ด€์„ฑ์€ ๋ถ„์‚ฐ๋œ ์‹œ์Šคํ…œ ๋‚ด ๋ชจ๋“  ๋…ธ๋“œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

โ–ถ Partition Tolerance (๋ถ„ํ•  ๋‚ด์„ฑ)
๋…ธ๋“œ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹จ์ ˆ๋˜๋”๋ผ๋„ ์‹œ์Šคํ…œ์ด ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์žฅ์• ๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์ด๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ”๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

โ— CAP ์ •๋ฆฌ์˜ ํ•ต์‹ฌ:
์„ธ ๊ฐ€์ง€ ์ค‘ ๋‘ ๊ฐ€์ง€๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ.
์ด๋ก ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์ด ์„ธ ๊ฐ€์ง€ ์†์„ฑ์„ ๋ชจ๋‘ ์™„๋ฒฝํžˆ ์ถฉ์กฑ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ ํ•จ.
ํ˜„์‹ค์ ์œผ๋กœ๋Š” ๋Œ€๋ถ€๋ถ„ Availability๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•˜๋ฏ€๋กœ, CA, AP ์ค‘์—์„œ ์„ ํƒ.

2๏ธโƒฃ CA ์‹œ์Šคํ…œ
CA(์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ) ์‹œ์Šคํ…œ์€ ๋„คํŠธ์›Œํฌ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ์ „์ œ ํ•˜์—, ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑ์‹œํ‚ค๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ์‹œ์Šคํ…œ์€ Partition Tolerance, ์ฆ‰ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ์ƒํ™ฉ์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•Œ๋ฌธ์— CA ์‹œ์Šคํ…œ์€ ์ฃผ๋กœ ๋‹จ์ผ ๋…ธ๋“œ ๋˜๋Š” ํŒŒํ‹ฐ์…˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, CA๋Š” ๋ถ„์‚ฐ์‹œ์Šคํ…œ์—์„œ ์„ ํƒํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
( ์ „ํ†ต์ ์ธ RDBMS, ๋‹จ์ผ ๋…ธ๋“œ์—์„œ์˜ MongoDB ๋“ฑ )

3๏ธโƒฃ AP ์‹œ์Šคํ…œ
AP(๊ฐ€์šฉ์„ฑ๊ณผ ๋ถ„ํ•  ๋‚ด์„ฑ) ์‹œ์Šคํ…œ์€ ๋งŒ์•ฝ, ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๋‘ ๋…ธ๋“œ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์„ ๋•Œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€๋˜๋„๋ก ์™„๋ฒฝํžˆ ๋ณด์žฅํ•  ์ˆ˜๋Š” ์—†์„์ง€๋ผ๋„ ๋ชจ๋“  ์š”์ฒญ์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์‹œ์Šคํ…œ์€ ๊ณ„์† ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์š”์ฒญ์— ์‘๋‹ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ์€ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋™์‹œ์— ์‹œ์Šคํ…œ์€ ๊ณ„์† ๋™์ž‘ํ•˜๋ฏ€๋กœ Partition Tolerance๋„ ํ•จ๊ป˜ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋Š” ์ผ๊ด€๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ๋‚ด์šฉ์˜ ์š”์ฒญ์ผ์ง€๋ผ๋„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ์—, ์‘๋‹ต์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ํ•ญ์ƒ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
( Cassandra, HBase, Druid ๋“ฑ )

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

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

MongoDB๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Primary ๋…ธ๋“œ์—์„œ ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ดํ›„ Secondary ๋…ธ๋“œ๋กœ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ, ๊ฐ€์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด Secondary ๋…ธ๋“œ๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ํ™œ์šฉํ•˜๋ฉด, ๋ณต์ œ ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ์ผ๊ด€์„ฑ์ด ์•ฝํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

5๏ธโƒฃ CAP ์ด๋ก ์˜ ํ•œ๊ณ„

CAP ์ด๋ก ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ Consistency(์ผ๊ด€์„ฑ), Availability(๊ฐ€์šฉ์„ฑ), Partition Tolerance(๋ถ„ํ•  ํ—ˆ์šฉ์„ฑ) ์ค‘ ๋‘ ๊ฐ€์ง€๋งŒ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด๋ก ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์™„๋ฒฝํ•œ CP ๋˜๋Š” ์™„๋ฒฝํ•œ AP ์‹œ์Šคํ…œ์ด ์กด์žฌํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

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

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

์ฆ‰, ์ด ์•ˆ์—์„œ Trade Off ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ๊ท ํ˜•์„ ๋งž์ถ˜ ์„ค๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์™„๋ฒฝํ•œ CP ๋˜๋Š” AP๋Š” ํ˜„์‹ค์ ์ธ ์„ค๊ณ„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ถ„ํ• (Partition)์€ ์–ธ์ œ๋“ ์ง€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ „์ œ๋ฅผ ๊ฐ€์ง€๊ณ , CP์™€ AP ์‚ฌ์ด์—์„œ ๊ท ํ˜•์ ์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
๋งŽ์€ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‹ค์ œ๋กœ AP ์ชฝ์— ๋น„์ค‘์„ ๋‘๊ณ  ์„ค๊ณ„๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์„ ์ถ”๊ตฌํ• ์ˆ˜๋ก Strong, ์•ฝํ•œ ์ผ๊ด€์„ฑ์„ ์ถ”๊ตฌํ• ์ˆ˜๋ก Weakํ•˜๋‹ค๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๋‹จ, ๋งŽ์€ ๋ถ„์‚ฐํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” AP ์ชฝ์— ๋” ๋งŽ์€ ๋น„์ค‘์„ ๋‘ก๋‹ˆ๋‹ค.

CAP_2

์ถœ์ฒ˜ : CP ์™€ AP


โœ… 2.3.1 PACELC ์ด๋ก 

pacelc

์ถœ์ฒ˜ : PACELC ์ด๋ก 

CAP ์ด๋ก ์˜ ํ•œ๊ณ„์— ๋”ฐ๋ผ ์‹ค์ œ ์šด์˜์„ ๋ฐ˜์˜ํ•œ ์ด๋ก ์ž…๋‹ˆ๋‹ค.
๋ถ„์‚ฐ๋œ ํ™˜๊ฒฝ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ(Partition) ๊ฒฝ์šฐ, ๊ฐ€์šฉ์„ฑ(Availability)๊ณผ ์ผ๊ด€์„ฑ(Consistency)์„ ๊ณ ๋ คํ•ด์•ผํ•˜๊ณ 
์ •์ƒ ์ƒํ™ฉ์˜ ๊ฒฝ์šฐ(Else), ์ง€์—ฐ์‹œ๊ฐ„(Latency)๊ณผ ์ผ๊ด€์„ฑ(Consistency)๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค๋Š” ์ด๋ก ์ž…๋‹ˆ๋‹ค.

์ข€ ํ’€์–ด์„œ ์„ค๋ช…ํ•˜๋ฉด,
์žฅ์•  ์ƒํ™ฉ์—์„œ๋Š”(Partition), ์ผ๋ถ€ ๋…ธ๋“œ์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์•„์˜ˆ ๋ฐ˜์˜ ์ž์ฒด๋ฅผ ์‹คํŒจํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(Consistency). ๋˜๋Š”, ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(Availability).
์ •์ƒ ์ƒํ™ฉ์—์„œ๋Š”(Else), ๋ชจ๋“  ๋…ธ๋“œ์— ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•˜๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ์„ ๊ฐ์ˆ˜ํ•˜์—ฌ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Consistency). ๋ฐ˜๋Œ€๋กœ, ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์ผ๊ด€์„ฑ์„ ์ผ๋ถ€ ํฌ๊ธฐํ•˜์—ฌ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ณด์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(Latency).

์ด ์•ˆ์—์„œ ์กฐํ•ฉ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์žฅ์•  ์ƒํ™ฉ ์ •์ƒ ์ƒํ™ฉ ์„ค๋ช…
P + A (์žฅ์•  ์ƒํ™ฉ + ๊ฐ€์šฉ์„ฑ) E + L (์ •์ƒ ์ƒํ™ฉ + ์ง€์—ฐ ์‹œ๊ฐ„) ์žฅ์•  ์ƒํ™ฉ์—์„œ๋Š” ๊ฐ€์šฉ ๋…ธ๋“œ๋งŒ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ , ์ •์ƒ ์ƒํ™ฉ์—์„œ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜๋Š” ์‹œ์Šคํ…œ.
P + A (์žฅ์•  ์ƒํ™ฉ + ๊ฐ€์šฉ์„ฑ) E + C (์ •์ƒ ์ƒํ™ฉ + ์ผ๊ด€์„ฑ) ์žฅ์•  ์ƒํ™ฉ์—์„œ๋Š” ๊ฐ€์šฉ ๋…ธ๋“œ๋งŒ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ , ์ •์ƒ ์ƒํ™ฉ์—์„œ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ์ผ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์žฅํ•˜๋Š” ์‹œ์Šคํ…œ.
P + C (์žฅ์•  ์ƒํ™ฉ + ์ผ๊ด€์„ฑ) E + L (์ •์ƒ ์ƒํ™ฉ + ์ง€์—ฐ ์‹œ๊ฐ„) ์žฅ์•  ์ƒํ™ฉ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์— ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ์ •์ƒ ์ƒํ™ฉ์—์„œ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜๋Š” ์‹œ์Šคํ…œ.
P + C (์žฅ์•  ์ƒํ™ฉ + ์ผ๊ด€์„ฑ) E + C (์ •์ƒ ์ƒํ™ฉ + ์ผ๊ด€์„ฑ) ์žฅ์•  ์ƒํ™ฉ์—์„œ๋„, ์ •์ƒ ์ƒํ™ฉ์—์„œ๋„ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์‹œ์Šคํ…œ.

ํ•ด๋‹น ํ‘œ๋ฅผ ์กฐ๊ธˆ ๋” ํ’€์–ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ณ˜์Šต๋‹ˆ๋‹ค.

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

PA/EC
์žฅ์• ์ƒํ™ฉ์—์„œ ์กฐ๊ธˆ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ข€ ๋ฉ€๋ฆฌ์žˆ๋Š” ๊ฐ€์šฉ ๋…ธ๋“œ๋งŒ์œผ๋กœ๋„ ์–ด๋–ป๊ฒŒ๋“  ์„œ๋น„์Šค๋ฅผ ๊ณ„์† ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ผ๊ด€์„ฑ์€ ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ •์ƒ์ƒํ™ฉ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋กœ ์กฐ๊ธˆ ๋А๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๊ด€์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์˜ˆ์‹œ๋ฅผ ๋“ค๋ฉด,
MongoDB๋Š” PA/EC ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์“ฐ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, ์ •์ƒ ์ƒํ™ฉ์—์„œ๋Š” Secondary ๋ฉค๋ฒ„์™€ Primary ๋ฉค๋ฒ„ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ, ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์“ฐ๊ธฐ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์„ ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•˜์ž๋ฉด mongoDB์˜ automatic failover ๋•Œ๋ฌธ.
โ€˜electionTimeoutMillisโ€™ ์ด๋ผ๋Š” ์„ค์ •๊ฐ’๋งŒํผ timeout์„ ์ ์šฉํ•ด, ์ด timeout ์‹œ๊ฐ„ ๋‚ด์— Primary ๋…ธ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›๊ณผ ์†Œํ†ตํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Secondary ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ Primary ๋…ธ๋“œ๋กœ ๋งŒ๋“ ๋‹ค.
Secondary ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ Primary ๋…ธ๋“œ๋กœ ๋งŒ๋“œ๋Š” election ๊ณผ์ • ์ค‘์—๋Š” ์“ฐ๊ธฐ ์ž‘์—…์ด ์ค‘๋‹จ๋œ๋‹ค.



๋˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ๋Š”
Cassandra๋‚˜ DynamoDB๋Š” PA/EL ์‹œ์Šคํ…œ์ด๋ผ๋Š”๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.
์žฅ์•  ์ƒํ™ฉ์—์„œ๋Š”(P) ์ •์ƒ์ธ ๋…ธ๋“œ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๊ณ (A), ์žฅ์•  ๋…ธ๋“œ๊ฐ€ ๋ณต๊ตฌ๋œ๋‹ค๋ฉด ๊ทธ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ์ •์ƒ ์ƒํ™ฉ์—์„œ๋Š”(E) ๋น ๋ฅธ ์‘๋‹ต์„ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋…ธ๋“œ ์ „์ฒด์— ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค(L).

๊ฒฐ๊ตญ์€ ์š”๊ตฌ์‚ฌํ•ญ์ด๋‚˜, ์ƒํ™ฉ์— ๋”ฐ๋ผ Trade-Off ๋ฅผ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜์—ฌ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๐Ÿ˜ 2.4. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„


โœ… 2.4.1. Heterogeneity (์ด์งˆ์„ฑ)

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ ๊ตฌ์ถ•ํ•จ์— ์žˆ์–ด์„œ ์ตœ๋Œ€ํ•œ ์ด์งˆ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์„ค์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•˜๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ์‚ฌ์ด์— ์ •๋ณด์™€ ์ž์›์„ ๊ณต์œ ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” ๋„คํŠธ์›Œํฌ,OS,ํ•˜๋“œ์›จ์–ด,ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ข‹์€ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”, ํ•˜๋“œ์›จ์–ด๋‚˜ OS ์— ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์–ธ์–ด์ธ Java ๋‚˜ Scala, Go ์–ธ์–ด๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ,
ํ•„์š”์‹œ์—๋Š” ์›ํ•˜๋Š” ์ถ”์ƒํ™”๋ฅผ ์ด๋ฃฐ ์ˆ˜์žˆ๋Š” Middleware ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. (CORBA ๋‚˜ RMI ๋“ฑ)

๐Ÿ’ก ์˜ˆ์‹œ
โœ”๏ธ Apache Hadoop
Hadoop์€ ๋ฆฌ๋ˆ…์Šค, Windows, macOS ๋“ฑ ๋‹ค์–‘ํ•œ OS์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์—์„œ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.
๋˜ํ•œ Java ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ , ๋‹ค์–‘ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์— ์‰ฝ๊ฒŒ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋‹ค.


โœ… 2.4.2. Openess

์‹œ์Šคํ…œ์„ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅ์„ฑ(extended, ๋ง๋ถ™์ž„), ์žฌ๊ตฌํ˜„(reimplemented)ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜ˆ์‹œ
โœ”๏ธ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์‚ฌ์—์„œ plug and play ๊ฐœ๋…โ†’ Interface๋งŒ ์ •ํ•ด์‹œ ๊ณตํ‘œ๋ฅผ ํ•˜๊ณ ๋‚˜๋ฉด ๊ฑฐ๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํšŒ์‚ฌ๋‚˜ ํ•˜๋“œ์›จ์–ด ํšŒ์‚ฌ๋“ค์ด ์ด๋Ÿฐ Interface์— ๊ทผ๊ฑฐ๋ฅผ ํ•ด์„œ ๋ญ”๊ฐ€๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด Windows์šด์˜์ฒด์ œ์—์„œ ๊ทธ๋Œ€๋กœ ๋Œ์•„๊ฐ„๋‹ค๋Š” ๊ฐœ๋…


โœ… 2.4.3. Security

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

๐Ÿ’ก ์˜ˆ์‹œ
โœ”๏ธ Kerberos + Hadoop
Hadoop ํด๋Ÿฌ์Šคํ„ฐ์— Kerberos ์ธ์ฆ์„ ์ ์šฉํ•˜๋ฉด, ๊ฐ ์‚ฌ์šฉ์ž์™€ ์„œ๋น„์Šค๋Š” ์ •ํ•ด์ง„ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ํ† ํฐ์„ ํ†ตํ•ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ,
์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.


โœ… 2.4.4. Scalability

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž ์ˆ˜๋‚˜ ์‹œ์Šคํ…œ ์ž์›์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ํ™•์žฅ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์ˆ˜ํ‰ ํ™•์žฅ(horizontal scaling) ๋ฐฉ์‹์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
์„œ๋ฒ„๋“ค์„ ์ฆ๊ฐ€ ์‹œํ‚ค๋”๋ผ๋„ ๋” ์ด์ƒ performance๊ฐ€ ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋” ์ด์ƒ์˜ ํ™•์žฅ์„ฑ์€ ์—†๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฆ‰, ํ™•์žฅ์„ฑ ์ข‹์€ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜์ž๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

โœ… 2.4.5. Failure Handling

๋ถ„์‚ฐ์‹œ์Šคํ…œ๋„ ์–ด์จŒ๋“  ์‹œ์Šคํ…œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์žฅ์• ๋‚˜ ์‹คํŒจ๋ฅผ ํ”ผํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฅ์• /์‹คํŒจ์— ๋Œ€ํ•œ ๋Œ€์‘์„ (์ž๋™ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ) ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์žฅ ๊ฐ์ง€ โ–ถ ๊ณ ์žฅ ์™„ํ™” โ–ถ ๊ณ ์žฅ ํ—ˆ์šฉ โ–ถ ๊ณ ์žฅ ๋ณต๊ตฌ โ–ถ ์ค‘๋ณต์„ฑ

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

๐Ÿ’ก ์˜ˆ์‹œ
โœ”๏ธ Spark์˜ Stage ์žฌ์‹œ๋„ ๋ฉ”์ปค๋‹ˆ์ฆ˜
Spark ์ž‘์—… ์ˆ˜ํ–‰ ์ค‘ ์ผ๋ถ€ Executor๊ฐ€ ์‹คํŒจํ•˜๋”๋ผ๋„, ํ•ด๋‹น Task๋งŒ ์žฌ์‹œ๋„ํ•˜์—ฌ ์ „์ฒด Job์„ ์ค‘๋‹จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.


โœ… 2.4.6. Concurrency

์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด๋„ ์ž์›์ด ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ , shared resource๋Š” ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆฌ์†Œ์Šค๋Š” ์ผ๊ด€์„ฑ(consistency) ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™๊ธฐํ™”(synchronization) ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜ˆ์‹œ
โœ”๏ธ ZooKeeper
ZooKeeper๋Š” ์—ฌ๋Ÿฌ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋™๊ธฐํ™”๋œ ์„ค์ • ๊ด€๋ฆฌ, ๋ฆฌ๋” ์„ ์ถœ, ๋ฝ(lock) ๋“ฑ์„ ์ œ๊ณตํ•˜์—ฌ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.


โœ… 2.4.7. Transparency

์‚ฌ์šฉ์ž๊ฐ€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋‚˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํˆฌ๋ช…์„ฑ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์ด๋ก ์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํˆฌ๋ช…์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • โœ๏ธ ์ ‘๊ทผ ํˆฌ๋ช…์„ฑ: ๋กœ์ปฌ/์›๊ฒฉ ์ž์›์„ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  • โœ๏ธ ์œ„์น˜ ํˆฌ๋ช…์„ฑ: ์ž์›์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜(IP, ์œ„์น˜ ๋“ฑ)์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  • โœ๏ธ ๋™์‹œ์„ฑ ํˆฌ๋ช…์„ฑ: ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ๋ฌธ์ œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • โœ๏ธ ๋ณต์ œ ํˆฌ๋ช…์„ฑ: ์ž์›์˜ ๋ณต์ œ ์œ ๋ฌด์™€ ์ƒ๊ด€์—†์ด ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • โœ๏ธ ์žฅ์•  ํˆฌ๋ช…์„ฑ: ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉ์ž/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด๋ฅผ ์ธ์ง€ํ•˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • โœ๏ธ ์ด๋™ ํˆฌ๋ช…์„ฑ: ์ž์›์ด๋‚˜ ํด๋ผ์ด์–ธํŠธ์˜ ์œ„์น˜ ์ด๋™์ด ์‹œ์Šคํ…œ ๋™์ž‘์— ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • โœ๏ธ ์„ฑ๋Šฅ ํˆฌ๋ช…์„ฑ: ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ ์žฌ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • โœ๏ธ ํ™•์žฅ ํˆฌ๋ช…์„ฑ: ์‹œ์Šคํ…œ ๊ทœ๋ชจ๊ฐ€ ํ™•์žฅ๋˜์–ด๋„ ๊ตฌ์กฐ๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณ€๊ฒฝ ์—†์ด ์šด์˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜ˆ์‹œ
โœ”๏ธ Cloud Storage (ex: Amazon S3)
์‚ฌ์šฉ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ์–ด๋А ๋ฆฌ์ „์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ๋ชฐ๋ผ๋„ ๋˜๊ณ , ํ•„์š” ์‹œ ์–ธ์ œ๋“ ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด ์„ฑ๋Šฅ/ํ™•์žฅ/์œ„์น˜ ํˆฌ๋ช…์„ฑ์„ ๋ชจ๋‘ ์ œ๊ณตํ•œ๋‹ค.

๐Ÿ˜ 2.5. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ USE CASE ๋ช‡ ๊ฐ€์ง€


โœ… 2.5.1. ๋ถ„์‚ฐ ์ €์žฅ์†Œ

hadoop

์ถœ์ฒ˜ : ํ•˜๋‘ก ์•„ํ‚คํ…์ฒ˜

๋Œ€์šฉ๋Ÿ‰์˜ ๋ถ„์‚ฐ์‹œ์Šคํ…œ์ด ๊ฐ€์žฅ ํ•„์š”ํ•œ ๊ณณ์ด ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ์ €์žฅํ•˜๋ฉด์„œ๋„ ์œ ์‹ค๋˜๋ฉด ์•ˆ๋˜๊ณ , ์–ธ์ œ๋“ ์ง€ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋Œ€ํ‘œ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์•ž์œผ๋กœ ์•Œ์•„๋ณผ Hadoop ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… 2.5.2. Load Balancer

loadbalancer

์ถœ์ฒ˜ : ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ

๊ณผ๊ฑฐ์˜ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๊ณ ์„ฑ๋Šฅ ํ•˜๋“œ์›จ์–ด ์žฅ๋น„๋‚˜ ์Šค์œ„์น˜๋กœ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„๋Œ€์˜ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ˆ˜๋ฐฑ์—์„œ ์ˆ˜์ฒœ ๋Œ€๊นŒ์ง€ ์—ฐ๊ฒฐ๋˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๊ณ ์ŠคํŽ™ ํ•˜๋“œ์›จ์–ด๋กœ ๋ชจ๋“  ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์„ค์ •์ด๋‚˜ ๊ทœ์น™์˜ ๋ณ€๊ฒฝ์ด ์žฆ๊ณ  ๊ทธ ๋ณต์žก๋„๊ฐ€ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ AWS, Azure์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ ์„ ํƒํ•˜๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ๋ชจ๋‘ ์†Œํ”„ํŠธ์›จ์–ด ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” IP ์ฃผ์†Œ๋‚˜ DNS ์ฃผ์†Œ๋Š” ํ•˜๋‚˜์ด์ง€๋งŒ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” HA(High Availability)๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์™€ ์Šค์œ„์น˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‹ค์‹œ๊ฐ„ ์„ค์ • ๋ฐ˜์˜์„ ์œ„ํ•œ ๋™๊ธฐํ™” ์‹œ์Šคํ…œ๋„ ๊ตฌ์ถ•๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… 2.5.3. ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง€ ํ

kafka

์ถœ์ฒ˜ : ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง€ ํ - ์นดํ”„์นด

Queue๋ผ๊ณ  ํ•˜๋ฉด FIFO(First In First Out)๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Queue๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ Queue๋กœ๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋Ÿ‰์— ํ•œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ํ•˜๋‚˜์˜ ์ฃผ์ œ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ Queue๋ฅผ ๋‘์–ด ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ์˜ˆ๊ฐ€ Kafka์ž…๋‹ˆ๋‹ค.

Kafka์—์„œ๋Š” ํ•˜๋‚˜์˜ Topic(๋…ผ๋ฆฌ์  Queue)์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ Partition(๋ฌผ๋ฆฌ์  Queue)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ Partition๋ณ„๋กœ๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ „์ฒด Topic์— ๋Œ€ํ•ด์„œ๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ „์ฒด Topic์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋ ค ํ•œ๋‹ค๋ฉด, ์ฒ˜๋ฆฌ๋Ÿ‰ ์†ํ•ด๋ฅผ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.




โ—ˆ


๐Ÿ˜ 3. ํ•˜๋‘ก์˜ ๋“ฑ์žฅ๊ณผ ๊ฐœ์š”

๊ธฐ์ˆ ์˜ ์ดํ•ด๋Š” History ๋ฅผ ํŒŒ์•…ํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ , ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์˜ ์—ญ์‚ฌ๋ถ€ํ„ฐ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๊นŒ์ง€ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์˜ ๊ฐœ๋…์ด ์ดํ•ด๋˜์—ˆ๋‹ค๋ฉด, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ•˜๋‘ก์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

hadoop

์ถœ์ฒ˜ : Apache-Hadoop

๐Ÿ˜ 3.1. ํ•˜๋‘ก์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ


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

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

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

ํ•˜๋‘ก์€ ๋ฐ์ดํ„ฐ์˜ ๋ณต์ œ๋ณธ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๋‚˜ ๋””์Šคํฌ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ธฐ์กด ๋ฐฉ์‹๋ณด๋‹ค ํ›จ์”ฌ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ, 2008๋…„, ๋‰ด์š•ํƒ€์ž„์ฆˆ(New York Times)๋Š” ์•ฝ 130๋…„ ๋ถ„๋Ÿ‰์— ํ•ด๋‹นํ•˜๋Š” ์‹ ๋ฌธ ๊ธฐ์‚ฌ 1,100๋งŒ ํŽ˜์ด์ง€๋ฅผ ๋””์ง€ํ„ธํ™”ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์—๋Š” AWS์˜ EC2, S3, ๊ทธ๋ฆฌ๊ณ  ํ•˜๋‘ก์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋†€๋ผ์› ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋Œ€ํ•œ ์ž‘์—…์„ ๋‹จ ํ•˜๋ฃจ ๋งŒ์— ์™„๋ฃŒํ–ˆ์œผ๋ฉฐ, ์†Œ์š”๋œ ๋น„์šฉ์€ ์•ฝ 200๋งŒ ์›์— ๋ถˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ๊ธฐ์กด ์„œ๋ฒ„์™€ ์ผ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ, ๋ฌด๋ ค 14๋…„์ด ๊ฑธ๋ ธ์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

newyork

์ถœ์ฒ˜ : ๋‰ด์š•ํƒ€์ž„์ฆˆ ํ•˜๋‘ก ์‚ฌ๋ก€ ์ด๋ฏธ์ง€

๐Ÿ˜ 3.2. ํ•˜๋‘ก์ด๋ž€


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

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

๋˜ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‹คํ–‰ ์—”์ง„, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—”์ง„ ๋“ฑ, ํ•˜๋‘ก ์ƒํƒœ๊ณ„ ์ „๋ฐ˜์„ ํฌํ•จํ•˜๋Š” ์˜๋ฏธ๋กœ ํ™•์žฅ & ๋ฐœ์ „ ๋˜์–ด์™”์Šต๋‹ˆ๋‹ค.

hadoop_echo_system

์ถœ์ฒ˜ : ํ•˜๋‘ก ์ƒํƒœ๊ณ„ ์ด๋ฏธ์ง€


๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ์ข€ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ, ํ•˜๋‘ก์˜ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด, ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ชผ๊ฐœ๊ณ  ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

์ชผ๊ฐœ์„œ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋А ๋…ธ๋“œ์— ์œ„์น˜ํ•˜์˜€๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๋˜ํ•œ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•˜์—ฌ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์ €์žฅํ•จ์œผ๋กœ์จ, Replication ๋„ ๋ณด์žฅํ•ด์ค๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋‚ด์šฉ์„ ํ•„๋‘๋กœ, ํ•˜๋‘ก์˜ ์ฃผ์š” ํŠน์ง•๋“ค์„ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

โœ… ํ™•์žฅ์„ฑ
โ†’ ํ•˜๋‘ก์€ ํŽ˜ํƒ€๋ฐ”์ดํŠธ(PB) ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์„œ๋ฒ„ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์„ ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ๊ฒฝ์ œ์„ฑ
โ†’ ๊ณ ๊ฐ€์˜ ์ „์šฉ ์„œ๋ฒ„ ๋Œ€์‹  ๋ฒ”์šฉ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„(Commodity Server)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์™€ ์—ฐ์‚ฐ์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒ”์šฉ ์„œ๋ฒ„๋ฅผ ์ˆ˜์ฒœ ๋Œ€๊นŒ์ง€ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•˜์—ฌ ์šด์˜ํ•  ์ˆ˜ ์žˆ์–ด ์ดˆ๊ธฐ ํˆฌ์ž ๋น„์šฉ์ด ๋‚ฎ๊ณ  ๊ฒฝ์ œ์ ์ž…๋‹ˆ๋‹ค.

โœ… ํšจ์œจ์„ฑ
โ†’ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰(Data Locality)ํ•จ์œผ๋กœ์จ, ๋ถˆํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ์ „์†ก์„ ์ค„์ด๊ณ  ๋น ๋ฅธ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ์‹ ๋ขฐ์„ฑ
โ†’ ํ•˜๋‘ก์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ์„œ๋ฒ„๋‚˜ ๋””์Šคํฌ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๋†’์€ ์‹ ๋ขฐ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.



๋˜ํ•œ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ•˜๋‘ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ๋ชจ๋“ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… HDFS
โ†’ ํ‘œ์ค€ ๋˜๋Š” ์ €์‚ฌ์–‘ ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰๋˜๋Š” ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. HDFS ๋Š” ๋†’์€ ๋‚ด๊ฒฐํ•จ์„ฑ๊ณผ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•œ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

โœ… YARN
โ†’ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ ๋ฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž‘์—… ๋ฐ Task ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  Scheduling ์„ ํ•ฉ๋‹ˆ๋‹ค. ( Version 2๋ถ€ํ„ฐ ์ถ”๊ฐ€ )

โœ… MapReduce
โ†’ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณ‘๋ ฌ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Map Task ๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํ‚ค ๊ฐ’ ํŽ˜์–ด๋กœ ๊ณ„์‚ฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Map Task ์˜ ์ถœ๋ ฅ์€ Reduce Task ๋ฅผ ํ†ตํ•˜์—ฌ ์ถœ๋ ฅ์„ ์ง‘๊ณ„ํ•˜๊ณ  ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โœ… Hadoop Common
โ†’ ๋ชจ๋“  ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ชจ๋“ˆ๋“ค์— ๋Œ€ํ•˜์—ฌ์„œ๋Š”, ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋ณด๋‹ค ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„ ๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ˜ 3.3. ํ•˜๋‘ก ์•„ํ‚คํ…์ฒ˜์™€ Version ๋ณ„ ํŠน์ง•


โœ… 3.3.1. Hadoop v1.0

hadoop_v1

์ถœ์ฒ˜ : ํ•˜๋‘ก V1 ์•„ํ‚คํ…์ฒ˜



ํ•˜๋‘ก(Hadoop) v1์€ 2011๋…„์— ์ •์‹์œผ๋กœ ๋ฐœํ‘œ๋œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ํ•˜๋‘ก v1์€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ถ„์‚ฐ ์ €์žฅ๊ณผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

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

TaskTracker๋Š” JobTracker๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›์€ ์ž‘์—…์„ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ TaskTracker๋Š” ์ž์‹ ์—๊ฒŒ ๋ฐฐ์ •๋œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ JobTracker์— ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ž‘์—… ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ์ฆ‰์‹œ JobTracker์— ์•Œ๋ฆฌ๊ณ , ํ•„์š” ์‹œ ์ž‘์—…์„ ์žฌ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

โœ… 3.3.2. Hadoop v2.0

hadoop_v2

์ถœ์ฒ˜ : ํ•˜๋‘ก V2 ์•„ํ‚คํ…์ฒ˜



ํ•˜๋‘ก v1์€ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ ์ €์žฅํ•˜๊ณ  ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์˜€์ง€๋งŒ, ๊ตฌ์กฐ์ ์ธ ํ•œ๊ณ„๋กœ ์ธํ•ด ๋ช‡ ๊ฐ€์ง€ ๋šœ๋ ทํ•œ ๋‹จ์ ๊ณผ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” JobTracker์˜ ๋ณ‘๋ชฉํ˜„์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‘ก v1์—์„œ๋Š” JobTracker๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์ž์› ๊ด€๋ฆฌ(Resource Management)์™€ ์ž‘์—… ์Šค์ผ€์ค„๋ง(Job Scheduling)์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋“ฑ๋ก๋œ ๋…ธ๋“œ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ• ์ˆ˜๋ก JobTracker์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๊ณ , ๊ฒฐ๊ตญ ์ˆ˜ ๋งŽ์€ ๋…ธ๋“œ๋“ค์„ ์•ˆ์ •์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ์— ํ•œ๊ณ„๊ฐ€ ์ฐพ์•„์™”์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, JobTracker๊ฐ€ ๋‹จ์ผ ์žฅ์•  ์ง€์ (Single Point of Failure)์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, JobTracker์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์˜ ์ž‘์—…์ด ์ค‘๋‹จ๋˜๋Š” ์‹ฌ๊ฐํ•œ ์œ„ํ—˜์ด ์กด์žฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ ํ•˜๋‘ก v1์€ MapReduce ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์—๋งŒ ์ข…์†๋˜์–ด ์žˆ์–ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด๋‚˜ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์ด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์›Œํฌ๋กœ๋“œ๋‚˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—”์ง„์„ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ถ€์กฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, V2 ๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ฒƒ์ด YARN ์ž…๋‹ˆ๋‹ค. ( YARN ์— ๋Œ€ํ•˜์—ฌ์„œ๋„, ์ถ”ํ›„ ๋” ์ž์„ธํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. )

ํ•˜๋‘ก v2๋Š” ๊ธฐ์กด ํ•˜๋‘ก v1์˜ JobTracker ๋ณ‘๋ชฉํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๊ณ  ํ™•์žฅ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด YARN(Yet Another Resource Negotiator) ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ( ๋น„์Šทํ•œ ์ด์œ ๋กœ MapReduce ๋„ YARN ์—์„œ ์‚ฌ์šฉํ•˜๋А๋ƒ ์•„๋‹ˆ๋ƒ๋กœ 1.0 ๊ณผ 2.0 ๊ธฐ์ ์ด ๋ฐ”๋€Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. )

YARN ์•„ํ‚คํ…์ฒ˜๋Š” JobTracker์˜ ์—ญํ• ์„ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ, ์ž์› ๊ด€๋ฆฌ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โ–ถ ๐Ÿ“ResourceManager: ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์˜ ์ž์›์„ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ด€๋ฆฌ. ์ž‘์—…์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ , ์–ด๋–ค ์ž‘์—…์— ์–ผ๋งˆ๋งŒํผ์˜ ์ž์›์„ ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ•  ์ˆ˜ํ–‰.

โ–ถ ๐Ÿ’NodeManager: ๊ฐ ๋…ธ๋“œ์—์„œ ์ž์›์˜ ์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ(Container)๋ฅผ ๊ด€๋ฆฌ.

โ–ถ ๐ŸŽApplicationMaster: ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์ž‘์—…)๋งˆ๋‹ค ๋ณ„๋„๋กœ ์ƒ์„ฑ๋˜์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌ. ResourceManager์™€ ํ†ต์‹ ํ•˜์—ฌ ํ•„์š”ํ•œ ์ž์›์„ ์š”์ฒญํ•˜๊ณ , ์ž‘์—… ์‹คํ–‰์„ ์กฐ์œจ.

โ–ถ ๐ŸContainer: ์‹ค์ œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ๋‹จ์œ„. ResourceManager๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์ƒ์„ฑ๋˜๋ฉฐ, ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ข…๋ฃŒ๋˜์–ด ์ž์›์ด ๋ฐ˜ํ™˜ ๋จ.



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

๋˜ํ•œ YARN ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” MapReduce์— ํ•œ์ •๋˜์ง€ ์•Š๊ณ , ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Spark, HBase, Storm ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ปดํฌ๋„ŒํŠธ๋ฅผ YARN ํด๋Ÿฌ์Šคํ„ฐ ์œ„์—์„œ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ, ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž‘์—…์ด ์š”์ฒญ๋  ๋•Œ๋งŒ ์ƒ์„ฑ๋˜๊ณ , ์ž‘์—…์ด ๋๋‚˜๋ฉด ์ฆ‰์‹œ ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ž์›์„ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ์จ ํ•˜๋‘ก์€ ๋‹จ์ˆœํ•œ MapReduce ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ ๋„˜์–ด, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—”์ง„์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฒ”์šฉ ๋ฐ์ดํ„ฐ ํ”Œ๋žซํผ์œผ๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โœ… 3.3.3. Hadoop v3.0

hadoop_img

์ถœ์ฒ˜ : ํ•˜๋‘ก์ด ์„ธ ๋งˆ๋ฆฌ๋‹ˆ๊นŒ, ํ•˜๋‘ก V3 ์ด๋ฏธ์ง€โ€ฆ?ใ…Žใ…Žใ…Ž



ํ•˜๋‘ก V1 ์—์„œ V2 ๋กœ์˜ ์ง„ํ™”๋Š”, ๋Œ€๋Ÿ‰์˜ ์ž‘์—…์„ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ YARN ์˜ ๋„์ž…์ด ํ•ต์‹ฌ์ด์—ˆ๋‹ค๋ฉด, V3 ๋กœ์˜ ์ง„ํ™”๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ๊ณผ, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŽธ์˜์„ฑ ๊ทธ๋ฆฌ๊ณ  ํ˜„ ์ƒํƒœ๊ณ„์— ์•Œ๋งž๋Š” ๊ณ ๋„ํ™”๋ฅผ ๋ชฉ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋“ฑ์žฅํ•˜๋Š” Erasure Encoding ์ด๋‚˜, YARN ํƒ€์ž„๋ผ์ธ ์„œ๋น„์Šค ๋“ฑ์— ๋Œ€ํ•˜์—ฌ์„œ๋„ ์—ญ์‹œ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ํ•จ๊ป˜ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๊ทธ์ € V3์— ์ถ”๊ฐ€๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์š”๋งŒ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ–ถ โ‘  Java Version Upgrade
Hadoop 3์—์„œ ๋ชจ๋“  Hadoop JAR์€ Java 8์˜ ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „์„ ๋Œ€์ƒ์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ์ „ํžˆ Java 7 ์ดํ•˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” Hadoop 3์œผ๋กœ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ Java 8๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ–ถ โ‘ก HDFS Erasure Encoding
์ถ”ํ›„ ๋‹ค์‹œ ์•Œ์•„๋ณด๊ฒ ์ง€๋งŒ, HDFS์˜ ๊ธฐ๋ณธ ๋ณต์ œ ๊ฐœ์ˆ˜๋Š” 3๊ฐœ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด๊ณ , ๋‚˜๋จธ์ง€ ๋‘ ๊ฐœ๋Š” ๊ฐ๊ฐ 100%์˜ ์Šคํ† ๋ฆฌ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํ•„์š”ํ•œ ๋ณต์ œ๋ณธ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด 200%์˜ ์Šคํ† ๋ฆฌ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๋„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, 1TB ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ์— 3TB ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•œ๊ฒ๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฌ๋‚˜ I/O ํ™œ๋™์ด ์ ์€ Cold Data ๋“ค ๋˜ํ•œ, ์ •์ƒ์ ์ธ ์ž‘์—… ์ค‘ ๊ฑฐ์˜ ์•ก์„ธ์Šค๋˜์ง€ ์•Š์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ ์ˆ˜์ค€์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

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

HDFS์— EC(Erasure Coding)๋ฅผ ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ์„ฑ์„ ๋Œ€ํญ ํ–ฅ์ƒ์‹œํ‚ค๋ฉด์„œ๋„ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 6๊ฐœ์˜ ๋ธ”๋ก์„ ๊ฐ€์ง„ 3x ๋ณต์ œ ํŒŒ์ผ์€ 18๊ฐœ์˜ ๋ธ”๋ก ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, EC(6 ๋ฐ์ดํ„ฐ, 3 ํŒจ๋ฆฌํ‹ฐ) ๋ฐฉ์‹์„ ์ ์šฉํ•˜๋ฉด 9๊ฐœ์˜ ๋ธ”๋ก(6 ๋ฐ์ดํ„ฐ ๋ธ”๋ก + 3 ํŒจ๋ฆฌํ‹ฐ ๋ธ”๋ก)๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์•ฝ 50%์˜ ์Šคํ† ๋ฆฌ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ๋งŒ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด Hadoop์€ HDFS ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ผ๋ถ€ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋จผ์ €, ๋ธ”๋ก ๊ทธ๋ฃน ๋‹จ์œ„๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋”, NameNode ๊ฐ€ ํ™•์žฅ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

HDFS์— ์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ(EC)์„ ์ ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ์กฐ๊ฐ(=์—ฌ๋Ÿฌ ๋ธ”๋ก)์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์กฐ๊ฐ๋“ค์€ โ€œ๊ทธ๋ฃนโ€์œผ๋กœ ๋ฌถ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌถ์Œ์„ โ€œ๋ธ”๋ก ๊ทธ๋ฃน(Block Group)โ€์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์›๋ž˜ HDFS์—์„œ๋Š” ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•  ๋•Œ ๋ธ”๋ก ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋”ฐ๋กœ๋”ฐ๋กœ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ EC๋ฅผ ๋„์ž…ํ•˜๋ฉด์„œ๋Š” ํ•˜๋‚˜์˜ ๋ธ”๋ก ๊ทธ๋ฃน ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ฆ‰, ๋ธ”๋ก ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ธ”๋ก์„ ๋ฌถ์€ โ€˜๊ทธ๋ฃนโ€™์„ ๊ด€๋ฆฌ)

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ์ƒ๊น๋‹ˆ๋‹ค. ๋ธ”๋ก์ด ๋งŽ์•„์ง€๋‹ˆ๊นŒ, NameNode๊ฐ€ ์ด ๋ธ”๋ก ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๊ธฐ์–ต(๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ)ํ•ด์•ผ ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ โ€œ๊ณ„์ธต์  ๋ธ”๋ก ๋ช…๋ช… ๋ฐฉ์‹โ€ ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ทœ์น™์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ทœ์น™์€ ๋ธ”๋ก ๊ทธ๋ฃน์˜ ID๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉด, ๊ทธ ์•ˆ์— ํฌํ•จ๋œ ๋‚ด๋ถ€ ๋ธ”๋ก ID๋“ค์„ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋•๋ถ„์— ๋ชจ๋“  ๋‚ด๋ถ€ ๋ธ”๋ก์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ธฐ์–ตํ•  ํ•„์š” ์—†์ด, ๋ธ”๋ก ๊ทธ๋ฃน ํ•˜๋‚˜๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์„œ NameNode์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด์„ ์ค„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

HDFS ํด๋ผ์ด์–ธํŠธ(ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๋Š” ์ฃผ์ฒด)๋„ EC(์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ)๋ฅผ ์ง€์›ํ•˜๋„๋ก ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๋Š” โ€œ๋ธ”๋ก ๊ทธ๋ฃนโ€ ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ ๋ธ”๋ก์„ ๋™์‹œ์—(๋ณ‘๋ ฌ๋กœ) ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ์ „์—๋Š” ๋ธ”๋ก ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ–ˆ์Œ)

์ด์ œ ํŒŒ์ผ์„ ์“ธ ๋•Œ, HDFS๋Š” DFSStripedOutputStream์ด๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ŠคํŠธ๋ฆผ์€ ๋ธ”๋ก ๊ทธ๋ฃน ์•ˆ์˜ ๊ฐ ๋‚ด๋ถ€ ๋ธ”๋ก์„ ์ €์žฅํ•  DataNode์— ๊ฐ๊ฐ ์ŠคํŠธ๋ฆฌ๋จธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 6๊ฐœ ๋ฐ์ดํ„ฐ ๋ธ”๋ก, 3๊ฐœ ํŒจ๋ฆฌํ‹ฐ ๋ธ”๋ก์ด๋ผ๋ฉด ์ด 9๊ฐœ์˜ ์ŠคํŠธ๋ฆฌ๋จธ๊ฐ€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ž‘์—…์„ ์กฐ์œจํ•˜๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ์žˆ์–ด์„œ ๋ธ”๋ก ๊ทธ๋ฃน์ด ๋‹ค ์ฐผ์„ ๋•Œ ๊ทธ๋ฃน์„ ์ข…๋ฃŒํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ธ”๋ก ๊ทธ๋ฃน์„ ํ• ๋‹นํ•˜๋Š” ๋“ฑ์˜ ์ผ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ๋Š” DFSStripedInputStream์ด๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

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

๋‹ค์Œ์€, DataNode ๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

DataNode๋Š” HDFS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฐ์ดํ„ฐ ๋ธ”๋ก๊ณผ ํŒจ๋ฆฌํ‹ฐ ๋ธ”๋ก์ด ํ•จ๊ป˜ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, EC ๋ธ”๋ก ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ•˜๋ฉด, ์ด ๋ธ”๋ก์„ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ถ”๊ฐ€ ์ž‘์—…(ECWorker)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. NameNode๋Š” ์‹คํŒจํ•œ EC ๋ธ”๋ก์„ ๊ฐ์ง€ํ•˜๊ณ , ์ด๋ฅผ ๋ณต๊ตฌํ•  DataNode๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„, ๋ณต๊ตฌ ์ž‘์—…์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์„ธ ๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

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

๋งˆ์ง€๋ง‰์œผ๋กœ ErasureCoding ์ •์ฑ…์„ ํ™•๋ฆฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ErasureCodingPolicy ํด๋ž˜์Šค์— ์บก์Аํ™”๋ฅผ ํ•จ์œผ๋กœ์จ, HDFS ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ณต์ œ(Replication)์™€ ์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ(EC)์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ A๋Š” ๋ณต์ œ ๋ฐฉ์‹์œผ๋กœ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์ง€์›ํ•˜๊ณ , ํŒŒ์ผ B๋Š” ์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hadoop github ErasureCodingPolicy



โ–ถ โ‘ข Shell Script ๊ฐœ์„ 
๊ธฐ์กด์—๋Š” Hadoop์˜ ๊ฐ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ ๋ณ„๋„๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, hdfs-daemon.sh, yarn-daemon.sh์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ๊ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ณณ์— ํฉ์–ด์ ธ ์žˆ์œผ๋ฉด ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋ชจ๋“  Hadoop ์…ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ hadoop-env.sh๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํŒŒ์ผ์—์„œ ๋ชจ๋“  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, Hadoop์—์„œ ๋ฐ๋ชฌ์„ ์‹œ์ž‘ํ•˜๊ณ  ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธฐ์กด์—๋Š” hdfs-daemon.sh์™€ ๊ฐ™์€ ๊ฐœ๋ณ„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ๋ชฌ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ( ./sbin/hadoop-daemon.sh start namenode )

์ด ๋ช…๋ น์–ด๋“ค์—์„œ -daemon ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ๋ชฌ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ( hdfs โ€“daemon start namenode )

๊ทธ ์™ธ์—๋„ ssh, ${HADOOP_CONF_DIR}, ์—๋Ÿฌ๋ฉ”์‹œ์ง€ ๋“ฑ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โ–ถ โ‘ฃ Shaded Client Jars
Hadoop 2 ๋ฒ„์ „์—์„œ๋Š” hadoop-client๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Hadoop ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Hadoop์˜ ์ข…์†์„ฑ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋ž˜์Šค ๊ฒฝ๋กœ์— ์ถ”๊ฐ€ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

Hadoop 3์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด hadoop-client-api์™€ hadoop-client-runtime์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก hadoop-client-api
์ด ์•„ํ‹ฐํŒฉํŠธ๋Š” ์ปดํŒŒ์ผ ๋ฒ”์œ„๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปดํŒŒ์ผํ•  ๋•Œ๋งŒ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์‹œ: Hadoop ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ ํ•„์š”ํ•œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ, ์‹ค์ œ ์‹คํ–‰ ์‹œ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก hadoop-client-runtime
์ด ์•„ํ‹ฐํŒฉํŠธ๋Š” ๋Ÿฐํƒ€์ž„ ๋ฒ”์œ„๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ Hadoop์˜ ์ข…์†์„ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ด ์•„ํ‹ฐํŒฉํŠธ๋Š” Hadoop์˜ ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋‹จ์ผ JAR ํŒŒ์ผ๋กœ ๋ฌถ์–ด์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋ž˜์Šค ๊ฒฝ๋กœ๋กœ ๋ˆ„์ถœ๋˜๋Š” Hadoop์˜ ์ข…์†์„ฑ์„ ์™„์ „ํžˆ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ๋“ค์–ด๋ณด๋ฉด HBase๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

HBase๋Š” Hadoop๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ์ธ๋ฐ, Hadoop์˜ ๊ตฌํ˜„ ์ข…์†์„ฑ ์—†์ด Hadoop ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” HBase๊ฐ€ Hadoop ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ ํ•˜๋ ค๋ฉด Hadoop์˜ ์ข…์†์„ฑ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ๊ณ , ๋ฒ„์ „ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Hadoop 3์—์„œ๋Š” HBase๊ฐ€ Hadoop์˜ ์ข…์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , ์Œ์˜ ์ฒ˜๋ฆฌ๋œ Hadoop ํด๋ผ์ด์–ธํŠธ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ •์ ์œผ๋กœ Hadoop ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ–ถ โ‘ค Opportunistic Containers ์˜ ์ง€์›
Opportunistic Containers ๋Š” YARN์—์„œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•˜๋”๋ผ๋„ ์‹คํ–‰์„ ์‹œ๋„ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ๋‹ค๊ฐ€, ๋ฆฌ์†Œ์Šค๊ฐ€ ํ• ๋‹น๋˜๋ฉด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ด ์ปจํ…Œ์ด๋„ˆ๋Š” Guaranteed Containers์™€ ๋น„๊ตํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
์ฆ‰, ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด Guaranteed Containers๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ , ๊ทธ ํ›„์— Opportunistic Containers๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋„์ž…์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ๋ฅ ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
( ๋˜ํ•œ, ๋ถ„์‚ฐ ์Šค์ผ€์ค„๋ง ์ž‘์—…์—์„œ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. )

โ–ถ โ‘ฅ MapReduce ์ตœ์ ํ™”
Hadoop 3์—์„œ๋Š” MapReduce ์ž‘์—…์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋งต ์ถœ๋ ฅ ์ˆ˜์ง‘๊ธฐ(map output collector)์— ๋Œ€ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ(Java ์™ธ๋ถ€, ์ฃผ๋กœ C/C++ ๊ธฐ๋ฐ˜) ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ด ์ตœ์ ํ™”๋Š” ์…”ํ”Œ(shuffle) ์ž‘์—…์ด ๋งŽ์€ ๊ฒฝ์šฐ, ์ž‘์—… ์†๋„๋ฅผ 30% ์ด์ƒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์œผ๋กœ, Hadoop 3๋Š” NativeMapOutputCollector๋ผ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ MapTask์— ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ด๋Š” ๋งคํผ๊ฐ€ ๋ฐฉ์ถœํ•˜๋Š” (key, value) ์Œ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ •๋ ฌ(sort), ์Šคํ•„(spill), IFile ์ง๋ ฌํ™” ๊ณผ์ •์„ ๋ชจ๋‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์ตœ์ ํ™”๋Š” JNI(Java Native Interface)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด, ์ž๋ฐ”๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„๋กœ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hadoop github NativeMapOutputCollector



์œ„์—์„œ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์šฉ์–ด๋ฅผ ์กฐ๊ธˆ ๋” ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ์•ž์œผ๋กœ Map Reduce ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Spill(์Šคํ•„)์€ ๋งต ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ์ดˆ๊ณผํ•  ๋•Œ, ๋ฒ„ํผ์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ž„์‹œ ํŒŒ์ผ๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
MapReduce ์ž‘์—…์€ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์— ํ•œ๊ณ„๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ผ์ • ์ˆ˜์ค€ ์ด์ƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๋ฉด ์ž๋™์œผ๋กœ spill ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์Šคํ•„์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด ๋””์Šคํฌ I/O ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Shuffle(์…”ํ”Œ)์€ ๋งต ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ๋œ (key, value) ์Œ๋“ค์„ ๋ฆฌ๋“€์Šค ์ž‘์—…์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ด๋™์‹œํ‚ค๊ณ , ์ด๋ฅผ ํ‚ค ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์…”ํ”Œ ๊ณผ์ •์€ MapReduce ์ „์ฒด ์ž‘์—… ์ค‘ ๊ฐ€์žฅ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
๋„คํŠธ์›Œํฌ ์ „์†ก๊ณผ ๋””์Šคํฌ ์“ฐ๊ธฐยท์ฝ๊ธฐ, ์ •๋ ฌ ๊ณผ์ •์ด ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋ถ€๋ถ„์˜ ์ตœ์ ํ™”๊ฐ€ ์ „์ฒด ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

โ–ถ โ‘ฆ 2๊ฐœ ์ด์ƒ์˜ NameNode ์ง€์›
Hadoop V2์—์„œ๋Š” HDFS NameNode HA ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋‹จ์ผ ํ™œ์„ฑ NameNode์™€, ๋‹จ์ผ ๋Œ€๊ธฐ NameNode๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์•„ํ‚คํ…์ฒ˜๋Š” ์„ธ ๊ฐœ์˜ JournalNode๋กœ ์ด๋ฃจ์–ด์ง„ ์ฟผ๋Ÿผ(quorum)์— ํŽธ์ง‘ ๋กœ๊ทธ(edit log)๋ฅผ ๋ณต์ œํ•˜์—ฌ, ํ•˜๋‚˜์˜ NameNode์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์„œ๋น„์Šค๋ฅผ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ดํ›„ ๋น„์ฆˆ๋‹ˆ์Šค ํฌ๋ฆฌํ‹ฐ์ปฌ ํ™˜๊ฒฝ์—์„œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์žฅ์• ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋Š” ๋” ๋†’์€ ์ˆ˜์ค€์˜ ๋‚ด๊ฒฐํ•จ์„ฑ(fault tolerance)์ด ์š”๊ตฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋”ฐ๋ผ Hadoop V3์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋Œ€๊ธฐ(standby) NameNode๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 3๊ฐœ์˜ NameNode(1๊ฐœ์˜ ํ™œ์„ฑ(active), 2๊ฐœ์˜ ๋Œ€๊ธฐ(standby))์™€ 5๊ฐœ์˜ JournalNode๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์—์„œ๋Š” ์ตœ๋Œ€ 2๊ฐœ์˜ NameNode ์žฅ์• ๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์–ด, ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

2๊ฐœ ์ด์ƒ์˜ NameNode ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” JournalNode ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ๊ฐœ์š”๋ฅผ ์ •๋ฆฌํ•˜๋ฉด,
HDFS ๊ณ ๊ฐ€์šฉ์„ฑ ์•„ํ‚คํ…์ฒ˜์—์„œ NameNode๋“ค์˜ ํŽธ์ง‘ ๋กœ๊ทธ(edit log)๋ฅผ ์ €์žฅํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
ํ™œ์„ฑ NameNode๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด, ํ•ด๋‹น ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ JournalNode์— ๋ณต์ œํ•˜์—ฌ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
๋Œ€๊ธฐ NameNode๋Š” ์ด JournalNode๋กœ๋ถ€ํ„ฐ ํŽธ์ง‘ ๋กœ๊ทธ๋ฅผ ์ฝ์–ด ๋“ค์—ฌ ํ™œ์„ฑ NameNode์™€ ํ•ญ์ƒ ๋™๊ธฐํ™”๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
JournalNode๋Š” ๋ณ„๋„์˜ ์ €์žฅ์†Œ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์•ˆ์ •์ ์ธ ์žฅ์•  ๋ณต๊ตฌ๋ฅผ ์œ„ํ•ด ํ™€์ˆ˜ ๊ฐœ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

์ฟผ๋Ÿผ(Quorum)์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์˜์‚ฌ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋™์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
HDFS์—์„œ๋Š” JournalNode ์ง‘ํ•ฉ์—์„œ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋ก๋˜์—ˆ๋‹ค๊ณ  ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 5๊ฐœ์˜ JournalNode๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ, 3๊ฐœ ์ด์ƒ์˜ ๋…ธ๋“œ๊ฐ€ ์‘๋‹ตํ•ด์•ผ ์ฟผ๋Ÿผ์ด ์„ฑ๋ฆฝํ•ฉ๋‹ˆ๋‹ค.
( ๋งˆ์น˜ ์ฃผํ‚คํผ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. )

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ์ผ๋ถ€ ๋…ธ๋“œ๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผ์ผœ๋„ ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

โ–ถ โ‘ง ๊ธฐ๋ณธ ํฌํŠธ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
Hadoop V2์—์„œ๋Š” ์—ฌ๋Ÿฌ Hadoop ์„œ๋น„์Šค์˜ ๊ธฐ๋ณธ ํฌํŠธ๊ฐ€ Linux์˜ ์ž„์‹œ ํฌํŠธ ๋ฒ”์œ„(32768โ€“61000) ๋‚ด์— ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด ํŠน์ • ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ด ์ž„์‹œ ํฌํŠธ ๋ฒ”์œ„ ๋‚ด ํฌํŠธ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ด๋กœ ์ธํ•ด ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํฌํŠธ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์—ฌ ํฌํŠธ์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, Hadoop 3์—์„œ๋Š” ์—ฌ๋Ÿฌ ํ•ต์‹ฌ ์„œ๋น„์Šค(NameNode, Secondary NameNode, DataNode ๋“ฑ)์˜ ๊ธฐ๋ณธ ํฌํŠธ๊ฐ€ ์ž„์‹œ ํฌํŠธ ๋ฒ”์œ„ ๋ฐ”๊นฅ์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋กœ์จ ์„œ๋น„์Šค ๊ฐ„ ํฌํŠธ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ค๊ณ  ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ์ฃผ์š” ํฌํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Daemon App Hadoop 2.x Port Hadoop 3 Port
NameNode Hadoop HDFS NameNode 8020 9820
ย  Hadoop HDFS NameNode HTTP UI 50070 9870
ย  Hadoop HDFS NameNode HTTPS UI 50470 9871
Secondary NN Secondary NameNode HTTP 50091 9869
ย  Secondary NameNode HTTP UI 50090 9868
DataNode Hadoop HDFS DataNode IPC 50020 9867
ย  Hadoop HDFS DataNode 50010 9866
ย  Hadoop HDFS DataNode HTTP UI 50075 9864
ย  Hadoop HDFS DataNode HTTPS UI 50475 9865

โ–ถ โ‘จ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ปค๋„ฅํ„ฐ ์ง€์›
Hadoop์€ Microsoft Azure Data Lake ๋ฐ Aliyun Object Storage System๊ณผ์˜ ํ†ตํ•ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ์ด ๋‘ ์‹œ์Šคํ…œ์„ Hadoop ํ˜ธํ™˜ ํŒŒ์ผ ์‹œ์Šคํ…œ(Hadoop Compatible File System, HCFS)์˜ ๋Œ€์ฒด ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋จผ์ € Microsoft Azure Data Lake ํ†ตํ•ฉ์ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ์ดํ›„์— Aliyun Object Storage System ํ†ตํ•ฉ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โ–ถ โ‘ฉ DataNode ๋‚ด๋ถ€ ๋ฐธ๋Ÿฐ์„œ
๊ธฐ์กด HDFS ๊ตฌ์กฐ์—์„œ DataNode ๋Š” ํ•˜๋‚˜์˜ DataNode ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋””์Šคํฌ๋ฅผ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ( ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— HDD, SDD ๋“ฑ ์—ฌ๋Ÿฌ ๋””์Šคํฌ๋ฅผ ๋‹ฌ ์ˆ˜ ์žˆ์Œ )
๊ทธ๋Ÿฌ๋‚˜, ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ Hadoop ์€ ๋ชจ๋“  ๋””์Šคํฌ์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์‹œ์ผœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋””์Šคํฌ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋น„์Šทํ•œ ๋น„์œจ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

์ด๋Ÿฌ๋ฉด, ์ƒˆ ๋””์Šคํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋””์Šคํฌ๋ฅผ ๊ต์ฒดํ•˜๋ฉด DataNode ๋‚ด์˜ ๋””์Šคํฌ ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ ๋ถˆ๊ท ํ˜• ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ HDFS Balancer ๋Š” ๋…ธ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ท ํ˜•๋งŒ ์กฐ์ • ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€, ํ•˜๋‚˜์˜ DataNode ์•ˆ์—์„œ์˜ ๋””์Šคํฌ๋“ค ์‚ฌ์ด ๊ท ํ˜•์€ ์กฐ์ •ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜๋‘ก V3์—์„œ๋Š” DataNode ๋‚ด๋ถ€ ๋””์Šคํฌ ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ ๋ถˆ๊ท ํ˜•๋„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ธ HDFS ๋””์Šคํฌ ๋ฐธ๋Ÿฐ์„œ(Disk Balancer)๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ์ด ๋””์Šคํฌ ๋ฐธ๋Ÿฐ์„œ๋Š” CLI(Command Line Interface) ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € DataNode ์•ˆ์˜ ๋””์Šคํฌ๋“ค ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌ๋˜๋„๋ก ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธฐ์กด ๋””์Šคํฌ๊ฐ€ 90% ์ฐจ ์žˆ๊ณ  ์ƒˆ ๋””์Šคํฌ๊ฐ€ 5% ์ฐจ ์žˆ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์„œ ๋‘˜ ๋‹ค ๋น„์Šทํ•˜๊ฒŒ 50%, 50%๋กœ ๋งž์ถ”๋Š” ์‹์ž…๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด I/O ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ , ๋””์Šคํฌ ๊ณผ๋ถ€ํ•˜ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hdfs diskbalancer -plan <DataNode๋ช…> -out <ํ”Œ๋žœํŒŒ์ผ>
hdfs diskbalancer -execute <ํ”Œ๋žœํŒŒ์ผ>

โ–ถ โ‘ช ๋ฐ๋ชฌ ๋ฐ ์ž‘์—… Heap ๊ด€๋ฆฌ ์žฌ์ž‘์—…
Hadoop 3์—์„œ๋Š” ๋ฐ๋ชฌ์˜ ํž™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ MapReduce ์ž‘์—…์— ๊ด€๋ จ๋œ ์„ค์ • ๋ฐฉ์‹์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋ฐ๋ชฌ Heap ํฌ๊ธฐ ์„ค์ • ๋ฐฉ์‹์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด์—๋Š” HADOOP_HEAPSIZE ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํž™ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ–ˆ์œผ๋‚˜, ์ด์ œ๋Š” ์ด ๋ฐฉ์‹์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
HADOOP_HEAPSIZE_MAX๋Š” JVM์˜ ์ตœ๋Œ€ ํž™ ํฌ๊ธฐ(Xmx)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
HADOOP_HEAPSIZE_MIN๋Š” JVM์˜ ์ดˆ๊ธฐ ํž™ ํฌ๊ธฐ(Xms)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ณ€์ˆ˜๋“ค์€ ๋‹จ์œ„(MB, GB ๋“ฑ)๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ(MB)๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, Hadoop์€ ์ด์ œ ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜์—ฌ ์ ์ ˆํ•œ ํž™ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , MapReduce ์ž‘์—… Heap ํฌ๊ธฐ ๊ด€๋ฆฌ๋„ ๊ธฐ์กด์— ๋น„ํ•ด ๋‹จ์ˆœํ™” ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ ์ž‘์—… ๊ตฌ์„ฑ(mapreduce.map.memory.mb, mapreduce.reduce.memory.mb)๊ณผ Java ์˜ต์…˜(-Xmx)์„ ๋™์‹œ์— ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ ์„ค์ •๋งŒ์œผ๋กœ๋„ Heap ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ Hadoop 2.x ๋ฐฉ์‹ Hadoop 3.x ์ดํ›„ ๋ณ€๊ฒฝ์ 
๋ฐ๋ชฌ ํž™ ํฌ๊ธฐ ์„ค์ • ๋ฐฉ์‹ HADOOP_HEAPSIZE ์‚ฌ์šฉ HADOOP_HEAPSIZE_MAX, HADOOP_HEAPSIZE_MIN ์‚ฌ์šฉ
๋ฉ”๋ชจ๋ฆฌ ๋‹จ์œ„ ์ง€์› ์ˆซ์ž๋งŒ ์ž…๋ ฅ (MB๋กœ ๊ฐ„์ฃผ) MB, GB ๋“ฑ์˜ ๋‹จ์œ„ ๋ช…์‹œ ๊ฐ€๋Šฅ
์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ํŠœ๋‹ ์—†์Œ (์ˆ˜๋™ ์„ค์ • ํ•„์š”) ํ˜ธ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™ ์กฐ์ • ๊ฐ€๋Šฅ
์ž‘์—… ํž™ ์„ค์ • ๋ฐฉ์‹ ๊ตฌ์„ฑ๊ฐ’๊ณผ Java ์˜ต์…˜ ๋ชจ๋‘ ๋ช…์‹œ ํ•„์š” ํ•˜๋‚˜๋งŒ ์ง€์ •ํ•ด๋„ ์ž๋™ ์ ์šฉ๋จ
๊ธฐ์กด ์„ค์ • ํ˜ธํ™˜์„ฑ ๊ธฐ์กด ๋ฐฉ์‹ ์œ ์ง€ ๊ธฐ์กด ๊ตฌ์„ฑ์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์ž‘๋™ํ•จ

โ–ถ โ‘ซ YARN TimeLine Service V2
YARN Timeline Service๋Š” YARN ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์˜ ์ƒํƒœ, ์ด๋ฒคํŠธ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์‹คํ–‰ ์ƒํƒœ๋ฟ ์•„๋‹ˆ๋ผ, ๊ฐ ํƒœ์Šคํฌ(Task)์˜ ์ƒ์„ธ ์‹คํ–‰ ๋‚ด์—ญ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ธฐ๋ก, ์ž์› ์‚ฌ์šฉ ํ†ต๊ณ„ ๋“ฑ ์ •๋ฐ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์•™ ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•จ์œผ๋กœ์จ, ์šด์˜์ž๋‚˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ๋ถ„์„ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค MapReduce ์ž‘์—…์ด ์‹คํŒจํ–ˆ๋Š”์ง€, Spark ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์–ด๋А ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž์› ๋ถ€์กฑ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€, ๋˜๋Š” ํƒœ์Šคํฌ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ํ‰๊ท ๋ณด๋‹ค ๋น„์ •์ƒ์ ์œผ๋กœ ๊ธธ์–ด์ง„ ๊ฒฝ์šฐ๊ฐ€ ์–ด๋””์ธ์ง€ ๋“ฑ์„ ํŒŒ์•…ํ•ด์•ผ ํ•  ๋•Œ, Timeline Service๋Š” ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

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

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

์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด Hadoop 3.0๋ถ€ํ„ฐ Timeline Service v2 (TSv2)๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

TimeLine Service V2 (์ดํ•˜ TSv2) ๋Š” ํ™•์žฅ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ, ํ๋ฆ„๊ณผ ์ง‘๊ณ„๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ์„ฑ ๊ฐœ์„  ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

v.2๋Š” ๋ถ„์‚ฐ ์ž‘์„ฑ๊ธฐ(distributed writer) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ณผ ์ œ๊ณต ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์€ ๊ฐ YARN ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ˆ˜์ง‘๊ธฐ(installer collector)๋ฅผ ๋‘์–ด ๋ถ„์‚ฐ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์ œ๊ณต์€ REST API๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ณ„๋„์˜ ํŒ๋…๊ธฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ „๋‹ดํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ์ˆ˜ํ‰์  ํ™•์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œ์ผœ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ์•ˆ์ •์ ์ธ ์šด์˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

๋‹ค์Œ, v2 ์‚ฌ์šฉ์„ฑ ํ–ฅ์ƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ž๋ฉด, ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋“ค์€ ๊ฐœ๋ณ„ YARN ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค๋Š”, ์—ฌ๋Ÿฌ YARN ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„, ์ฆ‰ โ€œํ๋ฆ„(flow)โ€ ์ˆ˜์ค€์˜ ์ •๋ณด์— ๋” ๋งŽ์€ ๊ด€์‹ฌ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ YARN ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ง‘ํ•ฉ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
์ด์— ๋”ฐ๋ผ, ํƒ€์ž„๋ผ์ธ ์„œ๋น„์Šค v.2๋Š” ์ด๋Ÿฌํ•œ ํ๋ฆ„ ๊ฐœ๋…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ๋ฆ„ ๋‹จ์œ„๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๋ฌถ์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด ์ž‘์—…์˜ ์ง„ํ–‰ ์ƒํ™ฉ์ด๋‚˜ ์„ฑ๋Šฅ์„ ๋” ํšจ๊ณผ์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ํƒ€์ž„๋ผ์ธ ์„œ๋น„์Šค v.2๋Š” ํ๋ฆ„ ์ˆ˜์ค€์—์„œ ๋ฉ”ํŠธ๋ฆญ(metric) ์ง‘๊ณ„๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ, ์ „์ฒด ํ๋ฆ„ ๋‹จ์œ„๋กœ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰, ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋“ฑ์˜ ๋ฉ”ํŠธ๋ฆญ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด, ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋ณด๋‹ค ์ง๊ด€์ ์ด๊ณ  ์œ ์šฉํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

yarn_timeline

์ถœ์ฒ˜ : Yarn TimeLine V2



YARN ํƒ€์ž„๋ผ์ธ ์„œ๋น„์Šค v.2๋Š” ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์–ด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ณผ ์ €์žฅ, ์กฐํšŒ์˜ ํšจ์œจ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

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

์ง€์ •๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งˆ์Šคํ„ฐ๋Š” ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ์— ๋ฐฐ์น˜๋œ ํƒ€์ž„๋ผ์ธ ์ˆ˜์ง‘๊ธฐ๋กœ ์ง์ ‘ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ๋…ธ๋“œ ๊ด€๋ฆฌ์ž(NodeManager)๋“ค๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งˆ์Šคํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ํƒ€์ž„๋ผ์ธ ์ˆ˜์ง‘๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์ž๋Š” ์ž์ฒด์ ์ธ ํƒ€์ž„๋ผ์ธ ์ˆ˜์ง‘๊ธฐ๋ฅผ ๋”ฐ๋กœ ์œ ์ง€ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ์ „์ฒด์— ๋Œ€ํ•œ ๊ณผ๋„ํ•œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ก์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด YARN์˜ ์ผ๋ฐ˜์ ์ธ ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ด๋ฒคํŠธ๋งŒ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

ํ•œํŽธ, ํƒ€์ž„๋ผ์ธ ๋ฆฌ๋”๋Š” ์ˆ˜์ง‘๊ธฐ์™€๋Š” ๋ถ„๋ฆฌ๋œ ๋…๋ฆฝ๋œ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฆฌ๋”๋Š” REST API๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์ฟผ๋ฆฌ์— ์‘๋‹ตํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ฝ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ์— ์ „๋…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ์„ ๋”์šฑ ๋†’์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ด์•ผ๊ธฐ๋Š” ์ถ”ํ›„์— YARN ํŒŒํŠธ์—์„œ ์ž์„ธํžˆ ํฌ์ŠคํŒ… ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.




โ—ˆ


โœ๏ธ ๊ฒฐ๋ก 


์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Hadoop ์ด ์™œ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋Š”์ง€, ๊ทธ ์ด์ „ ์‹œ์Šคํ…œ์€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ•ด ์™”๊ณ  ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ Hadoop ์— ๋Œ€ํ•ด ๋ฐ”๋กœ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ทธ ์ž์ฒด์— ๋Œ€ํ•˜์—ฌ ๋จผ์ € ๊ณต๋ถ€ํ•˜๊ณ  Hadoop ์„ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด, Hadoop ๋“ฑ์žฅ์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋กœ ์ธํ•ด ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ๊ธ€์„ ํฌ์ŠคํŒ…ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ„์† ๊นŠ๊ฒŒ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ๊ธ€์„ ๋‚จ๊ธธ ๊ฒƒ์ด๋ฉฐ, ํ•ด๋‹น ๊ธ€๋„ ๊ณ„์† ๋‹ค์‹œ ์ฝ๊ณ  ๋ณต์Šต ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋ถ€ํ„ฐ๋Š” HDFS, Yarn, MapReduce ๋“ฑ ๋ณธ๊ฒฉ์ ์œผ๋กœ Hadoop ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค. :D




โ—ˆ


๐Ÿ“š ๊ณต๋ถ€ ์ฐธ๊ณ  ์ž๋ฃŒ


๐Ÿ“‘ 1. ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ํ•œ ๋ฒˆ์— ๋๋‚ด๋Š” ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ์ดˆ๊ฒฉ์ฐจ ํŒจํ‚ค์ง€ Online.

๐Ÿ“‘ 2. ๋ถ„์‚ฐ์ฒ˜๋ฆฌ์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•  challenges

๐Ÿ“‘ 3. NoSQL ์ด๋ž€?

๐Ÿ“‘ 4. CAP ์ด๋ก ์— ๋Œ€ํ•œ ์นด์‚ฐ๋“œ๋ผ์™€ ๋ชฝ๊ณ DB

๐Ÿ“‘ 5. ๋ชฝ๊ณ DB ๋ณต์ œ

๐Ÿ“‘ 6. ํ•˜๋‘ก์ด๋ž€?

๐Ÿ“‘ 7. Hadoop์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๐Ÿ“‘ 8. ํ•˜๋‘ก 3.0์—์„  ๋ฌด์—‡์ด ๋‹ฌ๋ผ์กŒ์„๊นŒ? ( Erasure Coding ์„ ์ดํ•ดํ•˜๊ธฐ ์ข‹์€ ๊ธ€ )

๐Ÿ“‘ 9. OREILLY ํ•˜๋‘ก ์™„๋ฒฝ ๊ฐ€์ด๋“œ 4ํŒ