01. Confluent Schema Registry
Last updated
Last updated
๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด๋ด๋ Producer์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ Consumer ๊ฐ์ ๊ณ์ฝ์ผ๋ก ์ฌ์ฉ
์คํค๋ง๊ฐ ์์ผ๋ฉด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ, ์ ์ด๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ ์ํฌ ์๋จ์ด ์๊ฒ ๋จ
๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ํญ์ ๋น์ฆ๋์ค์ ๋ฐ๋ผ์ ์งํํ๋๋ฐ, ์ด๊ฒ์ Schema Evolution(์คํค๋ง ์งํ)๋ผ๊ณ ํจ
๋น์ฆ๋์ค๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๊ธฐ๋ฅผ ์ํจ์ ๋ฐ๋ผ ๊ธฐ์กด ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์งํํ ํ์์ฑ ๋ฐ์
Data Serialization System
Avro๋ Apache Open Source Software ํ๋ก์ ํธ
๋ฐ์ดํฐ Serialization ์ ๊ณต
Java๋ฅผ ํฌํจํ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ง์
๋ฐ์ดํฐ ๊ตฌ์กฐ ํ์ ์ ๊ณต
Avro ๋ฐ์ดํฐ๋ ๋ฐ์ด๋๋ฆฌ์ด๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅ
์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ, ์ฆ ๊ฐ์ฒด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ์ ์ฐ๊ธฐwrite ์ํด ์ฐ์์ ์ธserial ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ๊ฒ.
์ง๋ ฌํ์ ์ฃผ๋ ๋ชฉ์ ์ ๊ฐ์ฒด๋ฅผ ์ํ ๊ทธ๋๋ก ์ ์ฅํ๊ณ ํ์ํ ๋ ๋ค์ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๊ฒ.
์์ถ, ๊ณ ์ฑ๋ฅ, Binary ํฌ๋งท
Java๋ฅผ ํฌํจํ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ง์
Avro ๋ฐ์ดํฐ๊ฐ ํ์ผ์ ์ ์ฅ๋๋ฉด ํด๋น ์คํค๋ง๊ฐ ํจ๊ป ์ ์ฅ๋๋ฏ๋ก ๋์ค์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์์ ํ์ผ ์ฒ๋ฆฌ ๊ฐ๋ฅ
Avro ์คํค๋ง๋ JSON์ผ๋ก ์ ์๋๋ฏ๋ก, ์ด๋ฏธ JSON ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ์ธ์ด์์ ๊ตฌํ์ด ์ฉ์ด(Schema Evolution ์ ์ฝ๊ฒ ์ง์)
๋ฐ์ดํฐ์ ํ์ ์ ์ ์ ์์
Confluent Schema Registry์์ ์ฌ์ฉ ๊ฐ๋ฅ
Binary ํํ๋ก Serialization๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ณด๊ณ ํด์ํ๊ธฐ ์ด๋ ค์(๋๋ฒ๊น , ๊ฐ๋ฐ์ ๋ถํธํจ)
Compatibility
Backward Compatibility
์๋ก์ด ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ.
ํ๋ ์ญ์ ํน์ ๊ธฐ๋ณธ ๊ฐ์ด ์๋ ํ๋ ์ถ๊ฐ์ธ ๊ฒฝ์ฐ
Forward Compatability
์ด์ ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ.
ํ๋ ์ถ๊ฐ ํน์ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ํ๋ ์ญ์
Full compatability
๊ธฐ๋ณธ ๊ฐ์ด ์๋ ํ๋ ์ถ๊ฐ ํน์ ์ญ์
์ญ์ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ํ๋์ด๋ฉด default value ๋ฅผ ๋ฐ๋์ ์ง์
์ถ๊ฐ๋๋ ํ๋๋ผ๋ฉด default value ๋ฅผ ์ง์
ํ๋์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ง ์์
Confluent Schema Registry๋ ์คํค๋ง์ ์ค์ ์ง์ค์ ๊ด๋ฆฌ๋ฅผ ์ ๊ณต
๋ชจ๋ ์คํค๋ง์ ๋ฒ์ ๊ธฐ๋ก์ ์ ์ฅ
Avro ์คํค๋ง ์ ์ฅ ๋ฐ ๊ฒ์์ ์ํ RESTful ์ธํฐํ์ด์ค ์ ๊ณต
์คํค๋ง๋ฅผ ํ์ธํ๊ณ ๋ฐ์ดํฐ๊ฐ ์คํค๋ง์ ์ผ์นํ์ง ์์ผ๋ฉด ์์ธ๋ฅผ throw
ํธํ์ฑ ์ค์ ์ ๋ฐ๋ผ ์คํค๋ง ์งํ(Schema Evolution) ๊ฐ๋ฅ
๊ฐ ๋ฉ์์ง์ ํจ๊ป Avro ์คํค๋ง๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋นํจ์จ์
๋์ Avro ์คํค๋ง๋ฅผ ๋ํ๋ด๋ Global Unique ID๊ฐ ๊ฐ ๋ฉ์์ง์ ํจ๊ป ์ ์ก
Schema Registry๋ ํน๋ณํ Kafka Topic์ ์คํค๋ง ์ ๋ณด๋ฅผ ์ ์ฅ
โ_schemasโ Topic
kafkastore.topic ํ๋ผ๋ฏธํฐ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ