Error Handling
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
์ด ๊ฐ์ด๋์์๋ MongoDB Kafka connector์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณผ ์ ์์ต๋๋ค. ๋ค์ ๋ชฉ๋ก์ ์ฑํฌ connector์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ฅผ ๋ณด์ฌ์ค๋๋ค.
Avro ์ง๋ ฌํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์ ์ ์ฐ๊ณ Protobuf ์ญ์ง๋ ฌํ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ฃผ์ ์ ๋ฉ์์ง ๋์ฝ๋ฉ์ ์๋ํฉ๋๋ค.
๋ณ๊ฒฝ ์ด๋ฒคํธ ๋ฌธ์๊ฐ ํฌํจ๋์ง ์์ ๋ฉ์์ง์ ๋ณ๊ฒฝ ๋ฐ์ดํฐ ์บก์ฒ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์์ ๋ฌธ์์ ์๋ชป๋ ๋จ์ผ ๋ฉ์์ง ๋ณํ์ ์ ์ฉํฉ๋๋ค.
์ฑํฌ connector์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ ๊ฐ์ง ์กฐ์น๋ฅผ ์ํํฉ๋๋ค.
์ค๋ฅ ์ฒ๋ฆฌ
connector์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋น์ ์ ์ฑํฌ connector๋ ์ค๋ฅ์ ๋ํ ์๋ต์ผ๋ก ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
๋ชจ๋ ์ค๋ฅ์ ๋ํด ์ค์ง
๊ธฐ๋ณธ์ ์ผ๋ก ์ฑํฌ connector๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ข ๋ฃ๋๊ณ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์ค์งํฉ๋๋ค. ์ด๊ฒ์ ์ฑํฌ connector์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ๊ฒฝ์ฐ์ ์ข์ ์ต์ ์ ๋๋ค.
์ฑํฌ ์ปค๋ฅํฐ๊ฐ ์ถฉ๋ํ๋ฉด ๋ค์ ์กฐ์น ์ค ํ๋๋ฅผ ์ํํ ๋ค์ ์ปค๋ฅํฐ๋ฅผ ๋ค์ ์์ํ์ฌ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์ฌ๊ฐํด์ผ ํฉ๋๋ค.
์ฑํฌ connector ๊ฐ ์ผ์์ ์ผ๋ก ์ค๋ฅ๋ฅผ ํ์ฉํ๋๋ก ํ์ฉ
๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฑํฌ ์ปค๋ฅํฐ์ ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธํ์ธ์.
์ฃผ์ ์์ ์๋ชป๋ ๋ฉ์์ง ์ ๊ฑฐ
errors.tolerance
์ต์
์ ์ด๋ค ๊ฐ๋ ์ง์ ํ์ง ์๊ฑฐ๋ connector ๊ตฌ์ฑ์ ๋ค์์ ์ถ๊ฐํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ฑํฌ connector๊ฐ ์ค์ง๋๋๋ก ํ ์ ์์ต๋๋ค.
errors.tolerance=none
๋ชจ๋ ์ค๋ฅ ํ์ฉ
๋ชจ๋ ์ค๋ฅ๋ฅผ ํ์ฉํ๊ณ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์ค๋จํ์ง ์๋๋ก ์ฑํฌ connector๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ connector๋ฅผ ๋น ๋ฅด๊ฒ ์์ํ๊ณ ์คํํ ์ ์๋ ์ข์ ์ต์ ์ด์ง๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํผ๋๋ฐฑ์ ๋ฐ์ง ๋ชปํ๋ฏ๋ก connector์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ ์ ์์ต๋๋ค.
๋ค์ ์ต์ ์ ์ง์ ํ์ฌ ์ฑํฌ connector๊ฐ ๋ชจ๋ ์ค๋ฅ๋ฅผ ํ์ฉํ๋๋ก ํ ์ ์์ต๋๋ค.
errors.tolerance=all
๊ฒฝ๊ณ
์์๊ฐ ์ง์ ๋ ๋๋ ์ฐ๊ธฐ๋ก ์ธํด ๋ฉ์์ง ๊ฑด๋๋ฐ๊ธฐ๊ฐ ๋ฐ์ํ ์ ์์
connector ๊ฐ ์ค๋ฅ๋ฅผ ํ์ฉํ๋๋ก ์ค์ ํ๋ค ํ๊ณ ์์๊ฐ ์ง์ ๋ ๋๋ ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์์ค๋ ์ ์์ต๋๋ค. connector ๊ฐ ์ค๋ฅ๋ฅผ ํ์ฉํ๋๋ก ์ค์ ํ๋ค ํ๊ณ ์์๊ฐ ์ง์ ๋์ง ์์ ๋๋ ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์์ค์ด ์ค์ด๋ญ๋๋ค. ๋๋ ์ฐ๊ธฐ (write) ์์ ์ ํ์ต ๋ณด๋ ค๋ฉด ์ฐ๊ธฐ ๋ชจ๋ธ ์ ๋ต ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์ค๋ฅ ํ์ฉ
๋ฐ์ดํฐ ์ค๋ฅ๋ง ํ์ฉํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ค๋ฅ์ ๋ํ ์ฒ๋ฆฌ๋ ์ค์งํ๋๋ก ์ฑํฌ connector ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด connector ๋ ๋ฐ๋ ๋ ํฐ ๋๊ธฐ์ด์ด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ํด๋น ๋๊ธฐ์ด๋ก ๋ฐ์ดํฐ ์ค๋ฅ๋ฅผ ๋ณด๋ ๋๋ค.
๋ค์ ์ต์ ์ ์ง์ ํ์ฌ ๋ฐ์ดํฐ ์ค๋ฅ๋ง ํ์ฉํ๋๋ก ์ฑํฌ connector ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
errors.tolerance=data
์ฃผ์ ์ ์ค๋ฅ ๋ฐ ์๋ชป๋ ๋ฉ์์ง ์ฐ๊ธฐ
์ถ๊ฐ๋ก ๊ฒ์ฌํ๊ฑฐ๋ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ฐ๋ ๋ ํฐ ํ ๋ผ๋ ์ฃผ์ ์ ์ค๋ฅ ๋ฐ ์๋ชป๋ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋๋ก ์ฑํฌ connector๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ ๋ ํฐ ํ๋ Apache Kafka์ ๊ฐ์ ๋ฉ์์ง ํ ์์คํ ์์ ์์คํ ์ด ์ถฉ๋ํ๊ฑฐ๋ ์ค๋ฅ๋ฅผ ๋ฌด์ํ๋ ๋์ ์๋ชป๋ ๋ฉ์์ง๋ฅผ ๋ผ์ฐํ ํ๋ ์์น์ ๋๋ค. ๋ฐ๋ ๋ ํฐ ํ๋ ํ๋ก๊ทธ๋จ์ ์ค์งํ๋ค๋ ํผ๋๋ฐฑ๊ณผ ๋ชจ๋ ์ค๋ฅ๋ฅผ ํ์ฉํ๋ ๋ด๊ตฌ์ฑ์ ๊ฒฐํฉํ ๊ฒ์ผ๋ก, ๋๋ถ๋ถ์ ๋ฐฐํฌ์์ ์ข์ ์ค๋ฅ ์ฒ๋ฆฌ ์ ์ด ๋ ์ ์์ต๋๋ค.
๋ค์ ์ต์ ์ ์ง์ ํ์ฌ connector๊ฐ ๋ชจ๋ ์๋ชป๋ ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๋ ํฐ ํ๋ก ๋ผ์ฐํ ํ๋๋ก ํ ์ ์์ต๋๋ค.
errors.tolerance=all errors.deadletterqueue.topic.name=<name of topic to use as dead letter queue>
์ค๋ฅ์ ๊ตฌ์ฒด์ ์ธ ์ด์ ์ ์๋ชป๋ ๋ฉ์์ง๋ฅผ ํฌํจํ๋ ค๋ฉด ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ธ์.
errors.deadletterqueue.context.headers.enable=true
๋ฐ๋ ๋ ํฐ ๋๊ธฐ์ด์ ํ์ต ๋ณด๋ ค๋ฉด ๋ฐ๋ ๋ ํฐ ๋๊ธฐ์ด์ ๋ํ Confluent์ ๊ฐ์ด๋ ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ ๋ฐ๋ ๋ ํฐ ํ ๊ตฌ์ฑ ์์๋ฅผ ๋ณด๋ ค๋ฉด ๋ฐ๋ ๋ ํฐ ํ ๊ตฌ์ฑ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
connector๊ฐ ๋ฐ๋ ๋ ํฐ ํ์ ์ปจํ ์คํธ ํค๋๋ก ์ ์ํ๊ณ ์ฐ๋ ์์ธ์ ๋ํด ์์๋ณด๋ ค๋ฉด ๋๋ ์ฐ๊ธฐ ์์ธ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ก๊ทธ ์ค๋ฅ
ํ์ฉ๋๋ ์ค๋ฅ์ ํ์ฉ๋์ง ์๋ ์ค๋ฅ๋ฅผ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ํญ์ ํด๋ฆญํ์ฌ ์ค๋ฅ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ ํ์ธํฉ๋๋ค:
๋ค์ ๊ธฐ๋ณธ ์ต์ ์ Kafka Connect๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ์ ํ์ฉ๋์ง ์๋ ์ค๋ฅ๋ง ๊ธฐ๋กํ๋๋ก ํฉ๋๋ค.
errors.log.enable=false
๋ค์ ์ต์ ์ Kafka Connect๊ฐ ํ์ฉ๋๋ ์ค๋ฅ์ ํ์ฉ๋์ง ์๋ ์ค๋ฅ๋ฅผ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ ์ ์ฐ๊ธฐ (write) ํ๋๋ก ํฉ๋๋ค.
errors.log.enable=true
๋ฉ์์ง ์ฃผ์ ๋ฐ ์คํ์ ๊ณผ ๊ฐ์ ๋ฉ์์ง์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ค๋ฉด ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ธ์.
errors.log.include.messages=true
์์ธํ ๋ด์ฉ์ Confluent์ Kafka Connect๋ฅผ ์ฌ์ฉํ ๋ก๊น ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค๋ฅํฐ ์์ค์์ ์ค๋ฅ ์ฒ๋ฆฌ
์ฑํฌ connector๋ connector ์์ค์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
Kafka ์ฐ๊ฒฐ ์ต์
| MongoDB Kafka Connector ์ต์
|
---|---|
errors.tolerance | mongo.errors.tolerance |
errors.log.enable | mongo.errors.log.enable |
connector๊ฐ Kafka Connect ํ๋ ์์ํฌ์ ๊ด๋ จ๋ ์ค๋ฅ์ MongoDB์ ๊ด๋ จ๋ ์ค๋ฅ์ ๋ค๋ฅด๊ฒ ์๋ตํ๋๋ก ํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ค์ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ธ์.