๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

AWS

[aws] Kinesis

์ด ๊ธ€์˜ ์ผ๋ถ€๋Š” aws ๊ณต์‹๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜์˜€์Œ์„ ๋ฐํž™๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“Œ Kinesis

 

Kinesis๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ, ๊ณ„์ธก, ์›น์‚ฌ์ดํŠธ ํด๋ฆญ ์ŠคํŠธ๋ฆผ, IoT, ์›๊ฒฉ ์ธก์ • ๋ฐ์ดํ„ฐ ๋“ฑ ์–ด๋–ค ๊ฒƒ๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค๋ฉด ๋ชจ๋‘ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ๋‹ค. Kinesis๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์ง‘ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” Kinesis Data Stream, ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ AWS ๋‚ด๋ถ€๋‚˜ ์™ธ๋ถ€์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์ฝ์–ด๋“ค์ด๋Š” Kinesis Data Firehouse, SQL ์–ธ์–ด๋‚˜ Apache Flink๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋ถ„์„ํ•˜๋Š” Kinesis Data Analytics, ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ ์ €์žฅํ•˜๋Š” Kinesis Video Stream  ๋“ฑ 4๊ฐ€์ง€ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. 

 

 

 

 

 

๐Ÿ“Œ Kinesis Data Streams

 

์‹œ์Šคํ…œ์—์„œ ํฐ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋‹ค๋ฃจ๋Š” ์„œ๋น„์Šค๋กœ Kinesis Data Stream์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒค๋“œ๋กœ ๊ตฌ์„ฑ ๋˜์–ด์žˆ๋‹ค. ์ด ์ƒค๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด ๊ฒƒ์€ ์‚ฌ์ „์— ํ”„๋กœ๋น„์ €๋‹๋˜์–ด์•ผ ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋“ค์€ ์ด๋Ÿฌํ•œ ์ƒค๋“œ์— ๋ถ„๋ฐฐ๋œ๋‹ค. ์ƒค๋“œ๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๋ฅ ์ด๋‚˜ ์†Œ๋น„์œจ ์ธก๋ฉด์—์„œ ์ŠคํŠธ๋ฆผ์˜ ์šฉ๋Ÿ‰์„ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ทธ๋ฆผ์—์„œ ์ƒ์‚ฐ์ž(์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜น์€ ๋ฐ์Šคํฌํ†ฑ, ํœด๋Œ€์ „ํ™”)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Kinesis Data Stream ์œผ๋กœ ๋ณด๋‚ธ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.  Kinesis Data Stream ์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋ ˆ์ฝ”๋“œ๋Š” ๊ทผ๋ณธ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด ๋•Œ ๋ ˆ์ฝ”๋“œ๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ตœ๋Œ€ 1MB ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ๋ธ”๋กญ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ด์šฉํ•  ์ƒค๋“œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๊ณ  ๋ฐ์ดํ„ฐ ๋ธ”๋กญ์€ ๊ฐ’ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.  ์ด์ œ ์ƒ์‚ฐ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณด๋‚ผ ๋•Œ ์ดˆ๋‹น 1MB๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ƒค๋“œ๋‹น 1์ดˆ์— ์ฒœ ๊ฐœ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ์„ฏ ๊ฐœ์˜ ์ƒค๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ดˆ๋‹น 6MB๋ฅผ ์–ป๊ฑฐ๋‚˜ ์ด 6์ฒœ ๊ฐœ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ŠคํŠธ๋ฆผ์— ๋“ค์–ด๊ฐ€๋ฉด ๋งŽ์€ ์†Œ๋น„์ž(KCL, Lambdam, Firehouse, Data Analytics)๊ฐ€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์†Œ๋น„์ž๊ฐ€ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ›์œผ๋ฉด ์—ฌ๊ธฐ์—๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค, ์ƒค๋“œ์—์„œ ๋ ˆ์ฝ”๋“œ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‹œํ€€์Šค ๋ฒˆํ˜ธ, ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋กญ์ด ์žˆ๋‹ค. Kinesis Data Stream ์—๋Š” ์—ฌ๋Ÿฌ ์†Œ๋น„ ์œ ํ˜•์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ƒค๋“œ๋งˆ๋‹ค ์ดˆ๋‹น 2MB์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ชจ๋“  ์†Œ๋น„์ž ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์†Œ๋น„์ž๋งˆ๋‹ค ์ƒค๋“œ๋‹น 1์ดˆ์— 2MB์”ฉ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด Kinesis Data Stream์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋Š” ์ž ์‹œ ๊ฑฐ๊ธฐ์— ๋จธ๋ฌผ๋ฉด์„œ ์—ฌ๋Ÿฌ ์†Œ๋น„์ž์—๊ฒŒ ์ฝํžŒ๋‹ค. 

 

 

 

 

๋ฐ์ดํ„ฐ์˜ ๋ณด์กด ๊ธฐ๊ฐ„์€ 1์ผ์—์„œ 365์ผ ์‚ฌ์ด๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๋‹จ Kinesis๋กœ ๋“ค์–ด์˜ค๋ฉด ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๋ฉด ํŒŒํ‹ฐ์…˜ ํ‚ค๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ํŒŒํ‹ฐ์…˜ ํ‚ค๊ฐ€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๋“ค์€ ๊ฐ™์€ ์ƒค๋“œ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์–ด ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์‚ฐ์ž๋Š” SDK, Kinesis Producer Library, Kinesis Agent๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์†Œ๋น„์ž๋Š” Kinesis Producer Library๋‚˜ SDK๋ฅผ ์จ์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋‹ˆ๋ฉด AWS ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” Lambda๋‚˜ Kinesis Data Firehose, Kinesis Data Analytics๋ฅผ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Kinesis Data Stream ์—๋Š” ๋‘ ๊ฐ€์ง€ ์šฉ๋Ÿ‰ ์œ ํ˜•์ด ์žˆ๋Š”๋ฐ ๋จผ์ € ์ „ํ†ต์ ์ธ ์šฉ๋Ÿ‰ ์œ ํ˜•์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ ์œ ํ˜•์ด ์žˆ๊ณ  ์—ฌ๊ธฐ์„œ ํ”„๋กœ๋น„์ €๋‹ํ•  ์ƒค๋“œ ์ˆ˜๋ฅผ ์ •ํ•˜๊ณ  API๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•œ๋‹ค.  ์˜จ๋””๋งจ๋“œ ์œ ํ˜•์—์„œ๋Š” ์šฉ๋Ÿ‰์„ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ  ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์–ธ์ œ๋“  ์šฉ๋Ÿ‰์ด ์กฐ์ •๋œ๋‹ค. 

 

 

  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ: ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„์˜ ๋ ˆ์ดํ„ด์‹œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ฒ˜๋ฆฌ: ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” AWS Lambda ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ธ๋ถ„ํ™”๋œ ์ œ์–ด: ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํ•  ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ๋ณด์กด ๊ธฐ๊ฐ„(์ตœ๋Œ€ 7์ผ), ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋‚˜ ์˜ค๋žซ๋™์•ˆ ์œ ์ง€ํ• ์ง€ ๋“ฑ์˜ ์„ค์ •์„ ์„ธ๋ถ€์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์Šค ์ผ€์ด์Šค: ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ˆ˜์ง‘, ์‹ค์‹œ๊ฐ„ ๋ถ„์„, ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜, ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์˜ ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ ๋“ฑ.

 

 

๐Ÿ“Œ Kinesis Data Firehose 

 

 

Firehose๋Š” ์ƒ์‚ฐ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์œ ์šฉํ•œ ์„œ๋น„์Šค๋กœ Data Streams ์—์„œ ๋ณธ ๋ชจ๋“  ๊ฒƒ์ด ์ƒ์‚ฐ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. 

 ๋˜ํ•œ Kinesis data stream์„ Kinesis Data Firehose๋กœ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด DataFirehouse๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ „์†กํ•˜๋ฉด ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฉด ์ผ๊ด„์ ์œผ๋กœ ๋Œ€์ƒ์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Firehouse์˜ ์ˆ˜์‹ ์ฒ˜๋Š” ์„ธ ๊ฐœ๊ฐ€ ์žˆ์œผ๋ฉฐ S3,AWS์˜ ์›จ์–ดํ•˜์šฐ์ง• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ ์•„๋งˆ์กด Redshift, AWS์˜ OpenSearch ๋“ฑ์ด ์žˆ๋‹ค. ํƒ€์‚ฌ ํŒŒํŠธ๋„ˆ ์ˆ˜์‹ ์ฒ˜๋กœ๋Š” DataDog,Splunk,New Relic,Mongo DB ๋“ฑ์ด ์žˆ๊ณ  HTTP ์—”๋“œ ํฌ์ธํŠธ๊ฐ€ ์žˆ๋Š” ์ž์ฒด API๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ์ˆ˜์‹ ์ฒ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋“  ์ˆ˜์‹ ์ฒ˜๋กœ ์ „์†ก๋˜๋ฉด ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…์œผ๋กœ S3 ๋ฒ„ํ‚ท์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

  • ๋ฐ์ดํ„ฐ ์ „์†ก: ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜์—ฌ Amazon S3, Amazon Redshift, Amazon Elasticsearch Service ๋˜๋Š” Splunk์™€ ๊ฐ™์€ ๋Œ€์ƒ์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ ๋ฐฐ์น˜: ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐฐ์น˜ํ•˜์—ฌ ๋Œ€์ƒ ์„œ๋น„์Šค์— ์ „์†กํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž ์„ค์ •์— ๋”ฐ๋ผ ๋ฒ„ํผ ํฌ๊ธฐ ๋ฐ ๋ฒ„ํผ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ํฌ๋งท ๋ณ€ํ™˜: ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ ์„œ๋น„์Šค์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ํฌ๋งท ๋ณ€ํ™˜(CSV, JSON, Parquet ๋“ฑ)ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ„ํŽธํ•œ ์„ค์ •: ๋ณ„๋„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ ์—†์ด ์ฝ˜์†”์—์„œ ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ž๋™ ํ™•์žฅ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ์Šค ์ผ€์ด์Šค: ๋กœ๊ทธ ๋ฐ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ ์ƒ์„ฑ, ๋ถ„์„์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ ์žฌ ๋“ฑ.