Ordering Data into Kinesis
Kinesis์ SQS FIFO์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ ๋ ฌ๋๋์ง ์์๋ณด์
๊ธฐ์ ์ด ์๋ก ๋น์ทํด๋ณด์ด๊ณ , ๊ธฐ๋ฅ๋ ๋น์ทํ ํธ์ด์ง๋ง, ์ค์ ๋ก๋ ์์ฃผ ๋ค๋ฅด๋ค.
- ๋๋ก์ ํธ๋ญ์ด 100๋๊ฐ ์๊ณ , ๊ฐ๊ฐ ํธ๋ญID๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
- ํธ๋ญ1, ํธ๋ญ2, โฆ ํธ๋ญ100 ๊น์ง ๋๋ก์ ์์ผ๋ฉฐ GPS์์น๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก AWS์ ๋ณด๋ธ๋ค.
- ๊ฐ ํธ๋ญ์ ์์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์๋นํด์ ํธ๋ญ์ ์ด๋์ ์ ํํ๊ฒ ์ถ์ ํ๊ณ ๊ทธ ๊ฒฝ๋ก๋ฅผ ์์๋๋ก ํ์ธํ๋ ค๊ณ ํ๋ค.
- ์ด๋ป๊ฒ Kinesis๋ก ์ ๋ฌํ ์ ์์๊น?
- ํํฐ์ ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. (ํํฐ์ ํค ๊ฐ์ ํธ๋ญID)
- ํธ๋ญ1์ ํธ๋ญ1์ ํํฐ์ ํค ์ ์ก
- ํธ๋ญ2๋ ํธ๋ญ2์ ํํฐ์ ํค ์ ์ก
-
๊ฐ์ ํํฐ์ ํค๋ฅผ ์ง์ ํ๋ฉด ํด๋น ํค๊ฐ ์ธ์ ๋ ๋์ผํ ์ค๋๋ก ์ ๋ฌ๋๋ค. (Kafka์ ๋น์ทโฆ???)
- Kinesis ๋ฐ์ดํฐ ์คํธ๋ฆผ๊ณผ ์ค๋ ์ธ ๊ฐ๊ฐ 1, 2, 3๋ฒ ์๋ค.
- ๊ฐ๋จํ๊ฒ ํธ๋ญ 100๋ ๋์ 5๋๋ก ๊ฐ์ ํ๋ค.
- ์ด 5๋์ ํธ๋ญ์ด ๋๋ก์ ์๊ณ Kinesis์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
- ํธ๋ญ ID๋ก ํํฐ์ ํค๋ฅผ ์ฌ์ฉํ๋ค.
- ํธ๋ญ 1์ด GPS๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ Kinesis๋ก ํธ๋ญ 1์ ํํฐ์ ํค๋ฅผ ๋ณด๋ด๊ฒ ๋๋ฉฐ, ์ด ๋ Kinesis๋ ํธ๋ญ 1์ ํํฐ์ ํค๋ฅผ ํด์ํ๋ค. ๋ค์ ๋งํด ๊ณ์ฐํ๋ค.
- ํธ๋ญ 1์ ๋ฐ์ดํฐ๊ฐ ์ค๋ 1๋ฒ์ผ๋ก ๊ฐ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ ์ค๋ 1๋ฒ์ผ๋ก ์ด๋ํ๋ค.
- ํธ๋ญ 2๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค. ํธ๋ญ 2๋ฒ์ ํํฐ์ ํค๋ฅผ ์ ์กํ๋ค. Kinesis๋ ํด๋น ํํฐ์ ํค๋ฅผ ํ์ธํ๊ณ ํด์ํ ํ ํด๋น ๊ฐ์ด ์ค๋ 2๋ฒ์ ๋ค์ด๊ฐ๋๋ก ํ๋ค.
- ํธ๋ญ 3๋ ๋ง์ฐฌ๊ฐ์ง๊ณ , ํธ๋ญ 3์ ํํฐ์
ํค๋ฅผ ์ ์กํ๋๋ฐ Kinesis ๋ฐ์ดํฐ ์คํธ๋ฆผ์ด ์ด๋ฒ์ ํธ๋ญ 3์ ํค๊ฐ ์ค๋ 1๋ฒ์ผ๋ก ์ด๋ํด์ผ ํ๋ค๊ณ ๊ฒฐ์ ํ๋ค.
- ์ค๋ 3๋ฒ์ผ๋ก ๊ฐ ํ์ ์์ด ์ด ํํฐ์ ํค๋ ์ค๋ 1๋ก ์ด๋ํ๋ฉด ๋๋ค๊ณ ํ๋ค.
- ํธ๋ญ 4๋ ์ค๋ 3๋ฒ์ผ๋ก ์ด๋,
- ํธ๋ญ 5๋ ์ค๋ 2๋ฒ์ผ๋ก ์ด๋,
- ์ด๋ ๊ฒ ์ฌ๋ถํ ํ๋ ๊ฒ์ ํํฐ์ ์ด๋ผ๊ณ ํ๊ธฐ์ ํํฐ์ ํค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๊ฐ ํธ๋ญ์ ํํฐ์ ํค๋ ๊ฑฐ๊ธฐ์ ๋ฐ๋ฅธ ์ค๋์ ์ํ๋ค.
- ํธ๋ญ 1์ ๊ณ์ ํธ๋ญ1์ด๋ผ๋ ๋์ผํ ํํฐ์ ํค๋ฅผ ์ ์กํ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ์ธ์ ๋ ๊ฐ์ ์ค๋๋ก ์ด๋ํ๋ค.
-
๊ทธ๋ฌ๋ฏ๋ก ํธ๋ญ 1์ ๋ค์ ๋ฐ์ดํฐ ์ง์ ์ ์ค๋ 1๋ก๊ฐ๊ณ , ํธ๋ญ3์ ๋ค์ ๋ฐ์ดํฐ ์ง์ ๋ ์ค๋ 1๋ฒ์ผ๋ก ๊ณ์ ์ด๋ํ๋ค.
- ๊ทธ๋ฌ๋ฏ๋ก ํธ๋ญ 100๋์ ์ค๋ 5๊ฐ๊ฐ ์๋ค๊ณ ํ๋ฉด ๊ฐ ์ค๋๋ ํ๊ท ์ ์ผ๋ก 20๋์ ํธ๋ญ์ ๊ฐ์ง๊ฒ ๋ ๊ฒ์ด๋ค.
- ํ์ง๋ง ํธ๋ญ๊ณผ ๊ฐ๊ฐ์ ์ค๋ ์ฌ์ด๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ์๋๋ค.
- Kinesis๊ฐ ํํฐ์ ํค๋ฅผ ํด์ํด์ ์ด๋ ์ค๋๋ก ๋ณด๋ผ์ง ๊ฒฐ์ ํ๋ค.
- ๋ค์๋งํด, ์์ ๋ ํํฐ์ ํค๋ฅผ ์ป์ผ๋ฉด ๋ฐ๋ก ํธ๋ญ์ด ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ์ค๋๋ก ์ ๋ฌํ๊ณ , ๊ทธ๋ฌ๋ฉด ์ค๋ ๋ ๋ฒจ์์ ๊ฐ ํธ๋ญ์ ์์์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์๊ฒ ๋ฉ๋๋ค.
Ordering data into SQS
SQS ํ์ค๋ฐฉ์์๋ ์์๊ฐ ์์ต๋๋ค.
๊ทธ๋์ SQS FIFO ๋ผ๋ ์ ์ ์ ์ถ ๋ฐฉ์์ด ์์ต๋๋ค.
- ์ด SQS FIFIO์ ๊ทธ๋ฃน ID๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ชจ๋ ๋ฉ์์ง๊ฐ ์๋น๋๋ ๋ฐฉ์์ ๋ณด๋ด์ง ์์์ ๋ฐ๋ฅด๋ฉฐ ์๋น์๋ ํ๋๋ง ์กด์ฌํ๋ค.
- ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ต์ ์ด ๋ค์ํ๋ฐ, SQS FIFO ๋๊ธฐ์ด์ ์ ์ก๋๋ ์ค์ด๋ค.
- ๊ทธ๋ฌ๋ฉด ์ ์ก๋๋ ์์๋๋ก ์๋น์๊ฐ ์์ ๋ฐ์ ๊ฒ์ด๋ค. ๋ณด๋ค์ํผ ์๋น์๋ ํ๋์ด๊ธฐ ๋๋ฌธ์ ๋ ๋ฐฐ์น์ ๋ฉ์์ง๋ฅผ ์๋นํ
- ๋ฐ๋ผ์ ์ ์ ์ ์ถ ๋ฐฉ์์ผ๋ก๋ ํ๋จํ๊ธฐ๊ฐ ์ฝ๋ค. ์๋น์๋ ํ๋๋ง ๊ฐ์ง์ ์๋ค.
-
ํธ๋ญ์ด ์๋ค๋ฉด, ๋ชจ๋ ํธ๋ญ์ด FIFO ๋๊ธฐ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๋ผ๋ ์๋น์๋ ํ๋๋ฟ์ด๋ค.
- ๋ง์ฝ ์๋น์ ์ซ์๋ฅผ ์ค์ผ์ผ๋งํ๊ณ ์๋ก ์ฐ๊ด๋ ๋ฉ์์ง๋ฅผ ๊ทธ๋ฃนํํ๋ ค๋ ๊ฒฝ์ฐ ๊ทธ๋ฃนID๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- Kinesis ์ ํํฐ์ ํค์ ๊ฐ๋ ์ด ๋น์ทํ๋ค.
- ๊ทธ๋ฃน ID๋ฅผ ์ฌ์ฉํ๋ฉด FIFO ๋๊ธฐ์ด์ FIFO ๋ด๋ถ์ ๋ ๊ฐ ๊ทธ๋ฃน์ด ์๊ธฐ๊ณ , ์ ์ํ ๊ทธ๋ฃน๋ง๋ค ๊ฐ๊ฐ ์๋น์๋ ๊ฐ์ง ์ ์๊ฒ๋๋ค.
- ๊ทธ๋ฃนID๊ฐ ๋ง์์ง์๋ก ์๋น์๋ ๋ง์์ง๋ค.
Kinesis vs SQS ordering
Kinesis์ SQS์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด์
- ํธ๋ญ 100๋๊ฐ ์๊ณ , Kinesis ์ค๋๊ฐ 5๊ฐ, SQS FIFO ๋๊ธฐ์ด์ด 1๊ฐ๋ผ๋ฉด,
- Kinesis Data Streams
- Kinesis ๋ฐ์ดํฐ ์คํธ๋ฆผ์์ ํ๊ท ์ ์ผ๋ก ๊ฐ์ง๋ ๊ฐ์ ์ค๋๋น ํธ๋ญ 20๋๊ฐ ๋ ๊ฒ์ด๋ค.
- ํด์ ๊ธฐ๋ฅ ๋๋ถ์ ๊ฐ ํธ๋ญ์ ํ๋์ ์ค๋์ ์ง์ ๋๊ณ ํด๋น ์ค๋์ ๊ณ์ ๋จธ๋ฌผ๊ฒ์ด๋ค.
- ๊ทธ๋ฆฌ๊ณ ํธ๋ญ ๋ฐ์ดํฐ๋ ๊ฐ ์ค๋์ ์์๋๋ก ์ ๋ ฌ๋๋ค.
- ํ์ง๋ง ๋์์ ๊ฐ์ง ์ ์๋ ์ต๋ ์๋น์ ๊ฐ์๋ 5๊ฐ๋ฟ์ด๋ค.
- ์ค๋๊ฐ 5๊ฐ์ด๊ณ , ์ค๋๋ง๋ค ํ๋์ ์๋น์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- Kinesis ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ค๋๊ฐ 5๊ฐ์ธ ๊ฒฝ์ฐ์ ์ด๋น ์ต๋ 5MB์ ๋ฐ์ดํฐ๋ฅผ ์์ ๊ฐ๋ฅํ๋ฉฐ, ์ฒ๋ฆฌ๋์ด ๊ฝค๋ง์ํธ
- SQS FIFO
- SQS FIFO ๋๊ธฐ์ด์ ํ๋๋ฟ์ด๋ค.
- ์ค๋ ๋ฐ ํํฐ์ ์ ์ ์ํ ํ์์์ด FIFO ๋๊ธฐ์ด์ด ํ๋๋ง ์๋ค.
- ํธ๋ญ์ด 100๋ ์์ผ๋ฏ๋ก ๊ฐ ํธ๋ญ ID์ ์์ํ๋ ๊ทธ๋ฃน ID๋ฅผ 100๊ฐ ์์ฑํ๋ค.
- ์ฆ ๊ทธ๋ฃนID๊ฐ 100๊ฐ๊ฐ ๋๊ณ , ์๋น์๋ ์ต๋ 100๊ฐ๊ฐ ๋ ์ ์๋ค.
- ๊ฐ ์๋น์๊ฐ ํน์ ๊ทธ๋ฃนID์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ท๋ชจ๋ฅผ ๋ณด๋ฉด SQS FIFO์์ ์ต๋ ์ด๋น 300, ํน์ ๋ฐฐ์น๋ฅผ ์ฌ์ฉํ๋ฉด 3,000๊ฐ์ ๋ฉ์์ง๋ฅผ ๊ฐ์ง๋ค.
์ด๋ ๋ฏ ์๋ก ๋ค๋ฅธ ์๋น, ์์ฐ ๊ทธ๋ฆฌ๊ณ ์ ๋ ฌ๋ชจ๋ธ์์ ๊ธฐ์ตํด์ผํ ๊ฒ์ ์ด๊ฒ์ด๋ค.
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ ์ ํ ๋ชจ๋ธ์ ๋ฌ๋ผ์ง๋ฉฐ, SQS FIFO๋ ๊ทธ๋ฃนID ์ซ์์ ๋ฐ๋ฅธ ๋์ ์๋น์ ์๋ฅผ ์ํ ๋ ์ข๋ค.
- Kinesis ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ์๋ฅผ ๋ค์ด ํธ๋ญ 10,000๋๊ฐ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ๋ Kinesis Data Streams์ ์ค๋๋น ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋์ ๋๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ