Record
์นดํ์นด์์ **๋ ์ฝ๋(Record)**๋ ๋ฉ์์ง(Message) ๋๋ **์ด๋ฒคํธ(Event)**๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ํ๋ก๋์๊ฐ ๋ฐํํ๊ณ ์ปจ์๋จธ๊ฐ ์๋นํ๋ ๋ฐ์ดํฐ์ ์ต์ ๋จ์์ ๋๋ค. ๋ ์ฝ๋๋ ๋จ์ํ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ๊ฐ ์๋๋ผ, ๋ถ์ฐ ์์คํ ์์ ํจ์จ์ฑ๊ณผ ์ ํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ํน์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
1. ๋ ์ฝ๋์ ํต์ฌ ๊ตฌ์ฑ ์์
์นดํ์นด์ ๋ ์ฝ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ ๋ค ๊ฐ์ง ์ฃผ์ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๊ฐ (Value)
๋ ์ฝ๋์ ์ค์ ๋ฐ์ดํฐ์ ๋๋ค. (์: ์ฌ์ฉ์ ๋ก๊ทธ ๋ด์ฉ, ์ฃผ๋ฌธ ์ ๋ณด JSON, ์ผ์ ์ธก์ ๊ฐ)
์ปจ์๋จธ๊ฐ ํ์๋ก ํ๋ ์ค์ง์ ์ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
ํค (Key)
์ ํ ์ฌํญ์ด์ง๋ง ๋งค์ฐ ์ค์ํ๋ฉฐ, ๋ ์ฝ๋์ ์๋ณ์ ์ญํ ์ ํฉ๋๋ค. (์: UserID, OrderID)
์์ ๋ณด์ฅ ๋ฐ ๋ฐ์ดํฐ ๋ถ๋ฐฐ(ํํฐ์ ๋) ๊ธฐ์ค์ด ๋ฉ๋๋ค. ๋์ผ ํค๋ ํญ์ ๋์ผ ํํฐ์ ์ ์ ์ฅ๋ฉ๋๋ค.
ํ์์คํฌํ (Timestamp)
๋ ์ฝ๋๊ฐ ์์ฑ๋ ์๊ฐ ๋๋ ๋ธ๋ก์ปค์ ์ ์ฅ๋ ์๊ฐ์ ๋๋ค.
๋ฐ์ดํฐ์ ์๊ฐ ์์๋ฅผ ์ถ์ ํ๊ณ ์๊ฐ ๊ธฐ๋ฐ ๋ณด์กด ์ ์ฑ ์ ํ์ฉ๋ฉ๋๋ค.
ํค๋ (Headers)
์ ํ ์ฌํญ์ด๋ฉฐ, ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์์ญ์ ๋๋ค. (์: ์ถ์ ID, ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ )
๋ ์ฝ๋์ ๋ด์ฉ๊ณผ ์ง์ ๊ด๋ จ์ด ์์ง๋ง, ๋ผ์ฐํ ์ด๋ ์ฒ๋ฆฌ ๋ก์ง์ ํ์ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
2. ๋ ์ฝ๋์ ๋ถ๋ณ์ฑ (Immutability)
์นดํ์นด ๋ ์ฝ๋์ ๊ฐ์ฅ ์ค์ํ ํน์ฑ ์ค ํ๋๋ ๋ถ๋ณ์ฑ์ ๋๋ค.
ํ ๋ฒ ๊ธฐ๋ก๋๋ฉด ์์ํ: ๋ ์ฝ๋๊ฐ ํํฐ์ ์ ๊ธฐ๋ก๋๊ณ ์คํ์ ์ด ๋ถ์ฌ๋ ํ์๋ ๊ทธ ๋ด์ฉ(ํค, ๊ฐ, ํ์์คํฌํ ๋ฑ)์ด๋ ์์๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
๋ก๊ทธ ์ค์ฌ ์ํคํ ์ฒ: ์นดํ์นด๊ฐ **๋ถ์ฐ ์ปค๋ฐ ๋ก๊ทธ(Distributed Commit Log)**๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ง์น ํ๊ณ ์ฅ๋ถ์ฒ๋ผ, ๋ชจ๋ ์ด๋ฒคํธ๋ ๋ฐ์ํ ์์๋๋ก ๊ธฐ๋ก๋๋ฉฐ, ์์ ์ ์ค์ง ์๋ก์ด ์ด๋ฒคํธ(์์ ๋๋ ์ญ์ ์ด๋ฒคํธ)๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก๋ง ์ด๋ฃจ์ด์ง๋๋ค.
๋จ์์ฑ๊ณผ ์์ ์ฑ: ๋ถ๋ณ์ฑ์ ๋ธ๋ก์ปค์ ์ญํ ์ ๋จ์ํํ๊ณ , ๋ณต์ ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ์ปจ์๋จธ๊ฐ ์์ฌํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฒ๋ฆฌ(Replay)ํ ์ ์๋ ๊ทผ๊ฑฐ๊ฐ ๋ฉ๋๋ค.
3. ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ (Serialization and Deserialization)
๋ ์ฝ๋๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๊ฑฐ๋ ๋์คํฌ์ ์ ์ฅ๋ ๋, ๊ทธ๋ฆฌ๊ณ ์ปจ์๋จธ๊ฐ ์ด๋ฅผ ๋ค์ ์ฝ์ด ์ฒ๋ฆฌํ ๋ ์ง๋ ฌํ/์ญ์ง๋ ฌํ ๊ณผ์ ์ด ํ์์ ์ผ๋ก ์ผ์ด๋ฉ๋๋ค.
์ง๋ ฌํ (Serialization): ํ๋ก๋์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด(์: Java Object, JSON ๋ฌธ์์ด)๋ฅผ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก ๊ฐ๋ฅํ ๋ฐ์ดํธ ๋ฐฐ์ด(byte array) ํํ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค. ์นดํ์นด ๋ธ๋ก์ปค๋ ์ด ๋ฐ์ดํธ ๋ฐฐ์ด ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์ญ์ง๋ ฌํ (Deserialization): ์ปจ์๋จธ๊ฐ ๋ธ๋ก์ปค๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํธ ๋ฐฐ์ด์ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๊ฐ์ฒด ํํ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค.
์คํค๋ง์ ์ค์์ฑ: ์ง๋ ฌํ/์ญ์ง๋ ฌํ ์ ๋ฐ์ดํฐ์ ํํ๋ฅผ ์ ์ํ๋ **์คํค๋ง(Schema)**๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Avro, Protobuf, JSON Schema ๋ฑ์ด ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ์คํค๋ง ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํด ๊ด๋ฆฌ๋ฉ๋๋ค.
4. ๋ ์ฝ๋๊ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ
๋ ์ฝ๋์ ๊ตฌ์กฐ๋ ์นดํ์นด์ ๊ณ ์ฑ๋ฅ์ ๋ท๋ฐ์นจํ๋ ์ฌ๋ฌ ๊ธฐ์ ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์์ถ (Compression): ๋ ์ฝ๋๋ฅผ ๋ธ๋ก์ปค๋ก ์ ์กํ๊ธฐ ์ ์ ๋ฌถ์(Batch) ๋จ์๋ก ์์ถํ ์ ์์ต๋๋ค. ์นดํ์นด๋ ์ด ์์ถ๋ ์ํ ๊ทธ๋๋ก ๋ ์ฝ๋๋ฅผ ์ ์ฅํ๊ณ , ์ปจ์๋จธ๊ฐ ๊ฐ์ ธ๊ฐ ๋๊น์ง ์ ์งํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ๋์ญํญ ์ฌ์ฉ๋๊ณผ ๋์คํฌ I/O๋ฅผ ํฌ๊ฒ ์ค์ฌ ์ฒ๋ฆฌ๋์ ๋์ ๋๋ค.
๋ฐฐ์น ์ฒ๋ฆฌ (Batching): ํ๋ก๋์๋ ๋ ์ฝ๋๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ์กํ์ง ์๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์ผ์ ํฌ๊ธฐ ๋๋ ์๊ฐ๋งํผ ๋ ์ฝ๋๋ฅผ ๋ชจ์์(Batching) ํ ๋ฒ์ ๋ธ๋ก์ปค๋ก ์ ์กํฉ๋๋ค. ์ด๋ **๋คํธ์ํฌ ์๋ณต ํ์(RTT)**๋ฅผ ์ต์ํํ์ฌ ์ฒ๋ฆฌ๋์ ๊ทน๋ํํฉ๋๋ค.
ํค์ ํํฐ์ ๋: ๋ ์ฝ๋์ ํค๋ ๋ฐ์ดํฐ์ ๋ถ์ฐ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค. ํค๋ฅผ ์ ์ ํ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํฐ์ ์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ์ํค๋ ๊ฒ์ด ๋ธ๋ก์ปค ๊ฐ์ ๋ถํ ๊ท ํ์ ๋ง์ถ๊ณ ์์คํ ์ ์ฒด์ ์ฑ๋ฅ์ ์ ์งํ๋ ํต์ฌ์ ๋๋ค.
Last updated