[Kafka] ν† ν”½κ³Ό νŒŒν‹°μ…˜, λ ˆμ½”λ“œ

2023. 2. 13. 01:19Β· #️⃣ Data Engineering/Kafka
λͺ©μ°¨
  1. πŸ’œ Kafka μ»΄ν¬λ„ŒνŠΈ (2) - ν† ν”½κ³Ό νŒŒν‹°μ…˜, λ ˆμ½”λ“œ
  2. 1. ν† ν”½κ³Ό νŒŒν‹°μ…˜
  3. 2. λ ˆμ½”λ“œ
  4. (1) μ˜€ν”„μ…‹κ³Ό νƒ€μž„μŠ€νƒ¬ν”„
  5. (2) λ©”μ‹œμ§€ 킀와 κ°’
  6. (3) μ˜€ν”„μ…‹κ³Ό 헀더

πŸ’œ Kafka μ»΄ν¬λ„ŒνŠΈ (2) - ν† ν”½κ³Ό νŒŒν‹°μ…˜, λ ˆμ½”λ“œ

μ±… 'μ•„νŒŒμΉ˜ μΉ΄ν”„μΉ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œκ·Έλž˜λ° with μžλ°” - μ΅œμ›μ˜ μ§€μŒ'을 κ³΅λΆ€ν•˜λ©° μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

 

1. ν† ν”½κ³Ό νŒŒν‹°μ…˜

 ν† ν”½ : μΉ΄ν”„μΉ΄μ—μ„œ 데이터λ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” λ‹¨μœ„
 νŒŒν‹°μ…˜  : 토픽은 1개 μ΄μƒμ˜ νŒŒν‹°μ…˜μ„ μ†Œμœ ν•¨

  • νŒŒν‹°μ…˜μ—λŠ” ν”„λ‘œλ“€μ„œκ°€ 보낸 데이터듀이 μ €μž₯λ˜λŠ”λ° 이 데이터λ₯Ό λ ˆμ½”λ“œ(record)라고 λΆ€λ₯Έλ‹€. 즉 ν”„λ‘œλ“€μ„œκ°€ μ „μ†‘ν•œ λ ˆμ½”λ“œλŠ” νŒŒν‹°μ…˜μ— μ €μž₯λœλ‹€.
  • νŒŒν‹°μ…˜μ€ μΉ΄ν”„μΉ΄ λ³‘λ ¬μ²˜λ¦¬μ˜ ν•΅μ‹¬μœΌλ‘œ 그룹으둜 묢인 μ»¨μŠˆλ¨Έλ“€μ΄ λ ˆμ½”λ“œλ₯Ό λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ 맀칭됨
  • 컨슈머의 μ²˜λ¦¬λŸ‰μ΄ ν•œμ •λœ 상황이라면, κ°€μž₯ 쒋은 방법은 컨슈머의 개수λ₯Ό 늘렀 μŠ€μΌ€μΌ μ•„μ›ƒν•˜λŠ” 것이닀. 컨슈머 개수λ₯Ό 늘림과 λ™μ‹œμ— νŒŒν‹°μ…˜ κ°œμˆ˜λ„ 늘리면 μ¦κ°€ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
  • νŒŒν‹°μ…˜μ€ 큐(queue)와 λΉ„μŠ·ν•œ ꡬ쑰둜 FIFO ꡬ쑰와 같이 λ¨Όμ € λ“€μ–΄κ°„ λ ˆμ½”λ“œλŠ” μ»¨μŠˆλ¨Έκ°€ λ¨Όμ € κ°€κ²Œλœλ‹€. λ‹€λ§Œ 데이터λ₯Ό κ°€μ Έκ°„λ‹€κ³  λ ˆμ½”λ“œλŠ” μ‚­μ œλ˜μ§€ μ•ŠλŠ”λ‹€. μ΄λŸ¬ν•œ νŠΉμ§•μœΌλ‘œ μ—¬λŸ¬ 컨슈머 그룹듀이 ν† ν”½μ˜ 데이터λ₯Ό μ—¬λŸ¬λ²ˆ κ°€μ Έκ°ˆ 수 μžˆλ‹€.

 

의미 μžˆλŠ” ν† ν”½ 이름 μž‘λͺ…법 ν† ν”½ 이름은 λ°μ΄ν„°μ˜ μ–Όκ΅΄λ‘œ, ν† ν”½ 이름을 λͺ¨ν˜Έν•˜κ²Œ μž‘μ„±ν•˜λ©΄ μœ μ§€λ³΄μˆ˜ μ‹œ 큰 어렀움을 κ²ͺ을 수 μžˆλ‹€.

μ΅œμ†Œν•œ ν† ν”½ 이름을 톡해 κ°œλ°œν™˜κ²½κ³Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 데이터 νƒ€μž… 등을 μœ μΆ”ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

ν† ν”½ μž‘λͺ…μ˜ ν…œν”Œλ¦Ώκ³Ό μ˜ˆμ‹œ

  • <ν™˜κ²½>.<νŒ€-λͺ…>.<μ• ν”Œλ¦¬μΌ€μ΄μ…˜-λͺ…>.<λ©”μ‹œμ§€-νƒ€μž…>
    • ex. prd.marketing-team.sms-platform.json
  • <ν”„λ‘œμ νŠΈ-λͺ…>.<μ„œλΉ„μŠ€-λͺ…>.<ν™˜κ²½>.<이벀트-λͺ…>
    • ex. `commerce.payment.prd.notification1
  • <ν™˜κ²½>.<μ„œλΉ„μŠ€-λͺ…>.<JIRA-번호>..<λ©”μ‹œμ§€-νƒ€μž…>
    • ex. dev.email-sender.jira-12324.email-vo-custom
  • <μΉ΄ν”„μΉ΄-ν΄λŸ¬μŠ€ν„°-λͺ…>.<ν™˜κ²½>.<μ„œλΉ„μŠ€-λͺ…>.<λ©”μ‹œμ§€-νƒ€μž…>
    • ex. aws-kafka.live.marketing-platform.json



2. λ ˆμ½”λ“œ

λ ˆμ½”λ“œλŠ” νƒ€μž„μŠ€νƒ¬ν”„, λ©”μ‹œμ§€ ν‚€, λ©”μ‹œμ§€ κ°’, μ˜€ν”„μ…‹, ν—€λ”λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
λΈŒλ‘œμ»€μ— 적재된 λ ˆμ½”λ“œλŠ” μˆ˜μ • λΆˆκ°€. 둜그 보유 κΈ°κ°„ λ˜λŠ” μš©λŸ‰μ— λ”°λΌμ„œλ§Œ μ‚­μ œλœλ‹€.

(1) μ˜€ν”„μ…‹κ³Ό νƒ€μž„μŠ€νƒ¬ν”„

ν”„λ‘œλ“€μ„œκ°€ μƒμ„±ν•œ λ ˆμ½”λ“œκ°€ 브둜컀둜 μ „μ†‘λ˜λ©΄, μ˜€ν”„μ…‹κ³Ό νƒ€μž„μŠ€νƒ¬ν”„κ°€ μ§€μ •λ˜μ–΄ μ €μž₯λœλ‹€.

  • νƒ€μž„μŠ€νƒ¬ν”„λŠ” ν”„λ‘œλ“€μ„œμ—μ„œ λ ˆμ½”λ“œκ°€ μƒμ„±λœ μ‹œμ (CreatTime)의 μœ λ‹‰μŠ€ νƒ€μž„μ΄ μ„€μ •λœλ‹€. ν”„λ‘œλ“€μ„œκ°€ λ ˆμ½”λ“œλ₯Ό 생성할 λ•Œ μž„μ˜μ˜ νƒ€μž„μŠ€νƒ¬ν”„ 값을 μ„€μ •ν•  수 있고, ν† ν”½ 섀정에 따라 λΈŒλ‘œμ»€μ— 적재된 μ‹œκ°„(LogAppendTime)으둜 섀정될 수 μžˆλ‹€.

 

(2) λ©”μ‹œμ§€ 킀와 κ°’

λ©”μ‹œμ§€ ν‚€λŠ” λ©”μ‹œμ§€ 값을 μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•˜κ±°λ‚˜ λ©”μ‹œμ§€ κ°’μ˜ μ’…λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

  • λ©”μ‹œμ§€ ν‚€λ₯Ό μ‚¬μš©ν•˜λ©΄ ν”„λ‘œλ“€μ„œκ°€ 토픽에 λ ˆμ½”λ“œλ₯Ό 전솑할 λ•Œ λ©”μ‹œμ§€ ν‚€μ˜ ν•΄μ‹œκ°’μ„ ν† λŒ€λ‘œ νŒŒν‹°μ…˜μ„ μ§€μ •ν•œλ‹€. (λ™μΌν•œ λ©”μ‹œμ§€ ν‚€λŠ” λ™μΌν•œ νŒŒν‹°μ…˜μ— 적재됨)
    • λ‹€λ§Œ μ–΄λŠ νŒŒν‹°μ…˜μ— 지정될 μ§€ μ•Œ 수 μ—†κ³ , νŒŒν‹°μ…˜ κ°œμˆ˜κ°€ λ³€κ²½λ˜λ©΄ λ©”μ‹œμ§€ 킀와 νŒŒν‹°μ…˜ 맀칭이 λ‹¬λΌμ§€λ―€λ‘œ μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.
    • λ©”μ‹œμ§€ ν‚€λ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄ null둜 μ„€μ •λ˜κ³ , null둜 μ„€μ •λœ λ ˆμ½”λ“œλŠ” ν”„λ‘œλ“€μ„œ κΈ°λ³Έ μ„€μ • νŒŒν‹°μ…”λ„ˆμ— λ”°λΌμ„œ νŒŒν‹°μ…˜μ— λΆ„λ°°λœλ‹€.

λ©”μ‹œμ§€ κ°’μ—λŠ” μ‹€μ§ˆμ  데이터가 λ“€μ–΄μžˆλ‹€.
- λ©”μ‹œμ§€ 킀와 λ©”μ‹œμ§€ 값은 μ§λ ¬ν™”λ˜μ–΄ 브둜컀둜 μ „μ†‘λ˜λ―€λ‘œ μ»¨μŠˆλ¨Έκ°€ μ΄μš©ν• λ•ŒλŠ” λ°˜λ“œμ‹œ λ™μΌν•œ ν˜•νƒœμ˜ 역직렬화λ₯Ό ν•΄μ•Όν•œλ‹€.

 

(3) μ˜€ν”„μ…‹κ³Ό 헀더

λ ˆμ½”λ“œμ˜ μ˜€ν”„μ…‹μ€ μ»¨μŠˆλ¨Έκ°€ 데이터λ₯Ό κ°€μ Έκ°ˆ λ•Œ μ‚¬μš©λ˜λ©°, 0 μ΄μƒμ˜ 숫자둜 이루어져 μžˆλ‹€. λ ˆμ½”λ“œμ˜ μ˜€ν”„μ…‹μ€ 직접 지정이 λΆˆκ°€ν•˜λ©° λΈŒλ‘œμ»€μ— μ €μž₯될 λ•Œ 이전에 μ „μ†‘λœ λ ˆμ½”λ“œμ˜ μ˜€ν”„μ…‹ + 1 κ°’μœΌλ‘œ μƒμ„±λœλ‹€.

ν—€λ”λŠ” λ ˆμ½”λ“œμ˜ 좔가적인 정보λ₯Ό 담은 메타데이터 μ €μž₯μ†Œ μš©λ„λ‘œ μ‚¬μš©ν•œλ‹€.
ν—€λ”λŠ” ν‚€/κ°’ ν˜•νƒœλ‘œ 데이터λ₯Ό μΆ”κ°€ν•˜μ—¬ λ ˆμ½”λ“œμ˜ 속성(μŠ€ν‚€λ§ˆ 버전 λ“±)을 μ €μž₯ν•˜μ—¬ μ»¨μŠˆλ¨Έμ—μ„œ μ°Έμ‘°ν•  수 μžˆλ‹€.

'#️⃣ Data Engineering > Kafka' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Kafka] Kafka κ°œλ…κ³Ό κ΅¬μ„±μš”μ†Œ 및 원리  (0) 2023.03.03
[Kafka] Kafka ν΄λΌμ΄μ–ΈνŠΈ  (0) 2023.02.13
[Kafka] Kafka κ°œλ…κ³Ό μ»΄ν¬λ„ŒνŠΈ  (0) 2023.02.13
  1. πŸ’œ Kafka μ»΄ν¬λ„ŒνŠΈ (2) - ν† ν”½κ³Ό νŒŒν‹°μ…˜, λ ˆμ½”λ“œ
  2. 1. ν† ν”½κ³Ό νŒŒν‹°μ…˜
  3. 2. λ ˆμ½”λ“œ
  4. (1) μ˜€ν”„μ…‹κ³Ό νƒ€μž„μŠ€νƒ¬ν”„
  5. (2) λ©”μ‹œμ§€ 킀와 κ°’
  6. (3) μ˜€ν”„μ…‹κ³Ό 헀더
'#️⃣ Data Engineering/Kafka' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Kafka] Kafka κ°œλ…κ³Ό κ΅¬μ„±μš”μ†Œ 및 원리
  • [Kafka] Kafka ν΄λΌμ΄μ–ΈνŠΈ
  • [Kafka] Kafka κ°œλ…κ³Ό μ»΄ν¬λ„ŒνŠΈ
HyeM207
HyeM207
"Reflections and Growth Through Records" νšŒκ³ μ™€ 기둝을 ν†΅ν•œ μ„±μž₯으둜
HYEM's Storage"Reflections and Growth Through Records" νšŒκ³ μ™€ 기둝을 ν†΅ν•œ μ„±μž₯으둜
HyeM207
HYEM's Storage
HyeM207
  • ALL (115)
    • #️⃣ CS (Computer Science) (5)
      • Database (2)
      • SQL (2)
      • Git (1)
    • #️⃣ Data Engineering (43)
      • Airflow (18)
      • Spark (8)
      • Snowflake (2)
      • BI,DashBoard (4)
      • ELK Stack (2)
      • Hadoop (5)
      • Kafka (4)
    • #️⃣ Cloud&Container (16)
      • AWS (8)
      • GCP (1)
      • Docker (6)
      • Kubernetes (1)
    • #️⃣ Project 및 κ°œλ°œμΌμ§€ (37)
      • Mini Project (5)
      • κ°œλ°œμΌμ§€ (9)
      • Algorithm 문제 풀이 (20)
    • #️⃣ μ±… 리뷰 (4)
    • #️⃣ νšŒκ³ κΈ€&ν”„λ‘œμ νŠΈ ν›„κΈ° (10)

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝
hELLO Β· Designed By μ •μƒμš°.v4.2.2
HyeM207
[Kafka] ν† ν”½κ³Ό νŒŒν‹°μ…˜, λ ˆμ½”λ“œ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

κ°œμΈμ •λ³΄

  • ν‹°μŠ€ν† λ¦¬ ν™ˆ
  • 포럼
  • 둜그인

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.