Deploy Kafka KRaft Mode
๋ค์ด๊ฐ๋ฉฐ
ํ์ฌ์์ Confluent๋ฅผ ํตํด Kafka ํด๋ฌ์คํฐ๋ฅผ ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ด ์นดํ์นด์ ๋ํด์ ์ข๋ ์์ธํ ์๊ณ , ์ ๋ฌธ์ฑ์ ๊ฐ์ถ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์ด์ 2025๋ ์ฒซ ๋ชฉํ๋ก Confluent์ Kafka ์๊ฒฉ์ฆ์ธ Confluent Certified Developer for Apache Kafkaยฎ ์๊ฒฉ์ฆ์ ์ค๋นํ๊ณ ์์ต๋๋ค โ๏ธ
์ฃผํคํผ
Confluent: The Apache Kafka Control Plane
์ฌ์ค ์ฃผํคํผ๋ Kafka๋ฅผ ์ํด ๋ง๋ค์ด์ง ๋๊ตฌ๊ฐ ์๋๋๋ค. ์ฃผํคํผ๋ ๋ถ์ฐ์ฒ๋ฆฌ ํ๊ฒฝ์ ์ปจํธ๋กค ํ๋ ์ธ ์ญํ ์ ํ ์ ์๋ ์ปดํฌ๋ํธ ์ ๋๋ค. ์ด๊ฒ์ Kafka์ ์ฃผํคํผ๊ฐ ์๋ก ๋ ์์ ์ธ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๋ป์ด๋ฉฐ, Kafka ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๋ ์ฌ๋์ ๊ฒฐ๊ตญ ์ฃผํคํผ๋ผ๋ ๋ณ๋ ์ํ๊ณ๊น์ง ๊ณต๋ถํ๊ณ ๊ฒฝํ์ ์์์ผ ํ๋ค๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ฃผํคํผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ์นดํ์นด๊ฐ ๊ฐ๋ ๋ฌธ์ ๋ ๋ฌด์์ธ๊ฐ?
์ฃผํคํผ๋ ์นดํ์นด ํด๋ฌ์คํฐ์ ๋ฉํ ๋ฐ์ดํฐ ์ ๋ณด(ex: ISR๊ณผ ๋ฆฌ๋ ํํฐ์ ์ ๋ณด)๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ด๋ฅผ ์ฝ๋ํ ์ด์ ์ ์ํด ์ฌ์ฉํฉ๋๋ค. ์ปจํธ๋กค๋ฌ ๋ธ๋ก์ปค๋ ๋ฉํ์ ๋ณด๋ฅผ ๊ฐ๋ณ ๋ธ๋ก์ปค์ ์ ํํฉ๋๋ค. ์ฆ, ํ๋ก์ฐ๊ฐ
์ฃผํคํผ -> ์ปจํธ๋กค๋ฌ ๋ธ๋ก์ปค -> ์ผ๋ฐ ๋ธ๋ก์ปค
์์๋ก ์ฌ๋ฌ ์ ์ฐจ๊ฐ ํ์ ํ์ต๋๋ค.
์ด๋ฐ ์ํฉ์์ ์ปจํธ๋กค๋ฌ ๋ธ๋ก์ปค์ ์ผ๋ฐ ๋ธ๋ก์ปค ์ฌ์ด์ ๋คํธ์ํฌ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ์๋ก ํต์ ํ์ง ๋ชปํ๊ฒ ๋๋ค๋ฉด, ์ด๋ค ํ ํฝ์ ๋ํด์ ๋ฆฌ๋ ์ผ์์ ์ผ๋ก 2๊ฐ๊ฐ ๋๋ ํ์์ด ๋ฐ์ํ๋ค๊ณ ํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ฃผํคํผ ์ชฝ์์๋ ๋ฆฌ๋ ํํฐ์ ์ด ๋ณ๊ฒฝ ๋์๋๋ฐ, ์ฃผํคํผ์ ์ปจํธ๋กค๋ฌ ๋ธ๋ก์ปค ์ฌ์ด ์ฐ๊ฒฐ์ด ์ง์ฐ๋๋ ๊ฒฝ์ฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์นดํ์นด ๊ฐ๋ฐํ์ ์ด๊ฒ์ด ์ ์ฐจ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํดโฆ ์ฃผํคํผ ์ปดํฌ๋ํธ๋ฅผ ์์ ์ ์ ์ฐจ๋ฅผ ๊ฐ์ํ ํ๊ณ ์ ํฉ๋๋ค!
Kraft ๋ชจ๋
Kraft ๋ชจ๋์์๋ โ์ปจํธ๋กค๋ฌ๊ฐ ์ฌ๋ฌ๋โ ์์. ๊ทธ๋ฆฌ๊ณ โ์ปจํธ๋กค๋ฌ ์ค ํ ๋๊ฐ ๋ฆฌ๋โ๊ฐ ๋จ. ์ปจํธ๋กค๋ฌ์ ๋ฆฌ๋๋ ๊ธฐ์กด ๋ธ๋ก์ปค์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๊ฑฐ๋ ์ฒ๋ฆฌ ํ์ง ์์ต๋๋ค. ์ด๋ค์ ์ค์ง ํด๋ฌ์คํฐ ๋ฉํ๋ฐ์ดํฐ์ ๋ชจ๋ ๋ธ๋ก์ปค์ ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๋ง์ฝ ์ํ๋ค๋ฉด, ์ปจํธ๋กค๋ฌ๊ฐ ๋ธ๋ก์ปค ์ญํ ๊น์ง ๊ฒธํ๋ Combined
๋ชจ๋๋ก ์ด์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค๊ณ ํฉ๋๋ค. (๋ค๋ง, Combined ๋ชจ๋๋ ์ด์ ํ๊ฒฝ์์๋ ๊ถ์ฅ๋์ง ์์ต๋๋ค.)
๊ธฐ์กด์ ์ปจํธ๋กค๋ฌ ๋ ธ๋๊ฐ ํ๋ โ๋ฆฌ๋ ํํฐ์ ์ ์ถโ ๊ธฐ๋ฅ์ ์ปจํธ๋กค๋ฌ ๋ฆฌ๋ ๋ ธ๋๊ฐ ์ํํฉ๋๋ค. ๋๋จธ์ง ์ปจํธ๋กค๋ฌ ํ๋ก์ ๋ ธ๋๋ ์ ์ถ๋ ๋ด์ฉ์ ๋ฆฌ๋๋ถํฐ ๋ณต์ ํ์ฌ ์ ์ฅํฉ๋๋ค.
ํ์์ ์ปจํธ๋กค๋ฌ ํ๋ก์ ๋ ธ๋๋ ๋ฉํ๋ฐ์ดํฐ ๋ถ์ฐ ์ ์ฅ ์ธ์ ๋ฑํ ์ญํ ์ด ์์ต๋๋ค. ์ถ๊ฐ๋ก ๋ฆฌ๋ ๋ ธ๋๊ฐ ์ ์ด์์๋?๋ฅผ ์ง์์ ์ผ๋ก ํ์ธํฉ๋๋ค.
ํ๋ก์ ๋ ธ๋๋ ๋ฆฌ๋ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด ๋ฆฌ๋ ๋ ธ๋ ์ ์ถ์ด ํ์ํ ๋ ์ญํ ์ ์ํ ํฉ๋๋ค. ํ๋ก์ ๋ ธ๋๊ฐ ์ ํ๋ณด๊ฐ ๋์ด ์ ๊ฑฐ๋ฅผ ์น๋ฅด๊ฒ ๋ฉ๋๋ค. ์ด๋, ์ผ๋ฐ ๋ธ๋ก์ปค๋ ํฌํ ๊ณผ์ ์ ์ ํ๋ณด ํ ์๋ ์๊ณ , ํฌํ๊ถ์ ํ์ฌํ ์๋ ์์ต๋๋ค. ์ฆ, ์ผ๋ฐ ๋ธ๋ก์ปค๋ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๊ณ ์ ์ฅํ๋ ์ญํ ๋ง ์ง์คํฉ๋๋ค.
์ปจํธ๋กค๋ฌ๊ฐ ํ๋ณด์๋ก ์ ํ ๋ ๋๋ ๋ฏธ๋ฆฌ ์ค์ ๋ ๋๋ค Timeout ๊ฐ์ ์ํด ์ ํ ๋ฉ๋๋ค. ๊ฐ ์ปจํธ๋กค๋ฌ๋ง๋ค ๋ถ์ฌ๋ฐ์ Timeout ๊ฐ์ด ์ ๊ฐ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ํฌํํ ํ๋ณด์๊ฐ 2๋ช ์ด ๋๋ ์ผ์ ์์ฃผ ๋๋ญ ๋๋ค. ๊ทธ๋๋ ๋ง์ฝ, ํ๋ณด๊ฐ 2๋ช ์๊ฒผ๋ค๋ฉด, Kraft์์๋ ๋ ์ต์ ๋ฉํ๋ฐ์ดํฐ ๋ก๊ทธ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ชฝ์ด ํฌํ๋ฅผ ๋ฐ๋๋ก ๊ฐ์ ํฉ๋๋ค. ๋ง์ฝ, ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋๋ฅ ์ด ๋์จ๋ค๋ฉด, ์๋ก์ด ๋๋ค Timeout์ ๋ค์ ๋ถ์ฌ ํ๊ณ , ๋ค์ ์ ๊ฑฐ๊ฐ ์ด๋ฆฌ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
Deploy on Kubernetes
์ด์ ์ Deploy Kafka on Kubernetes์์ ํ๋ ๊ฒ์ฒ๋ผ bitnami-kafka Helm Chart๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋จผ์ , ์๋์ ๊ฐ์ด helmfile.bitnami-kafka-kraft.yaml
์ ์ค๋นํฉ๋๋ค.
# @helmfile.bitnami-kafka-kraft.yaml
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: bitnami-kafka
namespace: kafka
chart: bitnami/kafka
version: 31.1.1
values:
- ./values.bitnami-kafka-kraft.yaml
๋ณธ๋ bitnami-kafka๋ Kraft ๋ชจ๋๋ก ์นดํ์นด ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค๋ง, ์ ํฌ๋ ์ฝ๊ฐ ์ปค์คํ
์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ทธ๋์ values.bitnami-kafka-kraft.yaml
ํ์ผ์ ๋ง๋ค๊ณ ์๋์ ๊ฐ์ด ์์ฑํฉ๋๋ค.
# @values.bitnami-kafka-kraft.yaml
zookeeper:
enabled: false
kraft:
enabled: true
broker:
replicaCount: 3
controller:
replicaCount: 3
listeners:
client:
protocol: 'PLAINTEXT'
controller:
protocol: 'PLAINTEXT'
$ kgp
NAME READY STATUS RESTARTS AGE
bitnami-kafka-controller-1 1/1 Running 0 113s
bitnami-kafka-controller-2 1/1 Running 0 113s
bitnami-kafka-controller-0 1/1 Running 0 113s
bitnami-kafka-broker-1 1/1 Running 0 113s
bitnami-kafka-broker-2 1/1 Running 0 113s
bitnami-kafka-broker-0 1/1 Running 0 113s
3๋์ ์ปจํธ๋กค๋ฌ์ 3๋์ ์ผ๋ฐ ๋ธ๋ก์ปค๋ก ์นดํ์นด ํด๋ฌ์คํฐ๊ฐ ๊ตฌ์ฑ ๋์์ต๋๋ค! ์ ๊ธฐํ ์ ์ Zookeeper ํด๋ฌ์คํฐ๊ฐ ์๋ค๋ ์ ์ด์ฃ ! (๋์ Controller๋ค์ด ์๊ฒผ์ผ๋ ๋ฆฌ์์ค๋ ๋น์ทํ๊ฒ ์ฐ๋ ค๋์? ๐ค)
Check Kraft Metadata
Kraft ํด๋ฌ์คํฐ์ ํ์ฌ ์ ๋ณด๋ฅผ ํ์ธํด๋ด ์๋ค.
$ kafka-metadata-quorum.sh \
--bootstrap-server bitnami-kafka:9092 \
describe --status
ClusterId: uCTcACi4VDHJQ1KNvNxjrb
LeaderId: 0
LeaderEpoch: 5
HighWatermark: 718
MaxFollowerLag: 0
MaxFollowerLagTimeMs: 0
CurrentVoters: [{"id": 0, "directoryId": null, "endpoints": ["CONTROLLER://bitnami-kafka-controller-0.bitnami-kafka-controller-headless.kafka.svc.cluster.local:9093"]}, {"id": 1, "directoryId": null, "endpoints": ["CONTROLLER://bitnami-kafka-controller-1.bitnami-kafka-controller-headless.kafka.svc.cluster.local:9093"]}, {"id": 2, "directoryId": null, "endpoints": ["CONTROLLER://bitnami-kafka-controller-2.bitnami-kafka-controller-headless.kafka.svc.cluster.local:9093"]}]
CurrentObservers: [{"id": 102, "directoryId": "Hw2L-tv6Xs9Ho7qENmW71g"}, {"id": 100, "directoryId": "4ES0SAcYLzFQVJ2diLkQ6A"}, {"id": 101, "directoryId": "GMd5xaITd4TWXvhvAJ_VEQ"}]
ํ์ฌ ๋๊ฐ ๋ฆฌ๋ ๋ ธ๋์ธ์ง, ์ง๊ธ๊น์ง ๋ช ๋ฒ์ ์ ๊ฑฐ๊ฐ ์์๋์ง(Leader Epoch), Kraft๊ฐ ๋ช๊ฐ์ ์ปจํธ๋กค๋ฌ๋ก ๊ตฌ์ฑ ๋์ด ์๋์ง ๊ทธ๋ฆฌ๊ณ Kraft๋ฅผ ์ด๋ฃจ๋ ์ผ๋ฐ ๋ธ๋ก์ปค๋ค์ธ Observer๋ ์ผ๋ง๋ ๋๋์ง๋ฅผ ํ์ธํ ์ ์์์ต๋๋ค.
์ด ์ํ์์ ํ์ฌ ๋ฆฌ๋ ๋
ธ๋์ธ 0๋ฒ ์ปจํธ๋กค๋ฌ๋ฅผ kubectl delete
๋ก ์ ์ ๋ค์ด ์์ผ ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ kafka-metadata-quorum.sh
๋ก ํ์ธํ๋ฉด
ClusterId: uCTcACi4VDHJQ1KNvNxjrb
LeaderId: 1
LeaderEpoch: 6
HighWatermark: 1130
MaxFollowerLag: 0
MaxFollowerLagTimeMs: 28
CurrentVoters: [{"id": 0, "directoryId": null, "endpoints": ["CONTROLLER://bitnami-kafka-controller-0.bitnami-kafka-controller-headless.kafka.svc.cluster.local:9093"]}, {"id": 1, "directoryId": null, "endpoints": ["CONTROLLER://bitnami-kafka-controller-1.bitnami-kafka-controller-headless.kafka.svc.cluster.local:9093"]}, {"id": 2, "directoryId": null, "endpoints": ["CONTROLLER://bitnami-kafka-controller-2.bitnami-kafka-controller-headless.kafka.svc.cluster.local:9093"]}]
CurrentObservers: [{"id": 102, "directoryId": "Hw2L-tv6Xs9Ho7qENmW71g"}, {"id": 100, "directoryId": "4ES0SAcYLzFQVJ2diLkQ6A"}, {"id": 101, "directoryId": "GMd5xaITd4TWXvhvAJ_VEQ"}]
1๋ฒ ์ปจํธ๋กค๋ฌ๊ฐ ์๋ก์ด ๋ฆฌ๋ ๋
ธ๋๋ก ์ ์ถ๋์๊ณ , Leader Epoch๊ฐ 5
์์ 6
์ผ๋ก ํ๋ ์ฆ๊ฐํ์์ต๋๋ค!
__cluster_metadata
Topic
Confluent: The Apache Kafka Control Plane
Kraft ๋ชจ๋์์๋ ํด๋ฌ์คํฐ ๋ฉํ ์ ๋ณด๋ฅผ ๋ชจ๋ ๋ธ๋ก์ปค๋ค์ด ๋ถ์ฐ ์ ์ฅ ํฉ๋๋ค. __cluster_metadata
๋ผ๋ ํ ํฝ์ ํด๋ฌํธ์ ์ ๋ณด๊ฐ ์
๋ฐ์ดํธ ๋๋ฉฐ, ์ด ํ ํฝ์ ๋จ์ผ Partition์ผ๋ก ๊ตฌ์ฑ ๋ฉ๋๋ค.
์ฃผํคํผ ๋ชจ๋์์๋ ๊ฐ ๋ธ๋ก์ปค๊ฐ ํด๋ฌ์คํฐ ๋ฉํ์ ๋ณด๋ฅผ ๋๊ธฐํ ํ๊ธฐ ์ํด ์ฃผํคํผ์ ์ฃผ๊ธฐ์ ์ผ๋ก fetch ์์ฒญ์ ๋ณด๋ด์ผ ํ์ต๋๋ค. ์ด๊ฒ์ด ์ด์ ๋ ๋ณธ์ธ์ด ํ๋ก์ ํํฐ์
์ผ๋ก ๊ฐ์ง๊ณ ์๋ __cluster_metadata
ํ ํฝ์์ ๊ฐ์ ธ์ค๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์
๋๋ค. ํด๋ฌ์คํฐ ๋ณ๊ฒฝ ์ฌํญ์ __cluster_metadata
์ ๋ฐ์ํ๋ ๊ฒ์ ๋ฆฌ๋ ๋
ธ๋๊ฐ ๋ฐฐํ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ด ์ ๋ณด๋ Kafka์ ๋ฆฌ๋-ํ๋ก์ ํํฐ์
์ฌ์ด์ ๋ณต์ ๋ฉ์ปค๋์ฆ์ ๋ฐ๋ผ ์ ํ ๋ฉ๋๋ค. ์ฆ, Kafka-native ํ๊ฒ ํด๋ฌ์คํฐ ๋ฉํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ฃ !! ๐ฒ
Snapshot
Confluent: The Apache Kafka Control Plane
๊ฐ ๋ธ๋ก์ปค๋ __cluster_metadata
์ ๋ด์ฉ์ ์์ถํด .snapshot
ํ์ผ๋ก ๋ง๋ค์ด ๋ณด๊ด ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ __cluster_metadata
์ ์ฉ๋์ Truncate๋ก ๊ฐ์ถ ํฉ๋๋ค.
์ด๋ ๊ฒ .snapshot
์ ๋ง๋๋ ์ด์ ๋ ๋น ๋ฅธ ๋ณต๊ตฌ๋ฅผ ์ํด์ ์
๋๋ค! ๋ง์ฝ, ๋ธ๋ก์ปค๊ฐ ์ ์ค ๋์๊ณ ๋ณต๊ตฌ๊ฐ ํ์ํ ์ํฉ์ด๋ผ๊ณ ํด๋ด
์๋ค. __cluster_metadata
์ ์๋ ๋ก๊ทธ๋ฅผ ์ฒ์๋ถํฐ ๋ณด๋ธ๋ค๋ฉด ๋ธ๋ก์ปค๊ฐ ๋ณต๊ตฌ ๋๋๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ ์
๋๋ค. ๋น ๋ฅธ ๋ณต๊ตฌ๋ฅผ ์ํด ์์ถ๋ ์ ๋ณด์ธ .snapshot
์ ๋์ ๋ณด๋
๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ก์ปค ๋ณต๊ตฌ ์๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ๋ฎ์ถ ์ ์์ต๋๋ค!
์ฃผํคํผ๋ ํฌํ๋ฅผ ํฉ๋๋ค.
Kraft ๋ชจ๋๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋, ์คํดํ๋ ์ ์ Raft ํ๋กํ ์ฝ๋ฅผ ์ฑํํ๋๊ฒ, Kraft ๋ชจ๋์ ๋ชฉํ์ธ ์ค ์์์ต๋๋ค. ์๋ฌด๋๋ ์ด๋ฆ์ โRaftโ๋ผ๊ณ ๋กํ๋ ์์ผ๋ ๊ทธ๋ ๊ฒ ์คํด ํ๋๋ด ๋๋ค;; ๊ธ์ ์ ์ผ๋ฉด์ ๋์๋ณด๋ฉด, Kraft๊ฐ ๋์ ๋ ๊ฒ์ ๋ ๊ฐํธํ ์นดํ์นด ํด๋ฌ์คํฐ ์ด์๊ณผ ๋ณต๊ตฌ๊ฐ ํต์ฌ์ด์์ต๋๋ค.
์ฃผํคํผ์๋ Kraft์ฒ๋ผ Quorum(์ ์กฑ์)๊ฐ ์๊ณ , ๋ฆฌ๋์ ํ๋ก์๊ฐ ์์ต๋๋ค. ๋ฆฌ๋๊ฐ ํด๋ผ์ด์ธํธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ํ๋ก์๋ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํด๋๋ค๊ฐ, ๋ฆฌ๋ ์ฃผํคํผ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด, ๊ณผ๋ฐ์ ํฌํ๋ฅผ ํตํด ์๋ก์ด ๋ฆฌ๋๋ฅผ ์ ์ถ ํฉ๋๋ค. Raft ํ๋กํ ์ฝ๊ณผ ์์ฃผ ์ ์ฌํ๊ฒ ๋์๊ฐ์ฃ . ๊ทธ๋ฌ๋ ์ด๋ฐ ํฌํ ๋ฐฉ์์ด Raft ํ๋กํ ์ฝ์ ๋ฐ๋ฅธ๋ค๊ณ ํ์ง๋ ์์ต๋๋ค. ZAB(Zookeeper Atomic Broadcast)๋ผ๋ ์์ฒด์ ์ธ ํฌํ&ํฉ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค. ์๋ง ์ปจ์ ์ด ๋น์ทํ๊ณ ์ธ๋ถ ์ฌํญ์์ ์กฐ๊ธ ๋ค๋ฅธ๊ฒ ์๋๋ด ๋๋ค.
๋งบ์๋ง
๊ทธ๋์ ๋ฐ์ดํฐ ์์ง๋์ด๋ก ์ผ์ ํ๋ฉด์, ์ฌ๋ฌ ๋ถ์ฐ ์ฒ๋ฆฌ ์์คํ ์ ์ ํด๋ณด์์ต๋๋ค.
- Kubernetes
- ์ปจํธ๋กค ํ๋ ์ธ๊ณผ ์์ปค ๋ ธ๋
- CPU์ Memory ๋ฑ๋ฑ์ ์์์ Pod์ ์ด๋ป๊ฒ ๋ถ๋ฐฐํ ์ง์ ๋ํด
- ๊ทธ๋ฆฌ๊ณ ๋คํธ์ํฌ๋ Topology๋ ๋ฑ๋ฑ๋ฑ
- Istio
- ์๋น์ค ๋ฉ์ฌ์ ๋ํด
- ๋ถ์ฐ ์์คํ ์์์ ํธ๋ํฝ ๊ด๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ ์ง์ ๋ํ ์๋ฃจ์
- Spark
- ๋๋ผ์ด๋ฒ ๋ ธ๋์ ์์ปค ๋ ธ๋๊ฐ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํด
- Map-Reduce์ ๊ตฌํ์ฒด
- ElasticSearch
- ๋น ๋ฅธ ๊ฒ์์ ์ํ ๋ถ์ฐ ์์คํ
- Kafka
- ๊ฐ๊ฑดํ ๋ถ์ฐ ๋ก๊น ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฃจ์
์ปจํธ๋กค ํ๋ ์ธ ์ฅ์ ๋ฅผ ์ด๋ป๊ฒ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌํ ๊น์ ๋ํ ๊ณ ๋ฏผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ Kafka๋ฅผ ๊ณต๋ถํ๋ฉด์ ์ ์ผ ๋ง์ด ์ ํ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค! ๊ทธ๋งํผ Kafka๊ฐ Fault Tolerance์ ๊ฐ๊ฑดํ๋ ค๋ ์ฒ ํ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ ์ด๊ฒ ์ฃ ใ ใ
์ด๊ฒ์ ๊ฒ ๋ง์ด ๋ฐฐ์ฐ๋ฉด, ์ด๋์ ๋ ์ ๋๋๊ฒ ์๋๊ฐ ์ถ์ ์๊ฐ๋ ์์ง๋งโฆ ๋ฐ์ดํฐ ์์ง๋์ด๋ผ๋ ๋ถ์ผ๊ฐ ๋๋ฃจ๋๋ฃจ ์๋ฉด ์ข์ ์ ์ด ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ชฉ์ ์ ์ํด ํ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ ์ ํด ๋ฐ๋ก๋ฐ๋ก ์ฌ์ฉํ๋ ๋๋์ด์ง๋ง, ๋ฐฐ๊ฒฝ์ง์์ด ์ผ๋ง๋ ๋๋๋์ ๋ฐ๋ผ์ ํ๋ก์ ํธ์ โ์ด์โ์ โ๋ํ ์ผโ์ ์์ค์ด ๊ฒฐ์ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ณต๋ถ๋ฅผ ํ๋ฉด์ โ๋ง์ฝ ๋ด๊ฐ ์ด๋ฐ ๋ถ์ฐ ์์คํ ์ ์ฒ์๋ถํฐ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด, ์ด๋ป๊ฒ ๋ง๋ค๊น?โ๋ผ๋ ์์๋ ๋ง์ด ํ๊ฒ ๋๊ตฌ์ ใ ใ
์ํผ ์ฃผ์ ๋ฆฌ์ฃผ์ ๋ฆฌ ์๊ตฌ์! ์ฌํด๋ ์๋ก์ด ๋์ ์ ์ํด ํ์ํ! ํด๋ด ์๋ค!!