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