๐งฉ Kafka ์ Rack Awareness ๋ฅผ ์์๋์?
Kafka ๋ ์ด๊ธฐ ๋ฒ์ ๋ถํฐ "broker.rack" ์ด๋ ์ค์ ์ ์ ๊ณตํ์ฌ, ํน์ ์๋ฒ Rack ์ ์ฒด์ ์ ๋ ฅ์ด ๋๊ฐ๋ ์ฅ์ ์ํฉ์ด ๋ฐ์ํ๋๋ผ๋ ๋ค๋ฅธ Rack ์ ์์นํ Broker Node ์ Replica ๋ฅผ ํ ๋น์์ผ ๋์ ๋ถ๋ฅ์ ๋น ์ง์ง ์๊ฒ ํ๋ ๊ณ ๊ฐ์ฉ์ฑ์ ํ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๊ณ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ด๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๊ฒ๊น์ง ์ข์๋๋ฐ, Kafka ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Leader Replica ์ ๋ฉ์ธ์ง๋ฅผ Write ํ๊ณ Read ํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ Client ์ธ Producer ๋ Consumer ๋ ์์นซ ๋ฉ์ธ์ง๋ฅผ ์๊ธฐ์ ๊ฐ๊น์ง ์๋ ๋ ธ๋์ ํต์ ์ ํ๊ฒ ๋์ด ์ฑ๋ฅ ์ด์๋ฅผ ์ผ๊ธฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด Kafka ๋ฒ์ 2.4 ๋ถํฐ Consumer ์ค์ ์ "client.rack" ์ ์ถ๊ฐํ์ฌ, ISR ์ํ์ธ Follower Replica ๊ฐ ์๋ค๋ฉด ์ฝ์ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ง๋ง ์ด ๋ํ Consumer ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๊ด์ฌํ๋ Partition Assignor ๊ฐ Rack ์ค์ ์ ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ๊ณผ Rack ์ด ๋์ผํ์ง ์๋ ๋ ธ๋์ ํํฐ์ ์ค๋์ฝ์ ๊ฐ์ ธ๊ฐ ์ ์์ด ์๋ฒฝํ ํด๊ฒฐ์ ์๋์์ต๋๋ค. ์ด์ ๊ด๋ จ๋ ๋ด์ฉ์ 2023๋ DEVIEW ๋ ์ด๋์ง๋๊ป์ ๋ฐํํ์ "๋ค์ด๋ฒ ์ค์ผ์ผ๋ก ์นดํ์นด ์ปจ์๋จธ ์ฌ์ฉํ๊ธฐ" ์์๋ ๋ค๋ค์์ต๋๋ค. ๐บ ๋ค์ด๋ฒ ์ค์ผ์ผ๋ก ์นดํ์นด ์ปจ์๋จธ ์ฌ์ฉํ๊ธฐ : https://tv.naver.com/v/33857687 ๊ทธ๋ฌ๋ค ๋๋์ด Kafka 3.5 ๋ถํฐ ๊ธฐ๋ณธ์ ์ผ๋ก Built-In ๋์ด์๋ Partition Assignor ์ ํด๋น ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ฒ ๋์ด Consumer ์ Rack Awareness ๊ฐ ๊ฐ๋ฅํด์ง๊ฒ ๋์์ต๋๋ค. ์ด์ ๋ํ ๋ด์ฉ์ ์๋ ์ฒจ๋ถ๋๋ฆฐ Introducing Apache Kafka 3.5 ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. ๐ข Introducing Apache Kafka 3.5: https://www.confluent.io/blog/introducing-apache-kafka-3-5/ ๋ค๋ง ์ง๊ธ๊น์ง ์ธ๊ธ๋ ๋ด์ฉ์ Consumer ์ ๋ํ ๋ด์ฉ์ด๊ณ ํ์ฌ๊น์ง Producer ์ ๋ํด์๋ ์ด๋ ๋คํ ํด๋ฒ์ ์กด์ฌํ์ง ์์ต๋๋ค. ๊ด๋ จ ๋ด์ฉ์ ๊ฒ์ํด๋ณด๋ฉด Producer ์์ ์ฌ์ฉํ๋ Partitioner ๋ฅผ Customizing ํ๋ ๋ฐฉ๋ฒ(https://levelup.gitconnected.com/rack-aware-partition-assignment-for-kafka-producers-and-consumers-bdf706960491)๋ ๋์ค์ง๋ง ์ฌ๊ธฐ์ ์ ์ํ ๋ฐฉ๋ฒ์ ๋์ผํ key ๊ฐ์ ๊ฐ์ง message ๋ ๋์ผํ partition ์ผ๋ก ๊ฐ์ผํ๋ ์์๋ณด์ฅ ๋ฒ์น์ ์๋ฐฐํ๊ธฐ ๋๋ฌธ์ ์์๋ณด์ฅ์ด ํ์์๋ ์ผ์ด์ค์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.