"μνμΉ μΉ΄νμΉ΄ μ ν리μΌμ΄μ νλ‘κ·Έλλ° with μλ°"
κ΅μ¬μ νμ΅ λ΄μ©μ μ 리νμμ΅λλ€
μ°μ ν ν½μ΄λ?
ν ν½μ μΉ΄νμΉ΄μμ λ°μ΄ν°λ₯Ό ꡬλΆνκΈ° μν΄ μ¬μ©νλ λ¨μμ!
=> ν ν½μ 1κ° μ΄μμ νν°μ μ μμ νκ³ μμ
(νν°μ μλ νλ‘λμκ° λ³΄λΈ λ°μ΄ν°λ€μ΄ λ€μ΄κ° μ μ₯λλλ° μ΄ λ°μ΄ν°λ₯Ό 'λ μ½λ' λΌκ³ λΆλ¦)
λ μ½λμ λν΄ μμΈν μμλ³΄κ³ κ°μ
λ μ½λλ νμμ€ν¬ν, λ©μμ§ ν€, λ©μμ§ κ°, μ€νμ , ν€λλ‘ κ΅¬μ±λμ΄ μμ
νλ‘λμκ° μμ±ν λ μ½λκ° λΈλ‘μ»€λ‘ μ μ‘λλ©΄ μ€νμ κ³Ό νμμ€ν¬νκ° μ§μ λμ΄ μ μ₯λ¨
=> λΈλ‘컀μ νλ² μ μ¬λ λ μ½λλ μμ ν μ μκ³ λ‘κ·Έ 리ν μ κΈ°κ° λλ μ©λμ λ°λΌμλ§ μμ λ¨
λ‘κ·Έ 리ν μ μ΄λ μΉ΄νμΉ΄ λΈλ‘컀μ μ μ₯λ λ©μμ§(λ μ½λ)λ₯Ό μΌλ§λ μ€λ 보κ΄ν μ§λ₯Ό κ²°μ νλ μ μ± μ
=> μΉ΄νμΉ΄λ λ°μ΄ν°λ₯Ό λ‘κ·Έ(log)λΌλ ννλ‘ λμ€ν¬μ μ μ₯νκ³ , μ΄ λ°μ΄ν°κ° μΌλ§λ μ€λ μ μ§λ μ§λ₯Ό 리ν μ μ€μ μ λ°λΌ κ΄λ¦¬
νμμ€ν¬νλ νλ‘λμμμ ν΄λΉ λ μ½λκ° μμ±λ μμ μ μ λμ€ νμμ΄ μ€μ λ¨
(컨μλ¨Έλ μ΄λ₯Ό ν λλ‘ λ μ½λκ° μΈμ μμ±λμλμ§ μ μ μμ)
νμ§λ§ νλ‘λμκ° λ μ½λλ₯Ό μμ±ν λ μμμ νμμ€ν¬ν κ°μ μ€μ ν μ μκ³ , ν ν½ μ€μ μ λ°λΌ λΈλ‘컀μ μ μ¬λ μκ°(LogAppendTime)μΌλ‘ μ€μ λ μλ μμ
λ©μμ§ ν€λ λ©μμ§ κ°μ μμλλ‘ μ²λ¦¬νκ±°λ λ©μμ§ κ°μ μ’ λ₯λ₯Ό λνλ΄κΈ° μν΄ μ¬μ©λ¨
(νλ‘λμκ° ν ν½μ λ μ½λλ₯Ό μ μ‘ν λ λ©μμ§ ν€μ ν΄μκ°μ ν λλ‘ νν°μ μ μ§μ νκ²λ¨)
=> λμΌν λ©μμ§ ν€λΌλ©΄ λμΌ νν°μ μ λ€μ΄κ°
(μ΄λ νν°μ μ μ§μ λ μ§ μ μ μκ³ νν°μ κ°μκ° λ³κ²½λλ©΄ λ©μμ§ν€μ νν°μ 맀μΉμ΄ λ¬λΌμ§λ―λ‘ μ£Όμ)
λ©μμ§ ν€λ₯Ό μ μΈνμ§ μμΌλ©΄ nullλ‘ μ€μ λκ³ μ΄λ° λ μ½λλ νλ‘λμ κΈ°λ³Έ μ€μ νν°μ λμ λ°λΌμ νν°μ μ λΆλ°°λμ΄ μ μ¬
λ©μμ§ κ°μλ μ€μ§μ μΌλ‘ μ²λ¦¬ν λ°μ΄ν°κ° λ€μ΄μμ
λ©μμ§ ν€μ κ°μ μ§λ ¬νλμ΄ λΈλ‘μ»€λ‘ μ μ‘λκΈ° λλ¬Έμ 컨μλ¨Έκ° μ΄μ©ν λ μ§λ ¬νν ννμ λμΌν ννλ‘ μμ§λ ¬νλ₯Ό μνν΄μΌ ν¨
(νλ‘λμκ° StringSerializerλ‘ μ§λ ¬νν λ©μμ§ κ°μ 컨μλ¨Έκ° IntegerDeserializerλ‘ μμ§λ ¬ννλ©΄ μ μμ μΈ λ°μ΄ν°λ₯Ό μ»μ μ X)
λ μ½λμ μ€νμ μ 0 μ΄μμ μ«μλ‘ μ΄λ£¨μ΄μ Έ μκ³ μ΄λ μ§μ μ§μ ν μ μμΌλ©° λΈλ‘컀μ μ μ₯λ λ μ΄μ μ μ μ‘λ λ μ½λμ μ€νμ μ +1 κ°μΌλ‘ μμ±λ¨
=> μ΄ μ€νμ μ μΉ΄νμΉ΄ 컨μλ¨Έκ° λ°μ΄ν°λ₯Ό κ°μ Έκ° λ μ¬μ©λ¨
(컨μλ¨Έ κ·Έλ£ΉμΌλ‘ μ΄λ£¨μ΄μ§ μΉ΄νμΉ΄ 컨μλ¨Έλ€μ΄ νν°μ μ λ°μ΄ν°λ₯Ό μ΄λκΉμ§ κ°μ Έκ°λμ§ λͺ νν μ§μ ν μ μμ)
ν€λλ λ μ½λμ μΆκ°μ μΈ μ 보λ₯Ό λ΄λ λ©νλ°μ΄ν° μ μ₯μ μ©λλ‘ μ¬μ©ν¨
(ν€/κ° ννλ‘ λ°μ΄ν°λ₯Ό μΆκ°νμ¬ λ μ½λμ μμ±μ μ μ₯νμ¬ μ»¨μλ¨Έμμ μ°Έμ‘° κ°λ₯)
=> κ·Έλμ κ²°λ‘ μ μΌλ‘λ κ·Έλ¦Όμ 보면 λ μ½λκ° ν ν½μ νν°μ μ μ μ₯λλ κ²μ λ³Ό μ μμ
νν°μ μ μΉ΄νμΉ΄μ λ³λ ¬μ²λ¦¬μ ν΅μ¬μΌλ‘μ¨ κ·Έλ£ΉμΌλ‘ λ¬ΆμΈ μ»¨μλ¨Έλ€μ΄ λ μ½λλ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν μ μλλ‘ λ§€μΉλ¨
=> 컨μλ¨Έμ μ²λ¦¬λμ΄ νμ λ μν©μμ λ§μ λ μ½λλ₯Ό λ³λ ¬λ‘ μ²λ¦¬νλ κ°μ₯ μ’μ λ°©λ²μ 컨μλ¨Έ μλ₯Ό λλ € μ€μΌμΌ μμ νλ κ²μ!
(컨μλ¨Έ κ°μλ₯Ό λλ¦Όκ³Ό λμμ νν°μ κ°μλ λ리면 μ²λ¦¬λμ΄ μ¦κ°νλ ν¨κ³Όλ₯Ό λ³Ό μ μμ)
νν°μ μ queueμ λΉμ·ν ꡬ쑰λΌκ³ μκ°νλ©΄ μ΄ν΄νκΈ° μ¬μ
FIFO ꡬ쑰μ κ°μ΄ λ¨Όμ λ€μ΄κ° λ μ½λλ 컨μλ¨Έκ° λ¨Όμ κ°μ Έκ°
(μΉ΄νμΉ΄μμλ pop κ°μ΄ λ μ½λλ₯Ό μμ νμ§ X)
=> μ΄λ¬ν νΉμ§ λλ¬Έμ ν ν½μ λ μ½λλ λ€μν λͺ©μ μ κ°μ§ μ¬λ¬ 컨μλ¨Έ κ·Έλ£Ήλ€μ΄ ν ν½μ λ°μ΄ν°λ₯Ό μ¬λ¬ λ² κ°μ Έκ° μ μμ
ν ν½ μ΄λ¦ μ μ½ μ‘°κ±΄
ν ν½ μ΄λ¦μ μμ±ν λ μ μ½ μ‘°κ±΄μ΄ μμ
- λΉ λ¬Έμμ΄ ν ν½ μ΄λ¦μ μ§μνμ§ μμ
- ν ν½ μ΄λ¦μ λ§μΉ¨ν νλ(.) λλ λ§μΉ¨ν λ(..)λ‘ μμ±λ μ μμ
- ν ν½ μ΄λ¦μ κΈΈμ΄λ 249μ λ―Έλ§μΌλ‘ μμ±λμ΄μΌ ν¨
- ν ν½ μ΄λ¦μ μμ΄ λμλ¬Έμμ μ«μ 0λΆν° 9 κ·Έλ¦¬κ³ λ§μΉ¨ν(.), μΈλλ°(_), νμ΄ν(-) μ‘°ν©μΌλ‘ μμ±ν μ μμ
(μ΄μΈμ λ¬Έμμ΄μ΄ ν¬ν¨λ ν ν½ μ΄λ¦μ μμ± λΆκ°) - μΉ΄νμΉ΄ λ΄λΆ λ‘μ§ κ΄λ¦¬ λͺ©μ μΌλ‘ μ¬μ©λλ 2κ° ν ν½(__consumer_offsets, __transaction_state)κ³Ό λμΌν μ΄λ¦μΌλ‘ μμ± λΆκ°λ₯
- μΉ΄νμΉ΄ λ΄λΆμ μΌλ‘ μ¬μ©νλ λ‘μ§ λλ¬Έμ ν ν½ μ΄λ¦μ λ§μΉ¨ν(.)μ μΈλλ°(_)κ° λμμ λ€μ΄κ°λ©΄ μλ¨
(μμ±μ κ°λ₯νλ μ¬μ© μ μ΄μκ° λ°μν μ μκΈ° λλ¬Έμ WARNING λ©μΈμ§κ° λ°μν¨) - μ΄λ―Έ μμ±λ ν ν½ μ΄λ¦μ λ§μΉ¨ν(.)λ₯Ό μΈλλ°(_)λ‘ λ°κΎΈλ κ²½μ°λ μ΄ λ°λμ κ²½μ° μ κ· ν ν½ μ΄λ¦κ³Ό λμΌνλ€λ©΄ μμ±ν μ μμ
(to.pic μ΄λ¦μ ν ν½μ΄ μμ±λμ΄ μλ€λ©΄ to_pic μ΄λ¦μ ν ν½μ μμ±ν μ μμ)
μλ―Έμλ ν ν½ μ΄λ¦ μλͺ λ°©λ²
ν ν½ μ΄λ¦μ λͺ¨νΈνκ² μμ±νλ©΄ μ μ§λ³΄μ μ ν° μ΄λ €μμ κ²ͺμ μ μμ
(μ΅μν ν ν½ μ΄λ¦μ ν΅ν΄ μ΄λ€ κ°λ°νκ²½μμ μ¬μ©λλ κ²μΈμ§ νλ¨ κ°λ₯ν΄μΌνκ³ μ΄λ€ μ΄ν리μΌμ΄μ
μμ μ΄λ€ λ°μ΄ν° νμ
μΌλ‘ μ¬μ©λλμ§ μ μΆν μ μμ΄μΌ ν¨!)
μ μ¬μμ 곡μ©μΌλ‘ μ¬μ©νκ³ μλ μΉ΄νμΉ΄λΌλ©΄ ν ν½μ ownershipμ κ°μ§ νμ μ΄λ¦μ μΆκ°νλ κ²λ κ³ λ €ν΄λ³Όλ§ νκ³
νμ€ν 리λ₯Ό λͺ νν νκ³ μΆλ€λ©΄ νμ¬ λ΄λΆμμ μ¬μ© μ€μΈ JIRA νκ² λ²νΈλ₯Ό ν ν½ μ΄λ¦μ λ£λ κ²λ μ’μ λ°©λ²
(μΉ΄νμΉ΄ ν΄λ¬μ€ν°λ₯Ό 2λ μ΄μ μ΄μνλ κ²½μ°μλ ν΄λ¬μ€ν°λ₯Ό ꡬλΆνκΈ° μν΄ μΉ΄νμΉ΄ ν΄λ¬μ€ν° μ΄λ¦μ λ£μ μ λ μμ)
μ΄λ°μμΌλ‘ μλͺ νλκ² μ’μλ° μμμ λ§νλ―μ΄ μΉ΄νμΉ΄ νλ‘λμλ 컨μλ¨Έμμ ν ν½μ μ¬μ©ν λ λμλ¬Έμλ₯Ό ꡬλΆνκΈ° λλ¬Έμ human error λ°©μ§λ₯Ό μν΄ λμλ¬Έμλ₯Ό μμ΄ μ°λ μΉ΄λ©μΌμ΄μ€λ μ§μνλκ² μ’μ
(ꡬλΆμλ‘ νΉμλ¬Έμλ₯Ό μ‘°ν©νμ¬ μ¬μ©νλ©΄ μ’μ)
ν ν½ μ΄λ¦μ λν κ·μΉμ μ¬μ μ μ μνκ³ κ΅¬μ±μλ€μ΄ κ·Έ κ·μΉμ μ λ°λ₯΄λ κ²μ΄ κ°μ₯ μ€μν¨
=> μ무리 κ·μΉμ μ ν΄λ λ°λ₯΄μ§ μμΌλ©΄ μμΈ‘νμ§ λͺ»ν λ°©ν₯μΌλ‘ ν ν½μ΄λ¦μ΄ μμ±λ κ²μ
(μΉ΄νμΉ΄λ ν ν½ μ΄λ¦ λ³κ²½μ μ§μνμ§ μμΌλ―λ‘ μ΄λ¦ λ³κ²½μ μν΄μ μμ ν λ€μ μμ±ν΄μΌ ν¨)
'π³ Data Engineering > Kafka' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Apache Kafka] μΉ΄νμΉ΄ λΈλ‘컀 Β· ν΄λ¬μ€ν° Β· μ£Όν€νΌ (5) | 2024.09.14 |
---|