์ค๋๋ ๋ฐ์ดํฐ๋ ํญ๋ฐ์ ์ผ๋ก ์ฆ๊ฐํ๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๊ธฐ์ ์ ์ค์์ฑ๋ ํจ๊ป ์ปค์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ํ๋ฆ ์์์ ์ฃผ๋ชฉ๋ฐ์ ๊ธฐ์ ์ค ํ๋๊ฐ ๋ฐ๋ก ํ๋ก(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๊ฐ ์ด๋ฅผ ๋ถ๋ฌ์ ์คํํ๋๋ก ๊ตฌ์ฑ๋ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ก ์ธํด ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝ์ด ํจ์ฌ ์ ์ฐํ๊ณ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง ์ ์๊ฒ ๋์์ผ๋ฉฐ, ์ปดํจํฐ๊ฐ ์ง๊ธ์ฒ๋ผ ๋ค์ํ ์์ ์ ์์ฝ๊ฒ ์ํํ ์ ์๋ ๊ธฐ๋ฐ์ด ๋ง๋ จ๋์์ต๋๋ค.
์ถ์ฒ : 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 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 ์ชฝ์ ๋ ๋ง์ ๋น์ค์ ๋ก๋๋ค.
์ถ์ฒ : CP ์ AP
โ 2.3.1 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 ์ด ์์ต๋๋ค.
โ 2.5.2. Load Balancer
์ถ์ฒ : ๋ก๋ ๋ฐธ๋ฐ์
๊ณผ๊ฑฐ์ ๋ก๋๋ฐธ๋ฐ์๋ ํ๋ ๋๋ ๋ ๊ฐ์ ๊ณ ์ฑ๋ฅ ํ๋์จ์ด ์ฅ๋น๋ ์ค์์น๋ก ๋ก๋๋ฐธ๋ฐ์ฑ์ ์ฒ๋ฆฌํ์ต๋๋ค. ํ์ง๋ง ํ๋์ ๋ก๋๋ฐธ๋ฐ์๋ ์ธ์คํด์ค๊ฐ ์๋ฐฑ์์ ์์ฒ ๋๊น์ง ์ฐ๊ฒฐ๋๋ฏ๋ก ํ๋์ ๊ณ ์คํ ํ๋์จ์ด๋ก ๋ชจ๋ ๋ก๋๋ฐธ๋ฐ์ฑ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ํ, ์ค์ ์ด๋ ๊ท์น์ ๋ณ๊ฒฝ์ด ์ฆ๊ณ ๊ทธ ๋ณต์ก๋๊ฐ ๋์์ก์ต๋๋ค.
๋ฐ๋ผ์ AWS, Azure์ ๊ฐ์ ํด๋ผ์ฐ๋ ์๋น์ค์์ ์ ํํ๋ ๋ก๋๋ฐธ๋ฐ์๋ ๋ชจ๋ ์ํํธ์จ์ด ๋ก๋๋ฐธ๋ฐ์์ ๋๋ค. ์ธ๋ถ์ ๋ ธ์ถ๋๋ IP ์ฃผ์๋ DNS ์ฃผ์๋ ํ๋์ด์ง๋ง, ๋ด๋ถ์ ์ผ๋ก๋ HA(High Availability)๋ฅผ ์ํด ์ฌ๋ฌ ์๋ฒ์ ์ค์์น๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ํ, ์ค์๊ฐ ์ค์ ๋ฐ์์ ์ํ ๋๊ธฐํ ์์คํ ๋ ๊ตฌ์ถ๋์ด ์์ต๋๋ค.
โ 2.5.3. ๋ถ์ฐ ๋ฉ์์ง ํ
์ถ์ฒ : ๋ถ์ฐ ๋ฉ์์ง ํ - ์นดํ์นด
Queue๋ผ๊ณ ํ๋ฉด FIFO(First In First Out)๊ฐ ๊ฐ๋ฅํด์ผ ํ๋ฏ๋ก, ์์๊ฐ ๋ณด์ฅ๋์ด์ผ ํฉ๋๋ค. Queue๋ ํ๋๋ง ์กด์ฌํ ์๋ฐ์ ์์ต๋๋ค.
ํ์ง๋ง ํ๋์ Queue๋ก๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ ํ๊ณ๊ฐ ์์ผ๋ฏ๋ก, ํ๋์ ์ฃผ์ ์ ๋ํด ์ฌ๋ฌ ๊ฐ์ Queue๋ฅผ ๋์ด ์ฒ๋ฆฌ๋์ ๋๋ฆด ์ ์๋ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค. ์ด ๊ตฌ์กฐ๋ฅผ ๋ํํ๋ ์๊ฐ Kafka์ ๋๋ค.
Kafka์์๋ ํ๋์ Topic(๋ ผ๋ฆฌ์ Queue)์ด ์ฌ๋ฌ ๊ฐ์ Partition(๋ฌผ๋ฆฌ์ Queue)์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ Partition๋ณ๋ก๋ ์์๋ฅผ ๋ณด์ฅํ ์ ์์ง๋ง, ์ ์ฒด Topic์ ๋ํด์๋ ์์๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ ์ฒด Topic์ ์์๋ฅผ ๋ณด์ฅํ๋ ค ํ๋ค๋ฉด, ์ฒ๋ฆฌ๋ ์ํด๋ฅผ ๊ฐ์ํด์ผ ํฉ๋๋ค.
๐ 3. ํ๋ก์ ๋ฑ์ฅ๊ณผ ๊ฐ์
๊ธฐ์ ์ ์ดํด๋ History
๋ฅผ ํ์
ํ๋๊ฒ ์ค์ํ๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ์์คํ
์ ์ญ์ฌ๋ถํฐ ๋ถ์ฐ ์์คํ
๊น์ง ์์๋ณด์์ต๋๋ค.
๋ถ์ฐ ์์คํ
์ ๊ฐ๋
์ด ์ดํด๋์๋ค๋ฉด, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ๋ก์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ถ์ฒ : 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๋ ์ด ๊ฑธ๋ ธ์ ๊ฒ์ด๋ผ ์์๋์์ต๋๋ค.
๐ 3.2. ํ๋ก์ด๋
ํ๋ก์ ํ ๋ฌธ์ฅ์ผ๋ก ์ ์ํ๋ฉด, ํ๋์ ์ฑ๋ฅ ์ข์ ์ปดํจํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ ์ ๋นํ ์ฑ๋ฅ์ ์ปดํจํฐ ์ฌ๋ฌ ๋๋ฅผ ํด๋ฌ์คํฐํํ๊ณ ํฐ ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ํด๋ฌ์คํฐ์์ ๋ณ๋ ฌ๋ก ๋์์ ์ฒ๋ฆฌํ์ฌ ์ฒ๋ฆฌ ์๋๋ฅผ ๋์ด๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ์ํ ์คํ์์ค ํ๋ ์์ํฌ ๋ผ๊ณ ์ ์ ํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ์ ๊ท๋ชจ๊ฐ ๊ธฐ๊ฐ๋ฐ์ดํธ์์ ํํ๋ฐ์ดํธ์ ์ด๋ฅด๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅ ๋ฐ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ํ๋์ ๋ํ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌํ๋ ๋์ Hadoop์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ปดํจํฐ๋ฅผ ํจ๊ป ํด๋ฌ์คํฐ๋งํ์ฌ ๋๋์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ณ๋ ฌ๋ก ๋ถ์ํ ์ ์์ต๋๋ค.
๋ํ ์ฌ๋ฌ๊ฐ์ง ์คํ ์์ง, ํ๋ก๊ทธ๋๋ฐ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง ๋ฑ, ํ๋ก ์ํ๊ณ ์ ๋ฐ์ ํฌํจํ๋ ์๋ฏธ๋ก ํ์ฅ & ๋ฐ์ ๋์ด์์ต๋๋ค.
์ถ์ฒ : ํ๋ก ์ํ๊ณ ์ด๋ฏธ์ง
๋ค์ ํฌ์คํ ์์ ์ข ๋ ์์ธํ ๋ค๋ฃจ๊ฒ ์ง๋ง, ํ๋ก์ ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด, ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ชผ๊ฐ๊ณ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํ๋ ๊ฐ๋ ์ ๋๋ค.
์ชผ๊ฐ์ ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ์ด๋ ๋ ธ๋์ ์์นํ์๋์ง๋ฅผ ์ ์ ์๋ ๋ฉํ ๋ฐ์ดํฐ ๋ํ ์์ผ๋ฉฐ, ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ๋ค๋ฅธ ๋ ธ๋์ ์ ์ฅํจ์ผ๋ก์จ, 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
์ถ์ฒ : ํ๋ก 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
์ถ์ฒ : ํ๋ก 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
์ถ์ฒ : ํ๋ก์ด ์ธ ๋ง๋ฆฌ๋๊น, ํ๋ก 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๋ ์ด๋ ์ด์ ์ฝ๋ฉ ๋ฐฉ์์ผ๋ก ๋ด๊ฒฐํจ์ฑ์ ์ง์ํ ์ ์์ต๋๋ค.
โถ โข 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)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด, ์๋ฐ๋ง์ผ๋ก ์ฒ๋ฆฌํ ๋๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์๋๋ก ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์์์ ์ดํด๊ฐ ์๊ฐ ์ ์๋ ์ฉ์ด๋ฅผ ์กฐ๊ธ ๋ ์ ๋ฆฌํ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ์์ผ๋ก 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 V2
YARN ํ์๋ผ์ธ ์๋น์ค v.2๋ ๋ถ์ฐ ์ํคํ
์ฒ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์ด ๋ฐ์ดํฐ ์์ง๊ณผ ์ ์ฅ, ์กฐํ์ ํจ์จ์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํํฉ๋๋ค.
์ด ์๋น์ค๋ ์ฌ๋ฌ ๊ฐ์ ์์ง๊ธฐ(์์ฑ๊ธฐ)๋ฅผ ํ์ฉํ์ฌ ๋ฐฑ์๋ ์คํ ๋ฆฌ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ฌํ ์์ง๊ธฐ๋ค์ ๋ถ์ฐ๋์ด ์์ผ๋ฉฐ, ๊ฐ ์์ง๊ธฐ๋ ์ ์ฉ ์ ํ๋ฆฌ์ผ์ด์ ๋ง์คํฐ์ ํจ๊ป ๋์ผํ ๋ ธ๋์ ๋ฐฐ์น๋ฉ๋๋ค. ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ฆฌ์์ค ๊ด๋ฆฌ์(ResourceManager)์ ํ์๋ผ์ธ ์์ง๊ธฐ๋ฅผ ์ ์ธํ๊ณ , ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ ๋ฐฐ์น๋ ํ์๋ผ์ธ ์์ง๊ธฐ๋ก ์ ์ก๋ฉ๋๋ค.
์ง์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ ํ๋ฆฌ์ผ์ด์ ๋ง์คํฐ๋ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์ ๋ฐฐ์น๋ ํ์๋ผ์ธ ์์ง๊ธฐ๋ก ์ง์ ๊ธฐ๋กํฉ๋๋ค. ๋ํ, ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ฅผ ์คํ ์ค์ธ ๋ค๋ฅธ ๋ ธ๋์ ๋ ธ๋ ๊ด๋ฆฌ์(NodeManager)๋ค๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง์คํฐ๊ฐ ์์นํ ๋ ธ๋์ ํ์๋ผ์ธ ์์ง๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ฌ ๊ธฐ๋กํฉ๋๋ค.
๋ฆฌ์์ค ๊ด๋ฆฌ์๋ ์์ฒด์ ์ธ ํ์๋ผ์ธ ์์ง๊ธฐ๋ฅผ ๋ฐ๋ก ์ ์งํ๋ฉฐ, ์์คํ ์ ์ฒด์ ๋ํ ๊ณผ๋ํ ๋ฐ์ดํฐ ๊ธฐ๋ก์ ๋ฐฉ์งํ๊ธฐ ์ํด YARN์ ์ผ๋ฐ์ ์ธ ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ๋ง ๊ธฐ๋กํฉ๋๋ค.
ํํธ, ํ์๋ผ์ธ ๋ฆฌ๋๋ ์์ง๊ธฐ์๋ ๋ถ๋ฆฌ๋ ๋ ๋ฆฝ๋ ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ก ๋์ํฉ๋๋ค.
์ด ๋ฆฌ๋๋ REST API๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์ฟผ๋ฆฌ์ ์๋ตํ๋ ์ญํ ์ ํ๋ฉฐ, ์ฝ๊ธฐ ์์ฒญ ์ฒ๋ฆฌ์ ์ ๋ ํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ์ฝ๊ธฐ์ ์ฐ๊ธฐ๋ฅผ ์์ ํ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์์คํ ์ ํ์ฅ์ฑ์ ๋์ฑ ๋์ ๋๋ค.
ํด๋น ๋ด์ฉ์ ๋ํ ์์ธํ ์ด์ผ๊ธฐ๋ ์ถํ์ YARN ํํธ์์ ์์ธํ ํฌ์คํ ํ๊ฒ ์ต๋๋ค.
โ๏ธ ๊ฒฐ๋ก
์ด๋ฒ ํฌ์คํ ์์๋ Hadoop ์ด ์ ๋ฑ์ฅํ๊ฒ ๋์๋์ง, ๊ทธ ์ด์ ์์คํ ์ ์ด๋ป๊ฒ ๋ฐ์ ํด ์๊ณ ์ด๋ค ๋ฌธ์ ๊ฐ ์์๋์ง๋ฅผ ์์๋ณด์์ต๋๋ค.
๋จ์ํ Hadoop ์ ๋ํด ๋ฐ๋ก ๊ณต๋ถํ๋ ๊ฒ๋ณด๋ค, ๋ถ์ฐ ์์คํ ๊ทธ ์์ฒด์ ๋ํ์ฌ ๋จผ์ ๊ณต๋ถํ๊ณ Hadoop ์ ๊ณต๋ถํ๋ค๋ฉด, Hadoop ๋ฑ์ฅ์ ํ์คํ ๋ฆฌ๋ฅผ ์ ์ ์๊ณ , ๊ทธ๋ก ์ธํด ๋ ์ ์ดํดํ ์ ์๊ฒ ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๊ณต๋ถํ ๋ด์ฉ์ ํ ๋๋ก ๊ธ์ ํฌ์คํ ํ์๊ธฐ ๋๋ฌธ์, ๊ณ์ ๊น๊ฒ ๋ ๊ณต๋ถํ๊ณ ๊ธ์ ๋จ๊ธธ ๊ฒ์ด๋ฉฐ, ํด๋น ๊ธ๋ ๊ณ์ ๋ค์ ์ฝ๊ณ ๋ณต์ต ํ ์์ ์ ๋๋ค.
๋ค์ ํฌ์คํ ์์๋ถํฐ๋ HDFS, Yarn, MapReduce ๋ฑ ๋ณธ๊ฒฉ์ ์ผ๋ก Hadoop ์ ๋ํด ์ ๋ฆฌํ ์์ ์ ๋๋ค.
๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ค์ ํฌ์คํ ์์ ๋ต๊ฒ ์ต๋๋ค. :D
๐ ๊ณต๋ถ ์ฐธ๊ณ ์๋ฃ
๐ 2. ๋ถ์ฐ์ฒ๋ฆฌ์์ ํด๊ฒฐํด์ผ ํ challenges
๐ 4. CAP ์ด๋ก ์ ๋ํ ์นด์ฐ๋๋ผ์ ๋ชฝ๊ณ DB
๐ 7. Hadoop์ด๋ ๋ฌด์์ ๋๊น?
๐ 8. ํ๋ก 3.0์์ ๋ฌด์์ด ๋ฌ๋ผ์ก์๊น? ( Erasure Coding ์ ์ดํดํ๊ธฐ ์ข์ ๊ธ )