Kinesis Overview
ํค๋ค์์ค๋ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ง, ์ฒ๋ฆฌ, ๋ถ์, ์คํธ๋ฆฌ๋ฐํ๋ ์ญํ ์ ํ๋ค.
์ค์๊ฐ์ผ๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ ๋๋ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฑ์ผ๋ก ๋ณด๋ด๊ณ ์ ํ ๋ ์ฌ์ฉ๋จ
- ์ฑ ๋ก๊ทธ, ์งํ, ์น์ฌ์ดํธ ํด๋ฆญ์คํธ๋ฆผ, IoT ํ ๋ ๋ฉํธ๋ฆฌ ๋ฐ์ดํฐ ๋ฑ์ด ํด๋น
- ์ปดํฌ๋ํธ์ ์ข
๋ฅ 4๊ฐ์ง
- Kinesis Data Streams
- ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์บก์ณ, ์ฒ๋ฆฌ, ์ ์ฅ
- Kinesis Firehose
- AWS ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ์คํธ๋ฆผ์ ์ ์ฅ
- Kinesis Data Analytics
- SQL์ด๋, Apache Flink๋ก ๋ฐ์ดํฐ์คํธ๋ฆผ์ ๋ถ์
- Kinesis Video Streams
- ๋น๋์ค์คํธ๋ฆผ์ ์บก์ฒ, ์ฒ๋ฆฌ, ์ ์ฅ ์ญํ
- Kinesis Data Streams
01. Kinesis Data Streams
- ์ค์์ Kinesis Data Streams๊ฐ ์๊ณ , ๊ทธ ์์๋ ์คํธ๋ฆผ์ด ์๋ค๊ณ ๊ฐ์
- ์คํธ๋ฆผ์ ์ค๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ ๋ฒํธ๊ฐ ๋ถ์ฌ๋์ด ์์
- ์๋ฅผ ๋ค์ด ์ค๋1, ์ค๋2, ,,, ์ค๋30 ๊น์ง ์๋ค๊ณ ํด๋ณด๊ณ , ์ค๋์ ๊ฐ์๋ ์กฐ์ ํ ์ ์๋ค.
-
ํค๋ค์์ค ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ํฌํจ๋ ์ค๋ ์๊ฐ ๋ง์์๋ก ์คํธ๋ฆผ์์์ ์ฒ๋ฆฌ๋์ ๋์ผ ์ ์๋ค.
- Kinesis Data Streams ์์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ ์์ฐ์(producer)๊ฐ ๋ด๋น
- ์์ฐ์์ ์ ํ
- ์ ํ๋ฆฌ์ผ์ด์ , ๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ
- ๋ด๋ถ์ SDK, KPL (Kinesis Producer Library)
- Kinesis Agent
- ์์ ์์ฐ์๋ค์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์์ฐํด Kinesis Data Streams๋ก ์ ์ก
-
์ ์ก๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ์คํธ๋ฆผ์ผ๋ก ์ ์ก๋๋ ๋ ์ฝ๋๋ ํํฐ์ ํค์ ์ต๋ 1MB ํฌ๊ธฐ์ ๋ณผ๋ฅจ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ์ด๋ฌํ ๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ Kinesis Data Streams๋ก ๋ณด๋ ๋๋ค.
- ์ค๋๋ก ์คํธ๋ฆผ์ ํ์ฅ ํ ์ ์๋ค.
- ๊ฐ ์ค๋๋ ์ด๋น 1MB ๋๋ 1,000๊ฐ์ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค.
-
์ค๋๊ฐ 30๊ฐ ๋ค์ด์๋ค๋ฉด ์ด๋น 30MB or 30,000๊ฐ์ ๋ฉ์์ง๊ฐ ๋๋ค.
- ๋ค๋ฅธ์ชฝ์๋ Kinesis Data Streams ๋ฐ์ดํฐ์ ์๋น์(Consumer)๊ฐ ์๋ค.
- ์๋น์ ์ ํ
- Kinesis Client Library (KCL)
- SDK
- Lambda ํจ์
- Kinesis Data Firehose
- Kinesis Data Analytics
- ์๋น์์๊ฒ ์ ๋ฌ๋๋ ๋ ์ฝ๋์๋
- ๋์ผํ ํํฐ์ ํค
- ์ค๋์ ํฌํจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๋ ์ํ์ค ๋ฒํธ
- ๋ฐ์ดํฐ ๋ธ๋กญ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- Kinesis Data Streams ๋ฐ์ดํฐ์ ์๋น์๊ฐ ์ฌ๋ฌ๋ช ์ผ ๊ฒฝ์ฐ์๋ Fan-out ํจํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
- Kinesis Data Streams์ pub/sub ํจํด์ธ ์ ์ด๋ค.
- ์๋น ๋ฉ์ปค๋์ฆ์ ๋ ๊ฐ์ง๋ก ๊ตฌ๋ถํ ์ ์๋ค.
- ๊ณต์ ์๋น ๋ฉ์ปค๋์ฆ
- ๋ชจ๋ ์๋น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋๋น 2MB/s ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ก
- ํฅ์๋ ํฌ์์ ์๋น์ ๋งค์ปค๋์ฆ
- ์ค๋๋น 2MB/s ์ ์ ์กํ ์ ์๋ค.
- ๊ณต์ ์๋น ๋ฉ์ปค๋์ฆ
- 2๋ฒ์งธ ๋ฐฉ๋ฒ์ด ๋ ๋น์ธ๊ณ ์ฒ๋ฆฌ๋๋ ๋ง๋ค.
Kinesis Data Streams ํน์ง
- ๋ณด์กด๊ธฐ๊ฐ 1์ผ~365์ผ, ๊ทธ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฒ๋ฆฌ or ์ฌ์์ฐ ๊ฐ๋ฅ
- Kinesis์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ด๋ฌํ ํน์ง์ ๋ถ๋ณ์ฑ(immutability) ๋ผ๊ณ ํจ
- Kinesis Data Streams๋ก ๋ฉ์์ง๋ฅผ ์ ์กํ๋ฉด ํํฐ์
ํค๊ฐ ์์ฑ๋๊ณ , ๊ฐ์ ํํฐ์
ํค๋ฅผ ๊ฐ๋ ๋ฉ์์ง๋
๊ฐ์ ์ค๋๋ฅผ ํตํด ์ ์ก๋์ด ํค ๊ธฐ๋ฐ ์ ๋ ฌ์ด ๊ฐ๋ฅ - ์์ฐ์๋ SDK, KPL, Kinesis Agent๋ฅผ ์ฌ์ฉํ ์ ์์
- ์๋น์๋ ์ํ๋๋๋ก KCL, SDK๋ฅผ ์ง์ ๋ง๋ค๊ฑฐ๋ AWS Lambda, Firehose, Analytics์ ๊ฐ์ ๊ด๋ฆฌ๋ ์๋น์๋ฅผ ์ฌ์ฉํ ์ ์์
02. Kinesis Data Streams - Capacity Modes
2๊ฐ์ง ์ฉ๋ ๋ชจ๋๊ฐ ์๋ค.
- ํ๋ก๋น์ ๋๋ ์ฉ๋ ๋ชจ๋ (์ ํต์ ๋ฐฉ์)
- ํ๋ก๋น์ ๋ํ ์ค๋ ์ ์ ํ๊ณ , ์ง์ or API๋ฅผ ํตํด ์กฐ์
- ์ค๋๋ ๊ฐ๊ฐ ์ด๋น 1MB or 1,000๊ฐ์ ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌ
- ์ถ๋ ฅ๋์ ๊ฒฝ์ฐ์๋ ์ด๋น 2MB๋ฅผ ์ฒ๋ฆฌํ ์ ์์
- ์ด ๋ชจ๋๋ ์ ํต์ ์ธ ๋ฐฉ์ ๋๋ ํฌ์์ ํจํด์ ์ ํฉ
- ์๊ฐ ๋จ์๋ก ์ค๋๋น ๋น์ฉ์ด ๋ถ๊ณผํ๋ฏ๋ก ์ฃผ์ํด์ผ ํจ
- ์จ๋๋งจ๋ ๋ชจ๋
- ์ฉ๋์ ํ๋ก๋น์ ๋ํ๊ฑฐ๋ ๊ด๋ฆฌํ ํ์๊ฐ ์์
- ์๊ฐ์ด ์ง๋๋ฉด ์์๋์ ๋ฐ๋ผ ์๋์ผ๋ก ์กฐ์ (์คํ ์ค์ผ์ผ ์์???)
- ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์ด๋น 4MB or 4,000๊ฐ์ ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌ
- ์ด ์ฉ๋์ ์๋์ผ๋ก ์ต๊ทผ 30์ผ ๊ฐ ์ต๋ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์กฐ์ ๋จ
- ์๊ฐ ๋จ์๋ก ์คํธ๋ฆผ๋น ๋ฐ์ดํฐ๋(GB)์ ๋ฐ๋ผ ๋น์ฉ์ด ๋ถ๊ณผ๋๋ฏ๋ก ๊ฐ๊ฒฉ ์ฐ์ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.
- ์ฌ์ฉ๋์ ์์ํ๊ธฐ ์ด๋ ต๋ค๋ฉด ์จ๋๋งจ๋
- ์ฉ๋์ ์ฌ์ ์ ๊ณํํ๊ณ ์ถ๋ค๋ฉด ํ๋ก๋น์ ๋ ๋ชจ๋๋ฅผ ์ ํ
03. Kinesis Data Firehose
Firehose์ ๊ฐ๋ ์ ๋ฌด์ฒ ๊ฐ๋จํ๋ค.
๋ชฉ์ ์ง๊น์ง ์ ์ก๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
- ๋ฐ์ดํฐ๋ ์์ฐ์๊ฐ ์ฌ๋ฌ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํด Firehose์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฑฐ๋,
- Firehose๊ฐ Kinesis Data Streams๋ CloudWatch, IoT ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์๋ ์๋ค.
- ์ฃผ๋ก Kinesis Data Streams์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค
- ๋ฐ์ดํฐ ์ ์ก ์๋๋ ์ด๋น ์ต๋ 1MB
- ๋ ์ฝ๋๋ฅผ ๋ณํํ ๋๋ Lambda ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ผ๋ถ ์์ ์ ๊ฐํ ์ ์๋ค.
- ๋ฐ์ดํฐ ๋ฐฐ์น(batch)๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ๋ชฉ์ ์ง์ ์ ์ก
- ์ด๊ฒ์ ๋ฐฐ์น ์ฐ๊ธฐ๋ผ๊ณ ํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก๋ฐ๋ก ์ฐ์ง(write)์๊ณ , ๋ฐฐ์น๋ก ํ ๋ฒ์ ์ฐ๋ ํจ์จ์ ์ธ ๋ฐฉ์์ด๋ค.
- ๋ฐ๋ผ์ Kinesis Data Firehose๋ ๊ฑฐ์ ์ค์๊ฐ ์๋น์ค๋ผ ํ ์ ์๋ค.
- ๋ชฉ์ ์ง๊ฐ ๋๋ AWS๋ก๋
- S3
- Redshift
- Redshift์ ์ ์กํ๋ ค๋ฉด ๋จผ์ Firehose์์ S3๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ณต์ฌ ๋ช ๋ น์ด๋ฅผ ํตํด Redshift๋ก ๋ณด๋ด์ผํจ
- ElasticSearch
- ํ์ฌ ๋ชฉ์ ์ง
- ๋ฐ์ดํฐ๋
- Splunk
- New Relic
- MongoDB
- etcโฆ. ์ด ์๋ค.
- ๋ํ API ํํ์ HTTP ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ถ ์ฌ์ฉ์ ์ง์ ๋ชฉ์ ์ง๋ก๋ Firehose๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์
-
๋ง์ง๋ง์ผ๋ก, ์ฒ๋ฆฌ์ ์คํจ or ์ฒ๋ฆฌ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ถ์ ๋๋ Firehose์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ S3๋ฐฑ์ ๋ฒํท์ ์ ์ฅํ ์๋ ์์ต๋๋ค.
-
Firehose๋ ์์ ๊ด๋ฆฌํ ์๋น์ค๋ผ์ ๋ณ๋๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์๊ณ ์๋์ผ๋ก ํ์ฅ๋๋ฉฐ ์๋ฒ๊ฐ ์๋ค๋ ์ ์์ Streams์ ์ฐจ๋ณ์ ์ด ๋๋ค.
- ์ฌ์ฉํ ์ ์๋ ์๋น์ค
- Redshift, S3, ElasticSearch
- ํ์ฌ ํํธ๋์ฌ (datadog, new Relic, etcโฆ)
- ์ฌ์ฉ์ ์ง์ HTTP Endpoint
- ๋น์ฉ์ Firehose์์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ์๋ง ๋ถ๊ณผํ๋ฏ๋ก, ๋ฏธ๋ฆฌ ํ๋ก๋น์ ๋ ํ์ง์์๋ ๋๊ณ ,
- ๊ฑฐ์ ์ค์๊ฐ์ ๊ฐ๊น๋ค๋ ์ด์ ์ด ์๋ค.
04. Kinesis Data Streams VS Firehose
- Data Streams
- ๋๊ท๋ชจ๋ก ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ์คํธ๋ฆฌ๋ฐ ์๋น์ค
- ์ฌ์ฉ์ ์ง์ ์ฝ๋๋ฅผ ์์ฑํด ๋ฐ์ดํฐ ์ ์ก๊ณผ ์๋น์ ์ฌ์ฉ๊ฐ๋ฅ
- 200ms ์ ๋์ ์๋๋ก ์ค์๊ฐ ์ฒ๋ฆฌ
- ํ์์ ๋ฐ๋ผ ์ค๋๋ฅผ ์กฐ์ ํ๊ธฐ ์ํด ์ค๋์ถ๊ฐ ๋ฐ ๋ถํ , ๊ฐ์์ํค๋ ์ค๋ ํตํฉ ๊ฐ๋ฅ
- 1~365์ผ๊ฐ ๋ณด์กด๋๋ฉฐ, ์ฌ์๊ธฐ๋ฅ ์ง์
- Firehose
- ์ํ๋ ๋ชฉ์ ์ง (s3, Redshift, ES, ํ์ฌ, HTTP) ๋ก ์ ์กํ๋๊ฒ์ด ๋ชฉ์
- ์์ ๊ด๋ฆฌํ ์๋น์ค
- ๋ฐ์ดํฐ๋ ๋ฒํผ์์ ๋ฐฐ์น๋ก ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ์๋
- ํ์ฅ์ ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ์์ผ๋ฏ๋ก Firehose์์ ๋ฐ์ดํฐ ์ฌ์ ๋ถ๊ฐ๋ฅ
05. Kinesis Data Analytics
SQL ์ฑ์ ์ํ Analytics
- ์คํธ๋ฆผ์ SQL ์ฝ๋๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๋จผ์ , Analytics๊ฐ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค.
- source -> Data Streams, Firehose
- ์์ฑํ SQL ๋ฌธ์ฅ์ ํตํด ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ค, ๊ทธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชฉ์ ์ง๋ก ์ ์ก
- DataStreams, Firehose
-
Firehose๋ S3๋ฅผ ํตํด Redshift ์ด๋ ๋ค๋ฅธ Firehose ๋ชฉ์ ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
- Kinesis Data Analytics๋ SQL๋ก Kinesis Streams์์ ์ค์๊ฐ ๋ถ์์ ํ๊ณ
- ์์ ๊ด๋ฆฌํ ๋ชจ๋ธ์ด๋ฏ๋ก ํ๋ก๋น์ ๋ํ ์๋ฒ๊ฐ ์๋ค.
- ์๋์ผ๋ก ํ์ฅ๋๋ฉฐ ์ค์๊ฐ ๋ถ์์ด ๋ชฉ์
- ๋น์ฉ์ Kinesis Data Analytics์์ ์ฒ๋ฆฌ๋ ๋งํผ๋ง ๋ถ๊ณผ
-
์ค์ ์ฌ์ฉ๋์ ๊ธฐ๋ฐํ๋ฉฐ, ์ค์๊ฐ ์ฟผ๋ฆฌ๋ฅผ ํตํด ์คํธ๋ฆฌ๋ฐ์ ์์ฑํ ์ ์๋ค.
- ์ฌ์ฉ์ฌ๋ก
- ์๊ณ์ด ๋ถ์
- ์ค์๊ฐ ๋์๋ณด๋
- ์ค์๊ฐ ์งํ (metric)
๋๊ธ๋จ๊ธฐ๊ธฐ