Apache Storm 2.0 ๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋น›์„ ๋ณด์•˜๋‹ค ๋ถ„์‚ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์˜ ๋Œ€ํญ ์ถœ์‹œ ์•„ํŒŒ์น˜ ์Šคํ†ฐ 2.0, ์ด์ „์— ์‚ฌ์šฉ๋œ Clojure ์–ธ์–ด ๋Œ€์‹  Java๋กœ ๊ตฌํ˜„๋œ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋กœ ์ „ํ™˜ํ•œ ๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

์ด ์‹œ์Šคํ…œ์€ ์›๋ž˜ Clojure๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ JVM ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Apache Foundation์€ Storm์„ Java๋กœ ์ž‘์„ฑ๋œ ์ƒˆ ์ปค๋„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ณ„ํš์„ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋Š” Apache Storm 2.0 ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์˜ ๋ชจ๋“  ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋Š” Java๋กœ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Clojure์—์„œ ํ•ธ๋“ค๋Ÿฌ ์ž‘์„ฑ์— ๋Œ€ํ•œ ์ง€์›์€ ์œ ์ง€๋˜์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ๋ฐ”์ธ๋”ฉ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Storm 2.0.0์—๋Š” Java 8์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์ด ์™„์ „ํžˆ ์žฌ์„ค๊ณ„๋˜์–ด ๋‹ค์Œ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ฑ์ทจํ•˜๋‹ค ์„ฑ๋Šฅ์ด ๋ˆˆ์— ๋„๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ ํ† ํด๋กœ์ง€์˜ ๊ฒฝ์šฐ ์ง€์—ฐ์ด 50-80% ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค).

Apache Storm 2.0 ๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

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

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

Storm ์ ์šฉ ๋ถ„์•ผ:

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

ํญํ’์˜ ํŠน์ง•:

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

์ถœ์ฒ˜ : opennet.ru

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