์ฐ๋ฆฌ๋ ๊ธฐ์ฑ ์คํ ์์ค ๋๊ตฌ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ฐ๊ฒฐํ๊ณ , โ์ฌ๋ฌ ๊ธ์โ๋ฅผ ๊น์ด ํ๊ณ ๋ค ํ์ ์์ด stackoverflow์ ์กฐ์ธ์ ๋ฐ๋ผ โ์์์ ๋ ์ํโ๋ก ์ค์ ํ๊ณ ์ถ์ํ ์ ์๋ ๋๋ผ์ด ์๋์ ์ด๊ณ ์์ต๋๋ค. ์์ ์ ์ธ ์ด์์ ๋ค์ด๊ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ/ํ์ฅ์ด ํ์ํ๊ฑฐ๋ ๋๊ตฐ๊ฐ ์ค์๋ก ๋ช ๋์ ์ปดํจํฐ๋ฅผ ์ฌ๋ถํ ํ ๊ฒฝ์ฐ, ํ์ค์์ ์ผ์ข ์ ๊ฐ๋ฐ์ ์ธ ๋์ ๊ฟ์ด ์์๋์๊ณ ๋ชจ๋ ๊ฒ์ด ๊ฐ์๊ธฐ ์ธ์ํ ์ ์์ ์ ๋๋ก ๋ ๋ณต์กํด์ก๊ณ ๋๋๋ฆด ์ ์์ผ๋ฉฐ ๋ฏธ๋๊ฐ ๋ง์ฐํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋ฉ๋๋ค. ํ๋ก๊ทธ๋๋ฐํ๋ ๋์ ๊ฟ๋ฒ์ ํค์ฐ๊ณ ์น์ฆ๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ ์์ ํฉ๋๋ค.
๋จธ๋ฆฌ์ ๋ฒ๊ทธ๊ฐ ํฉ๋ฟ๋ ค์ ธ ์ด๋ฏธ ํ์์ธ ๊ฒฝํ ๋ง์ ๋๋ฃ๋ค์ด ๋ด์ฅ๋ ์ง์ ๊ธฐ๋ฅ์ ๊ฐ์ถ "์ ํ ์ธ์ด"๋ก ๋ ์์ญ ๊ฐ์ ์๋ฒ์ "ํ๋ธ"์ "์ปจํ
์ด๋" ํฉ์ ์์ฒญ๋๊ฒ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ๋ ๊ฒ์ ๊ณ ๋ คํ๋ ๊ฒ์ ์๋ฌด๊ฒ๋ ์๋๋๋ค. ๋น๋๊ธฐ ๋น์ฐจ๋จ I/O, ๊ฒธ์ํ๊ฒ ์์ผ์ธ์. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ์กฐ์ฉํ ๊ณ์ํด์ "man ps"๋ฅผ ๋ค์ ์ฝ๊ณ , ๋๋ฌผ์ด ๋์ฌ ๋๊น์ง "nginx" ์์ค ์ฝ๋๋ฅผ ์กฐ์ฌํ๊ณ , ์ฐ๊ณ , ์ฐ๊ณ , ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํฉ๋๋ค. ๋๋ฃ๋ค์ ์ด๋ ๋ "์ด ๋ชจ๋ ๊ฒ"์ด ์ํด ์ ๋ ๋ฐค์ ๊ฒฐ์ ๋ ๋ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ผ์ด ์ฌ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋์ค์ ๋ณธ์ง, ๊ธฐ์ต๋ TCP/IP ์ํ ํ
์ด๋ธ ๋ฐ ๊ธฐ๋ณธ ์ ๋ ฌ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊น์ ์ดํด๋ฅผ ํตํด์๋ง ๋์์ด ๋ ๊ฒ์
๋๋ค. ์ฐจ์๋ฒจ์ด ์ธ๋ฆฌ๋ฉด ์์คํ
์ ๋ค์ ์๋ช
์ ๋ถ์ด๋ฃ์ต๋๋ค.
์ ๋ค, ์กฐ๊ธ ์ ์ ์ด ํผ๋ฏธํด์ง๊ธด ํ์ง๋ง, ๊ธฐ๋๊ฐ์ด ์ ์ ๋ฌ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
์ค๋ ์ ๋ ์์ ํ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋ถ์์ ๋ํ ํ์ฌ์ ๋๋ถ๋ถ์ ๋ถ์ ์์
์ ํด๊ฒฐํ๋ ํธ๋ฆฌํ๊ณ ์ ๋ ดํ DataLake์ฉ ์คํ์ ๋ฐฐํฌํ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค.
์ผ๋ง ์ ์ฐ๋ฆฌ๋ ๊ธฐ์ ์ด ์ ์ ๋ ์ ํ ๋ถ์๊ณผ ๊ธฐ์ ๋ถ์(๊ธฐ๊ณ ํ์ต์ ํํ๋ก ๊ธ์์ฒจํ๋ ๋งํ ๊ฒ๋ ์๊ณ )์ ์ฑ๊ณผ๋ฅผ ํ์๋ก ํ๊ณ ์ถ์ธ์ ์ํ์ ์ดํดํด์ผ ํ๋ค๋ ์ ์ ์ดํดํ๊ฒ ๋์์ต๋๋ค. ์์งํ๊ณ ๋ถ์ํด์ผ ํฉ๋๋ค. ์ ์ ๋ ๋ง์ ์ธก์ ํญ๋ชฉ์ด ์ถ๊ฐ๋์์ต๋๋ค.
Bitrix24์ ๊ธฐ๋ณธ ๊ธฐ์ ๋ถ์
๋ช ๋ ์ Bitrix24 ์๋น์ค ์ถ์์ ๋์์ ์ธํ๋ผ์ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ํ์ธํ๊ณ ๋ค์ ๋จ๊ณ๋ฅผ ๊ณํํ๋ ๋ฐ ๋์์ด ๋๋ ๊ฐ๋จํ๊ณ ์์ ์ ์ธ ๋ถ์ ํ๋ซํผ์ ๋ง๋๋ ๋ฐ ์๊ฐ๊ณผ ์์์ ์ ๊ทน์ ์ผ๋ก ํฌ์ํ์ต๋๋ค. ๋ฌผ๋ก , ๊ฐ๋ฅํ ํ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๊ธฐ์ฑ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชจ๋ํฐ๋ง์๋ nagios๊ฐ, ๋ถ์ ๋ฐ ์๊ฐํ์๋ munin์ด ์ ํ๋์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ nagios์ ์์ฒ ๊ฐ์ ์ํ๋ฅผ, munin์ ์๋ฐฑ ๊ฐ์ ์ฐจํธ๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ ๋๋ฃ๋ค์ ์ด๋ฅผ ๋งค์ผ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ธก์ ๊ธฐ์ค์ด ๋ช ํํ๊ณ ๊ทธ๋ํ๋ ๋ช ํํ๋ฉฐ ์์คํ ์ ์๋ ๋์ ์์ ์ ์ผ๋ก ์๋ํด ์์ผ๋ฉฐ ์๋ก์ด ํ ์คํธ์ ๊ทธ๋ํ๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค. ์๋ก์ด ์๋น์ค๋ฅผ ์ด์ํ ๋ ์ฌ๋ฌ ํ ์คํธ์ ๊ทธ๋ํ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ํ์ด์ ๋น์ด์.
ํ์ค์ ์๊ฐ๋ฝ - ๊ณ ๊ธ ๊ธฐ์ ๋ถ์
"๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ" ๋ฌธ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ๊ณ ์ ํ๋ ์ด๋ง์ผ๋ก ์ธํด ์ฐ๋ฆฌ๋ pinba ๋ฐ xhprof๋ผ๋ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทน์ ์ธ ์คํ์ ํ๊ฒ ๋์์ต๋๋ค.
Pinba๋ PHP ์น ํ์ด์ง ์ผ๋ถ์ ์๋ ์๋์ ๋ํ ํต๊ณ๋ฅผ UDP ํจํท์ผ๋ก ์ฐ๋ฆฌ์๊ฒ ๋ณด๋๊ณ , ์ฐ๋ฆฌ๋ MySQL ์ ์ฅ์์์ ์จ๋ผ์ธ์ผ๋ก ๋ณผ ์ ์์์ต๋๋ค(Pinba๋ ๋น ๋ฅธ ์ด๋ฒคํธ ๋ถ์์ ์ํด ์์ฒด MySQL ์์ง๊ณผ ํจ๊ป ์ ๊ณต๋จ). ์งง์ ๋ฌธ์ ๋ชฉ๋ก์ ๋ณด๊ณ ์ด์ ๋์ํ ์ ์์์ต๋๋ค. ๊ทธ๋ค์. ๊ทธ๋ฆฌ๊ณ xhprof๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๊ฐ์ฅ ๋๋ฆฐ PHP ํ์ด์ง์ ์คํ ๊ทธ๋ํ๋ฅผ ์์งํ๊ณ ์ด๋ก ์ด์ด์ง ์ ์๋ ์์ธ(์นจ์ฐฉํ๊ฒ ์ฐจ๋ฅผ ๋ฐ๋ฅด๊ฑฐ๋ ๋ ๊ฐํ ๊ฒ)์ ๋ถ์ํ ์ ์์์ต๋๋ค.
์ผ๋ง ์ ์ด ํดํท์๋ ์ ์ค์ ์ธ Lucene ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Elastic/Kibana์์ ์๋ฒฝํ๊ฒ ๊ตฌํ๋ ์ญ๋ฐฉํฅ ์ธ๋ฑ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋นํ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋ ๋ค๋ฅธ ์์ง์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ก๊ทธ์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์๋ฅผ ์ญ Lucene ์ธ๋ฑ์ค์ ๋ฉํฐ ์ค๋ ๋๋ก ๊ธฐ๋กํ๊ณ ํจ์ฏ ๋ถํ ์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๋ ๊ฐ๋จํ ์์ด๋์ด๊ฐ ์ ๋ง ์ ์ฉํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
"๋ฒํท"๊ณผ ๊ฐ์ ํ์ ์์ค ๊ฐ๋ ๊ณผ ์์ง ์์ ํ ์ํ์ง์ง ์์ ๊ด๊ณํ ๋์ํ์ ์ฌ์ฐฝ์กฐ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ Kibana์์ ์๊ฐํ๊ฐ ๋ค์ ๊ธฐ์ ์ ์ผ๋ก ๋ํ๋จ์๋ ๋ถ๊ตฌํ๊ณ ์ด ๋๊ตฌ๋ ๋ค์ ์์ ์์ ์ฐ๋ฆฌ์๊ฒ ํฐ ๋์์ด ๋๊ธฐ ์์ํ์ต๋๋ค.
- ์ง๋ ํ ์๊ฐ ๋์ Bitrix24 ํด๋ผ์ด์ธํธ๊ฐ p1 ํฌํธ์์ ๋ช ๊ฐ์ PHP ์ค๋ฅ๋ฅผ ๊ฒช์์ผ๋ฉฐ ์ด๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๊น? ์ดํดํ๊ณ ์ฉ์ํ๊ณ ์ ์ํ๊ฒ ์์ ํ์ญ์์ค.
- ์ง๋ 24์๊ฐ ๋์ ๋ ์ผ ํฌํธ์์ ์ผ๋ง๋ ๋ง์ ์์ ํตํ๊ฐ ์ด๋ฃจ์ด์ก์ต๋๊น? ํ์ง์ ์ด๋ ํ์ผ๋ฉฐ ์ฑ๋/๋คํธ์ํฌ์ ์ด๋ ค์์ ์์์ต๋๊น?
- ์ต์ ์๋น์ค ์ ๋ฐ์ดํธ์ ์์ค์์ ์ปดํ์ผ๋์ด ํด๋ผ์ด์ธํธ์ ์ถ์๋ ์์คํ ๊ธฐ๋ฅ(PHP์ฉ C ํ์ฅ)์ด ์ผ๋ง๋ ์ ์๋ํฉ๋๊น? ์ธ๊ทธํดํธ๊ฐ ์๋์?
- ๊ณ ๊ฐ ๋ฐ์ดํฐ๊ฐ PHP ๋ฉ๋ชจ๋ฆฌ์ ๋ง๋์? ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ์ฌ "๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ" ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๊น? ์ฐพ์์ ๋ฌด๋ ฅํํ์ธ์.
์ฌ๊ธฐ์ ๊ตฌ์ฒด์ ์ธ ์๊ฐ ์์ต๋๋ค. ์ฒ ์ ํ ๋ค๋จ๊ณ ํ ์คํธ์๋ ๋ถ๊ตฌํ๊ณ ๋งค์ฐ ๋นํ์ค์ ์ธ ์ผ์ด์ค์ ์์๋ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ์๋ ํด๋ผ์ด์ธํธ๋ ์ง์ฆ๋๊ณ ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ์์ ํ์ผ๋ฉฐ ์ฌ์ด๋ ์ด ์ธ๋ฆฌ๊ณ ์ด๋ฅผ ์ ์ํ๊ฒ ์์ ํ๋ ํ๋ก์ธ์ค๊ฐ ์์๋์์ต๋๋ค.
๋ํ Kibana๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ์ด๋ฒคํธ์ ๋ํ ์๋ฆผ์ ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ ์งง์ ์๊ฐ ๋ด์ ๊ธฐ์ ์ง์ ๋ฐ ๊ฐ๋ฐ์์ QA์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ๋ถ์์ ์์ญ ๋ช
์ ์ง์์ด ํ์ฌ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.
ํ์ฌ ๋ด ๋ชจ๋ ๋ถ์์ ํ๋์ ์ถ์ ํ๊ณ ์ธก์ ํ๋ ๊ฒ์ด ํธ๋ฆฌํด์ก์ต๋๋ค. ์๋ฒ์ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก ๋ถ์ํ๋ ๋์ , ํ ๋ฒ๋ง ๊ตฌ๋ฌธ ๋ถ์ ๋ก๊ทธ๋ฅผ ์ค์ ํ๊ณ ํ๋ ฅ์ ํด๋ฌ์คํฐ๋ก ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. ์ง๋ ๋ฌ์ 3D ํ๋ฆฐํฐ๋ก ์ธ์ํ ๋จธ๋ฆฌ ๋ ๊ฐ ๋ฌ๋ฆฐ ์๋ผ ๊ณ ์์ด์ ํ๋งค๋์ ๋์๋ณด๋์ ํ์ํฉ๋๋ค.
๊ธฐ๋ณธ ๋น์ฆ๋์ค ๋ถ์
๊ธฐ์ ์ ๋น์ฆ๋์ค ๋ถ์์ Excel์ ๊ทน๋๋ก ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์์ ์์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ๋๊ตฌ๋ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ทธ๊ฒ์ด ๋๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ Google Analytics๋ ๋ํ ๋ถ์ ์ฐ๋ฃ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ข์ ์ผ์ ๋นจ๋ฆฌ ์ต์ํด์ง๊ธฐ ์์ํฉ๋๋ค.
์กฐํ๋กญ๊ฒ ๋ฐ์ ํ๋ ์ฐ๋ฆฌ ํ์ฌ์์๋ ๋ ํฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง์ค์ ์ผ๋ก ์์ ํ๋ "์์ธ์"๊ฐ ์ฌ๊ธฐ ์ ๊ธฐ ๋ํ๋๊ธฐ ์์ํ์ต๋๋ค. ๋ณด๋ค ์ฌ์ธต์ ์ด๊ณ ๋ค๊ฐ์ ์ธ ๋ณด๊ณ ์์ ๋ํ ํ์์ฑ์ด ์ ๊ธฐ์ ์ผ๋ก ๋ํ๋๊ธฐ ์์ํ์ผ๋ฉฐ, ์ฌ๋ฌ ๋ถ์์ ์ฌ๋๋ค์ ๋ ธ๋ ฅ์ ํตํด ์ผ๋ง ์ ClickHouse์ PowerBI์ ์กฐํฉ์ด๋ผ๋ ๊ฐ๋จํ๊ณ ์ค์ฉ์ ์ธ ์๋ฃจ์ ์ด ๊ตฌ์ฑ๋์์ต๋๋ค.
์ค๋ซ๋์ ์ด ์ ์ฐํ ์๋ฃจ์ ์ ๋ง์ ๋์์ด ๋์์ง๋ง ClickHouse๋ ๊ณ ๋ฌด๊ฐ ์๋๋ฉฐ ๊ทธ๋ ๊ฒ ์กฐ๋กฑํ ์ ์๋ค๋ ์ฌ์ค์ด ์ ์ฐจ ์ดํด๋๊ธฐ ์์ํ์ต๋๋ค.
์ฌ๊ธฐ์์๋ Druid, Vertica, Amazon RedShift(ํฌ์คํธ๊ทธ๋ ๊ธฐ๋ฐ)์ ๊ฐ์ ClickHouse๊ฐ ์๋นํ ํธ๋ฆฌํ ๋ถ์(ํฉ๊ณ, ์ง๊ณ, ์ด๋ณ ์ต์-์ต๋ ๋ฐ ๋ช ๊ฐ์ง ๊ฐ๋ฅํ ์กฐ์ธ)์ ์ต์ ํ๋ ๋ถ์ ์์ง์ด๋ผ๋ ์ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ), ์๋ํ๋ฉด MySQL ๋ฐ ์ฐ๋ฆฌ์๊ฒ ์๋ ค์ง ๋ค๋ฅธ (ํ ์ค์ฌ) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌ๋ฆฌ ๊ด๊ณํ ํ ์ด๋ธ์ ์ด์ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
๋ณธ์ง์ ์ผ๋ก ClickHouse๋ ๋งค์ฐ ํธ๋ฆฌํ ์ง์ ๋ณ ์ฝ์ ์ด ์๋(์๋ํ ๋๋ก ๋ชจ๋ ๊ฒ์ด ์ ์์) ๋ ๋์ "๋ฐ์ดํฐ๋ฒ ์ด์ค"์ด์ง๋ง ์ ์พํ ๋ถ์๊ณผ ๋ฐ์ดํฐ ์์ ์ ์ํ ์ผ๋ จ์ ํฅ๋ฏธ๋กญ๊ณ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ์, ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ํ์ง๋ง ํ๋ฏธ๊ฒฝ์ผ๋ก ๋ชป์ ๋๋๋ฆฌ๋ ๊ฒ์ด ์์ ํ ์ ํํ์ง ์๋ค๋ ๊ฒ์ ์ดํดํ๊ณ ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค.
Python ๋ฐ ๋ถ์๊ฐ์ ๋ํ ์์
์ฐ๋ฆฌ ํ์ฌ์๋ PHP, JavaScript, C#, C/C++, Java, Go, Rust, Python, Bash ๋ฑ์ ์ฌ์ฉํ์ฌ 10~20๋
๋์ ๊ฑฐ์ ๋งค์ผ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ์๊ฐ ๋ง์ด ์์ต๋๋ค. ๋ํ ํต๊ณ ๋ฒ์น์ ๋ง์ง ์๋ ์ ๋์ ์ผ๋ก ๋๋ผ์ด ์ฌ๋์ ๋ ๋ฒ ์ด์ ๊ฒฝํํ ์๋ จ๋ ์์คํ
๊ด๋ฆฌ์๋ ๋ง์ด ์์ต๋๋ค(์๋ฅผ ๋ค์ด, raid-10์ ๋์คํฌ ๋๋ถ๋ถ์ด ๊ฐํ ๋๋ขฐ๋ก ์ธํด ํ๊ดด๋๋ ๊ฒฝ์ฐ). ์ด๋ฌํ ์ํฉ์์ ์ค๋ซ๋์ "ํ์ด์ฌ ๋ถ์๊ฐ"๊ฐ ๋ฌด์์ธ์ง ๋ช
ํํ์ง ์์์ต๋๋ค. Python์ PHP์ ๊ฐ์ต๋๋ค. ์ด๋ฆ๋ง ์กฐ๊ธ ๋ ๊ธธ๊ณ ์ธํฐํ๋ฆฌํฐ์ ์์ค ์ฝ๋์ ๋ง์์ ๋ฐ๊พธ๋ ๋ฌผ์ง์ ํ์ ์ด ์กฐ๊ธ ์ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ ๋ ๋ง์ ๋ถ์ ๋ณด๊ณ ์๊ฐ ์์ฑ๋จ์ ๋ฐ๋ผ ์๋ จ๋ ๊ฐ๋ฐ์๋ numpy, pandas, matplotlib, seaborn๊ณผ ๊ฐ์ ๋๊ตฌ์ ๋ํ ์ข์ ์ ๋ฌธํ์ ์ค์์ฑ์ ์ ์ ๋ ์ดํดํ๊ธฐ ์์ํ์ต๋๋ค.
๊ฒฐ์ ์ ์ธ ์ญํ ์ "๋ก์ง์คํฑ ํ๊ท"๋ผ๋ ๋จ์ด์ ์, ์, pyspark๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ๋ํ ํจ๊ณผ์ ์ธ ๋ณด๊ณ ์์ฐ์ ์กฐํฉ์ผ๋ก ์ธํด ์ง์์ด ๊ฐ์๊ธฐ ๊ธฐ์ ํ ๊ฒ์ด์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๊ด๊ณํ ๋์ํ์ด ์๋ฒฝํ๊ฒ ๋ค์ด๋ง๋ ๊ธฐ๋ฅ์ ํจ๋ฌ๋ค์์ธ Apache Spark์ ๊ทธ ๊ธฐ๋ฅ์ MySQL์ ์ต์ํ ๊ฐ๋ฐ์๋ค์๊ฒ ๊น์ ์ธ์์ ์ฃผ์๊ธฐ ๋๋ฌธ์ ์๋ จ๋ ๋ถ์๊ฐ์ ํจ๊ป ์์๋ฅผ ๊ฐํํด์ผ ํ ํ์์ฑ์ด ๋ ๋ก ๋ถ๋ช ํด์ก์ต๋๋ค.
Apache Spark/Hadoop์ ์ถ๊ฐ ์๋์ ์คํฌ๋ฆฝํธ์ ๋ฐ๋ผ ์งํ๋์ง ์์ ์ฌํญ
๊ทธ๋ฌ๋ ์คํํฌ์ ์์คํ ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์์ ๋ ์ ์ป๋ ๊ฒ์ด ํ์ํ๋ค๋ ๊ฒ์ด ๊ณง ๋ถ๋ช ํด์ก์ต๋๋ค. Hadoop/MapReduce/Lucene ์คํ์ด ์๋นํ ์๋ จ๋ ํ๋ก๊ทธ๋๋จธ์ ์ํด ๋ง๋ค์ด์ง ๊ฒฝ์ฐ(Java์ ์์ค ์ฝ๋๋ Lucene์ ๋ํ Doug Cutting์ ์์ด๋์ด๋ฅผ ์์ธํ ์ดํด๋ณด๋ฉด ๋ถ๋ช ํ ์ ์ ์์) Spark๋ ๊ฐ์๊ธฐ ์ด๊ตญ์ ์ธ ์ธ์ด์ธ Scala๋ก ์์ฑ๋ฉ๋๋ค. ์ค์ฉ์ฑ ์ธก๋ฉด์์ ๋งค์ฐ ๋ ผ๋์ ์ฌ์ง๊ฐ ์์ผ๋ฉฐ ํ์ฌ ๊ฐ๋ฐ ์ค์ด ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ์ ์์ ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น(ํ ๋ฒ์ ๋ง์ ํค๊ฐ ๋์ฐฉํจ)์ ๋ํ ๋น๋ ผ๋ฆฌ์ ์ด๊ณ ํฌ๋ช ํ์ง ์์ ์์ ์ผ๋ก ์ธํด Spark ํด๋ฌ์คํฐ์์ ๊ณ์ฐ์ด ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ํ์ฌ ์ฃผ๋ณ์ ์ฑ์ฅํ ์ฌ์ง๊ฐ ์๋ ํ๊ด์ด ์๊ฒผ์ต๋๋ค. ๊ฒ๋ค๊ฐ, ์๋ง์ ์ด์ํ ์ด๋ฆฐ ํฌํธ, ๊ฐ์ฅ ์ดํดํ ์ ์๋ ๊ณณ์์ ์ฆ๊ฐํ๋ ์์ ํ์ผ, ์์ฒญ๋ jar ์ข ์์ฑ์ผ๋ก ์ธํด ์ํฉ์ด ๋์ฑ ์ ํ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์์คํ ๊ด๋ฆฌ์๋ ์ด๋ฆฐ ์์ ๋ถํฐ ์ ์๋ ค์ง ํ ๊ฐ์ง ๊ฐ์ ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ๋น๋๋ก ์์ ์ป์ด์ผ ํ์ต๋๋ค.)
๊ทธ ๊ฒฐ๊ณผ, ์ฐ๋ฆฌ๋ Apache Spark(Spark Streaming, Spark SQL ํฌํจ) ๋ฐ Hadoop ์์ฝ์์คํ
(๋ฑ)์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฌ๋ฌ ๋ด๋ถ ๋ถ์ ํ๋ก์ ํธ๋ฅผ "์์กด"ํ์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฐ๋ฆฌ๋ "๊ทธ๊ฒ"์ ์์ฃผ ์ ์ค๋นํ๊ณ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๊ณ ๋ฐ์ดํฐ ํน์ฑ์ ๋ณํ์ ๊ท ์ผํ RDD ํด์ฑ์ ๋ถ๊ท ํ, ์ด๋ฏธ ์ค๋น๋ ๊ฒ์ ๊ฐ์ ธ์ค๋ ค๋ ์๊ตฌ๋ก ์ธํด "๊ทธ๊ฒ"์ด ๊ฐ์๊ธฐ ์ถฉ๋ํ๋ ๊ฒ์ ์ค์ง์ ์ผ๋ก ๋ฉ์ท๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ , ํด๋ผ์ฐ๋ ์ด๋๊ฐ์์ ์
๋ฐ์ดํธ๋๊ณ ๊ด๋ฆฌ๋๋ ๊ฒ์ด ์ ์ ๋ ๊ฐ๋ ฅํด์ก์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ๋ Amazon Web Services์ ๊ธฐ์ฑ ํด๋ผ์ฐ๋ ์ด์
๋ธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์ต๋๋ค.
๋ถ์์ ์ํ ๊ณ ๋ฌด ํ์ผ ์คํ ๋ฆฌ์ง๊ฐ ์๊ธํ ํ์ํฉ๋๋ค.
์ ์ฒด ์ฌ๋ฌ ๋ถ์์ ํ์์ ์ ํ๋ฉด์ Hadoop/Spark๋ฅผ '์๋ฆฌ'ํ ๊ฒฝํ์ ํ๋์ง ์์์ต๋๋ค. ํ๋์จ์ด ์ค๋ฅ์ ๊ฐํ๊ณ ๋ค์ํ ์์คํ ์ ๋ค์ํ ํ์์ผ๋ก ํ์ผ์ ์ ์ฅํ๊ณ ์ด ๋ฐ์ดํฐ์์ ๋ณด๊ณ ์์ฉ ํจ์จ์ ์ด๊ณ ์๊ฐ ํจ์จ์ ์ธ ์ํ์ ๋ง๋ค ์ ์๋ ์ ๋ ดํ๊ณ ์์ ์ ์ธ ๋จ์ผ ํ์ผ ์คํ ๋ฆฌ์ง๋ฅผ ์์ฑํด์ผ ํ ํ์์ฑ์ด ์ ์ ๋ ์ปค์ก์ต๋๋ค. ๋ถ๋ช ํ.
๋ํ ์ ๋ ์ด ํ๋ซํผ์ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ๊ฐ 20ํ์ด์ง ๋ถ๋์ Java ์ถ์ ์ ์ฝ๊ณ Spark History Server์ ๋ฐฑ๋ผ์ดํธ ๋๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ํฌ๋ก๋ฏธํฐ ๊ธธ์ด์ ์์ธํ ๋ก๊ทธ๋ฅผ ๋ถ์ํ๋ ์ํด์ ์ ๋ชฝ์ผ๋ก ๋ฐ๋์ง ์๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค. ์ ์ ํ๋์ง ์์ ์์ค ๋ฐ์ดํฐ ๋ถํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ธํด ์ถ์ ๋ฐ์ดํฐ ์์ ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ธํด ๊ฐ๋ฐ์์ ํ์ค MapReduce ์์ฒญ ์คํ์ด ์ค์ง๋ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก ์ ๊ธฐ์ ์ธ ๋ค์ด๋น์ด ํ์ํ์ง ์์ ๊ฐ๋จํ๊ณ ํฌ๋ช ํ ๋๊ตฌ๋ฅผ ๊ฐ๊ณ ์ถ์์ต๋๋ค.
Amazon S3๋ DataLake์ ํ๋ณด์ ๋๊น?
Hadoop/MapReduce์ ๋ํ ๊ฒฝํ์ ํตํด ์ฐ๋ฆฌ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ๋ขฐํ ์ ์๋ ํ์ผ ์์คํ ๊ณผ ๊ทธ ์์ ํ์ฅ ๊ฐ๋ฅํ ์์ ์๊ฐ ํ์ํ๋ฉฐ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ์ง ์๋๋ก ๋ฐ์ดํฐ์ "๋ ๊ฐ๊น์ด ๋ค๊ฐ๊ฐ"์ผ ํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค. ์์ ์๋ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ด์ผ ํ์ง๋ง, ๋ถํ์ํ ์ ๋ณด๋ฅผ ์ฝ์ง ์๋ ๊ฒ์ด ๋ฐ๋์งํ๊ณ ์์ ์์๊ฒ ํธ๋ฆฌํ ํ์์ผ๋ก ๋ฏธ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค์ ํ ๋ฒ ๊ธฐ๋ณธ ์์ด๋์ด์ ๋๋ค. ๋จ์ผ ํด๋ฌ์คํฐ ๋ถ์ ์์ง์ ๋น ๋ฐ์ดํฐ๋ฅผ "์์๋ฃ๊ณ " ์ถ์ง๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์กฐ๋ง๊ฐ ์ง์ํ๊ฒ ๋๊ณ ๋ณด๊ธฐ ํํ๊ฒ ํ์ํด์ผ ํ ๊ฒ์ ๋๋ค. ๋๋ ํ์ผ์ ์ดํดํ ์ ์๋ ํ์์ผ๋ก ์ ์ฅํ๊ณ ๋ค์ํ์ง๋ง ์ดํดํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจ๊ณผ์ ์ธ ๋ถ์ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ํ์์ ํ์ผ์ด ์ ์ ๋ ๋ง์์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง์ด ์๋ ์์ค ๋ฐ์ดํฐ๋ฅผ ์ค๋ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋ณดํธ์ ์ธ DataLake๊ฐ ํ์ํ๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค...
Hadoop์์ ์ง์ ์ค๋นํ ํ์ ์์ด ์น์ํ๊ณ ์ ์๋ ค์ง ํ์ฅ ๊ฐ๋ฅํ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง Amazon S3์ ํ์ผ์ ์ ์ฅํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
๊ฐ์ธ ๋ฐ์ดํฐ๊ฐ '๋ฎ๋ค'๋ ๊ฒ์ ๋ถ๋ช ํ์ง๋ง, ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ 'ํจ๊ณผ์ ์ผ๋ก ๊ตฌ๋'ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
Amazon Web Services์ ํด๋ฌ์คํฐ-๋น ๋ฐ์ดํฐ-๋ถ์ ์ํ๊ณ - ๋งค์ฐ ๊ฐ๋จํ ๋ง๋ก
AWS์์์ ๊ฒฝํ์ผ๋ก ํ๋จํ๋ฉด Apache Hadoop/MapReduce๋ DataPipeline ์๋น์ค์ ๊ฐ์ ๋ค์ํ ์์ค์์ ์ค๋ซ๋์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋์ด ์์ต๋๋ค(์ ๋ ๋๋ฃ๋ค์ด ๋ถ๋ฝ์ต๋๋ค. ๊ทธ๋ค์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๋นํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค). ์ฌ๊ธฐ์๋ DynamoDB ํ
์ด๋ธ์ ๋ค์ํ ์๋น์ค์์ ๋ฐฑ์
์ ์ค์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋ช ๋
๋์ ์๊ณ์ฒ๋ผ ๋ด์ฅ๋ Hadoop/MapReduce ํด๋ฌ์คํฐ์์ ์ ๊ธฐ์ ์ผ๋ก ์คํ๋์ด ์์ต๋๋ค. โ์ค์ ํ๊ณ ์์ด๋ฒ๋ฆฌ์ธ์โ:
๋ํ ๋ถ์๊ฐ๋ฅผ ์ํด ํด๋ผ์ฐ๋์ Jupiter ๋
ธํธ๋ถ์ ์ค์ ํ๊ณ AWS SageMaker ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ AI ๋ชจ๋ธ์ ํ๋ จํ๊ณ ์ ํฌ์ ๋ฐฐํฌํจ์ผ๋ก์จ ๋ฐ์ดํฐ ์
๋ง์ฃผ์์ ํจ๊ณผ์ ์ผ๋ก ์ฐธ์ฌํ ์๋ ์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ ๋ณด์ด๋ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ์ต๋๋ค. ํด๋ผ์ฐ๋์์ ์์ ์ด๋ ๋ถ์๊ฐ๋ฅผ ์ํด ๋
ธํธ๋ถ์ ์ ํํ์ฌ Hadoop/Spark ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๊ณ ๊ณ์ฐ์ ์ํํ ๋ค์ ๋ชจ๋ ๊ฒ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๊ฐ๋ณ ๋ถ์ ํ๋ก์ ํธ์ ๋งค์ฐ ํธ๋ฆฌํ๋ฉฐ ์ผ๋ถ์ ๊ฒฝ์ฐ ๋๊ท๋ชจ ๊ณ์ฐ ๋ฐ ๋ถ์์ EMR ์๋น์ค๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ์ต๋๋ค. DataLake์ฉ ์์คํ
์๋ฃจ์
์ ์ด๋ป์ต๋๊น? ์๋ํ ๊น์? ์ง๊ธ ์ด ์๊ฐ ์ฐ๋ฆฌ๋ ํฌ๋ง๊ณผ ์ ๋ง์ ๊ฒฝ๊ณ์ ์์ ํ์์ ๊ณ์ํ์ต๋๋ค.
AWS Glue - ์คํ ๋ก์ด๋๋ก ๊น๋ํ๊ฒ ํจํค์ง๋ Apache Spark
AWS์๋ "Hive/Pig/Spark" ์คํ์ ์์ฒด ๋ฒ์ ์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. Hive์ ์ญํ , ์ฆ DataLake์ ํ์ผ ๋ฐ ํด๋น ์ ํ ์นดํ๋ก๊ทธ๋ Apache Hive ํ์๊ณผ์ ํธํ์ฑ์ ์จ๊ธฐ์ง ์๋ "๋ฐ์ดํฐ ์นดํ๋ก๊ทธ" ์๋น์ค์ ์ํด ์ํ๋ฉ๋๋ค. ํ์ผ์ ์์น์ ํ์์ ๋ํ ์ ๋ณด๋ฅผ ์ด ์๋น์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ s3๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์์ ์ ์์ง๋ง ์ด๋ ์ด ๊ฒ์๋ฌผ์ ์ฃผ์ ๊ฐ ์๋๋๋ค. DataLake ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ผ์ด ๋ฑ๋ก๋์์ต๋๋ค. ํ๋ฅญํฉ๋๋ค. ํ์ผ์ด ์
๋ฐ์ดํธ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋๋ ์ผ์ ์ ๋ฐ๋ผ ํฌ๋กค๋ฌ๋ฅผ ์คํํ๋ฉด ๋ ์ดํฌ์์ ํ์ผ์ ๋ํ ์ ๋ณด๊ฐ ์
๋ฐ์ดํธ๋๊ณ ์ ์ฅ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํธ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ด๋๊ฐ์ ์
๋ก๋ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒฝ์ฐ์๋ s3์๋ ์
๋ก๋ํฉ๋๋ค. ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ์ด๋์์๋ ์ํํ ์ ์์ง๋ง AWS Glue API๋ฅผ ํตํด ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ Apache Spark ํด๋ฌ์คํฐ์์ ์ฒ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ค์ ๋ก Hadoop์ ๋ด๋ถ๋ฅผ ํํค์น๊ณ docker-moker ์ปจํ
์ด๋๋ฅผ ๋๋๊ทธํ์ฌ ์ข
์์ฑ ์ถฉ๋์ ์ ๊ฑฐํ์ง ์๊ณ ๋ pyspark ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋๋๊ณ ์น์ํ Python ์ฝ๋๋ฅผ ๊ฐ์ ธ์ ๋ชจ๋ํฐ๋ง์ ํตํด ์ผ์ ์ฉ๋์ ํด๋ฌ์คํฐ์ N ๋
ธ๋์์ ์คํ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. .
๋ค์ ํ ๋ฒ ๊ฐ๋จํ ์์ด๋์ด์ ๋๋ค. Apache Spark๋ฅผ ๊ตฌ์ฑํ ํ์๊ฐ ์์ต๋๋ค. pyspark์ฉ Python ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐ์คํฌํฑ์์ ๋ก์ปฌ๋ก ํ ์คํธํ ๋ค์ ํด๋ผ์ฐ๋์ ๋๊ท๋ชจ ํด๋ฌ์คํฐ์์ ์คํํ๊ณ ์์ค ๋ฐ์ดํฐ์ ์์น์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ์์น๋ฅผ ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋๋ก๋ ์ด๊ฒ์ด ํ์ํ๊ณ ์ ์ฉํ๋ฉฐ, ์ค์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ s3์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ Spark ํด๋ฌ์คํฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ณ์ฐํด์ผ ํ๋ ๊ฒฝ์ฐ python/pyspark์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํ
์คํธํ ํ ํด๋ผ์ฐ๋์ ํ์ด์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ค์ผ์คํธ๋ ์ด์ ์ ์ด๋ป์ต๋๊น? ๊ณผ์ ๊ฐ ๋จ์ด์ ธ์ ์ฌ๋ผ์ง๋ค๋ฉด ์ด๋จ๊น์? ์, Apache Pig ์คํ์ผ๋ก ์๋ฆ๋ค์ด ํ์ดํ๋ผ์ธ์ ๋ง๋๋ ๊ฒ์ด ์ ์๋์๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์๋ํ๊ธฐ๋ ํ์ต๋๋ค. ํ์ง๋ง ์ง๊ธ์ PHP์ JavaScript์์ ์ฌ์ธต์ ์ผ๋ก ๋ง์ถคํ๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค(์ธ์ง ๋ถ์กฐํ๊ฐ ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ์๋ํฉ๋๋ค. ๋ ๋ฐ ์ค๋ฅ ์์).
๋ ์ดํฌ์ ์ ์ฅ๋๋ ํ์ผ์ ํ์์ด ์ฑ๋ฅ์ ํต์ฌ
๋ ๊ฐ์ง ํต์ฌ ์ฌํญ์ ๋ ์ดํดํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ ์ดํฌ์ ํ์ผ ๋ฐ์ดํฐ์ ๋ํ ์ฟผ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์คํ๋๊ณ ์๋ก์ด ์ ๋ณด๊ฐ ์ถ๊ฐ๋ ๋ ์ฑ๋ฅ์ด ์ ํ๋์ง ์๋๋ก ํ๋ ค๋ฉด ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
- ํ์ผ์ ์ด์ ๋ณ๋๋ก ์ ์ฅํฉ๋๋ค(์ด์ ๋ด์ฉ์ ์ดํดํ๊ธฐ ์ํด ๋ชจ๋ ์ค์ ์ฝ์ ํ์๊ฐ ์๋๋ก). ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์์ถ์ ํตํด ์ชฝ๋ชจ์ด ์ธ๊ณต ๋ง๋ฃจ ํ์์ ์ฌ์ฉํ์ต๋๋ค.
- ํ์ผ์ ์ธ์ด, ์ฐ๋, ์, ์ผ, ์ฃผ์ ๊ฐ์ ํด๋๋ก ๋ถํ ํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ์ค๋ฉ์ ์ดํดํ๋ ์์ง์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์กฐ์ฌํ์ง ์๊ณ ํ์ํ ํด๋๋ง ์ดํด๋ด ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ค ๋ฐ์ดํฐ๋ฅผ ์๋จ์ ๋งค๋ฌ๋ฆฐ ๋ถ์ ์์ง์ ๋ํด ๊ฐ์ฅ ํจ์จ์ ์ธ ํ์์ผ๋ก ๋ฐฐ์นํฉ๋๋ค. ๋ถํ ๋ ํด๋์์๋ ํ์ผ์์ ํ์ํ ์ด๋ง ์ ํ์ ์ผ๋ก ์ ๋ ฅํ๊ณ ์ฝ์ ์ ์์ต๋๋ค. ์ด๋์์๋ ๋ฐ์ดํฐ๋ฅผ "์ฑ์ธ" ํ์๊ฐ ์์ต๋๋ค(์คํ ๋ฆฌ์ง๊ฐ ๊ฐ์๊ธฐ ํฐ์ง ๊ฒ์ ๋๋ค). ์ฆ์ ํ๋ช ํ๊ฒ ์ฌ๋ฐ๋ฅธ ํ์์ผ๋ก ํ์ผ ์์คํ ์ ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ฌผ๋ก , ์ด์ ์ถ์ถํ๊ธฐ ์ํด ๋จผ์ ํด๋ฌ์คํฐ์์ ํ ์ค์ฉ ์ฝ์ด์ผ ํ๋ ๋์ฉ๋ csv ํ์ผ์ DataLake์ ์ ์ฅํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ๋ฐ๋์งํ์ง ์๋ค๋ ์ ์ ์ฌ๊ธฐ์ ๋ถ๋ช ํ ํด์ผ ํฉ๋๋ค. ์ด ๋ชจ๋ ์ผ์ด ์ ์ผ์ด๋๋์ง ์์ง ๋ช ํํ์ง ์๋ค๋ฉด ์์ ๋ ๊ฐ์ง ์ฌํญ์ ๋ค์ ์๊ฐํด ๋ณด์ญ์์ค.
AWS Athena - ์ญ์ธ๋๋ฐ์ค
๊ทธ๋ฌ๋ค๊ฐ ํธ์๋ฅผ ๋ง๋ค๋ค๊ฐ ์ฐ์ฐํ Amazon Athena๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค. ๊ฐ์๊ธฐ ๋๊ท๋ชจ ๋ก๊ทธ ํ์ผ์ ์ฌ๋ฐ๋ฅธ(๋ง๋ฃจ) ์ด ํ์์ ํด๋ ์ค๋์ ์กฐ์ฌ์ค๋ฝ๊ฒ ๋ฐฐ์ดํ๋ฉด ๋งค์ฐ ๋น ๋ฅด๊ฒ ํด๋น ํ์ผ์์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ํํ๊ณ Apache Spark/Glue ํด๋ฌ์คํฐ ์์ด๋ ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์๋ค๋ ์ฌ์ค์ด ๋ฐํ์ก์ต๋๋ค.
s3์ ๋ฐ์ดํฐ๋ก ๊ตฌ๋๋๋ Athena ์์ง์ ์ ์ค์ ์ธ
Athena์ ๋ํ ์์ฒญ ๊ฐ๊ฒฉ๋ ํฅ๋ฏธ๋กญ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋น์ฉ์ ์ง๋ถํฉ๋๋ค
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๋ฉ๋ ํด๋์์ ํ์ํ ์ด๋ง ์์ฒญํจ์ผ๋ก์จ Athena ์๋น์ค ๋น์ฉ์ด ํ ๋ฌ์ ์์ญ ๋ฌ๋ฌ๋ผ๋ ์ฌ์ค์ด ๋ฐํ์ก์ต๋๋ค. ๊ธ์์, ํด๋ฌ์คํฐ ๋ถ์์ ๋นํด ๊ฑฐ์ ๋ฌด๋ฃ์ ๋๋ค!
๊ทธ๋ฐ๋ฐ s3์์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ, ์งง์ ์๊ฐ ๋ด์ ์ ๋ณด ๋ณด์๋ถํฐ ๋ถ์๊น์ง ํ์ฌ์ ์์ ํ ๋ค๋ฅธ ๋ถ์๊ฐ Athena์ ์ ๊ทน์ ์ผ๋ก ์์ฒญํ๊ธฐ ์์ํ๊ณ ๋ช ์ด, ๋ช ์ด, ๋ช ๋ฌ, ๋ฐ๋
๋ฑ P.
ํ์ง๋ง ์ฐ๋ฆฌ๋ ๋ ๋์๊ฐ ํด๋ผ์ฐ๋์์ ๋ต๋ณ์ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ธ ์ด ํ์๊ณผ ํด๋๋ก์ ํฉ๋ฆฌ์ ์ธ ๋ถํ ์ ํตํด s3์ ์ ์ฅํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด์ ์ฐ๋ฆฌ๋ DataLake์ ๋น ๋ฅด๊ณ ์ ๋ ดํ ๋ถ์ ์์ง์ ๋ฌด๋ฃ๋ก ๋ฐ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ํ์ฌ์์ ๋งค์ฐ ์ธ๊ธฐ๊ฐ ๋ง์์ต๋๋ค. ์๋ํ๋ฉด... SQL์ ์ดํดํ๊ณ ํด๋ฌ์คํฐ ์์/์ค์ง/์ค์ ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์์ ํฉ๋๋ค. "๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค๋ฉด ์ ๋ ๋ง์ ๋น์ฉ์ ์ง๋ถํฉ๋๊น?"
Athena์ ๋ํ ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ์ํ๋ ๊ฒฝ์ฐ ์ถฉ๋ถํ ํ์ฑํ ์ ์์ต๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
๊ธธ๊ณ ๊ณ ํต์ค๋ฌ์ด ๊ธธ์ ๋งํ ๊ฒ๋ ์๊ณ ์ํ๊ณผ ๋ณต์ก์ฑ ์์ค, ์ง์ ๋น์ฉ์ ์ง์์ ์ผ๋ก ์ ์ ํ๊ฒ ํ๊ฐํ๋ฉด์ ์ฐ๋ฆฌ๋ ์๋์ ์์ ๋น์ฉ ๋ชจ๋์์ ์ฐ๋ฆฌ๋ฅผ ๊ฒฐ์ฝ ๋ง์กฑ์ํค์ง ์๋ DataLake ๋ฐ ๋ถ์์ ์ํ ์๋ฃจ์ ์ ์ฐพ์์ต๋๋ค.
ํ์ฌ์ ์์ ํ ๋ค๋ฅธ ๋ถ์์ ์๊ตฌ์ ๋ง๊ฒ ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๋ฉฐ ์ ๋ ดํ๊ฒ DataLake๋ฅผ ์ด์ํ๋ ๊ฒ์ ๊ฑด์ถ๊ฐ๋ก ์ผํ ์ ์ด ์๊ณ ์ฌ๊ฐํ์ ์ฌ๊ฐํ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๋ ์๋ จ๋ ๊ฐ๋ฐ์์ ๋ฅ๋ ฅ ๋ด์ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ํ์ดํ๋ฅผ ์ฌ์ฉํ๊ณ Hadoop ์ํ๊ณ์ 50๊ฐ ์ฉ์ด๋ฅผ ์๊ณ ์์ต๋๋ค.
์ฌํ์ด ์์๋ ๋ ๋ด ๋จธ๋ฆฌ๋ ๊ฐ๋ฐฉํ ๋ฐ ํ์ํ ์ํํธ์จ์ด์ ์๋ง์ ์ผ์ ๋๋ฌผ์๊ณผ ํ์์ ๋ํ ์ฑ ์์ ๋ถ๋ด์ ๋ํ ์ดํด๋ก ๊ฐ๋ผ์ก์ต๋๋ค. ๊ฐ๋จํ ๋๊ตฌ(nagios/munin -> elastic/kibana -> Hadoop/Spark/s3...)์์ DataLake ๊ตฌ์ถ์ ์์ํ๊ณ ํผ๋๋ฐฑ์ ์์งํ๊ณ ์งํ ์ค์ธ ํ๋ก์ธ์ค์ ๋ฌผ๋ฆฌํ์ ๊น์ด ์ดํดํ์ธ์. ๋ณต์กํ๊ณ ์ด๋์ด ๋ชจ๋ ๊ฒ์ ์ ๊ณผ ๊ฒฝ์์์๊ฒ ์ ๊ณตํ์ธ์.
ํด๋ผ์ฐ๋๋ก ์ด๋ํ๊ณ ์ถ์ง ์๊ณ ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ์ง์, ์
๋ฐ์ดํธ ๋ฐ ํจ์นํ๊ณ ์ถ๋ค๋ฉด Hadoop ๋ฐ Presto๊ฐ ํ์ฌ๋ ์ ๋ ดํ ์ฌ๋ฌด์ฉ ์ปดํจํฐ์์ ๋ก์ปฌ๋ก ์ ์ฌํ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฉ์ถ์ง ์๊ณ ์์ผ๋ก ๋์๊ฐ๊ณ , ๊ณ์ฐํ๊ณ , ๊ฐ๋จํ๊ณ ๋ช
ํํ ํด๊ฒฐ์ฑ
์ ์ฐพ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ์ด ํ์คํ ์ ๋ ๊ฒ์
๋๋ค! ๋ชจ๋๋ค ํ์ด์ ๋น๊ณ ๋ค์ ๋ง๋์!
์ถ์ฒ : habr.com