Kafka 리밸런스 프로토콜 비교: Classic과 KIP-848 Consumer
·
Infra/Kafka
🧐 들어가기 전컨슈머를 하나 더 띄웠을 뿐인데 그룹 전체의 소비가 몇 초씩 멈추는 경험은 흔하다. 그렇다고 이게 카프카의 버그는 아니고, classic 프로토콜이 합의를 만들어 내는 방식에서 구조적으로 따라 나오는 결과다. 그래서 "리밸런스가 느리다"를 튜닝 문제로만 보면 어디를 건드려야 하는지가 끝내 보이지 않는다.같은 리밸런스라는 이름 아래에서도 멈추는 방식은 다르다. classic 의 eager rebalancing 은 보유 파티션을 전부 놓고 그룹 전체가 JoinGroup 배리어에 모인다. incremental cooperative rebalancing 은 이동할 파티션만 놓지만, JoinGroup 과 SyncGroup 으로 왕복하는 classic 의 골격은 그대로 사용한다. KIP-848 의 ..
Kafka 파티션 증가 없이 처리량 늘리기 (feat. Parallel Consumer, Share Group)
·
Infra/Kafka
🧐 들어가기 전파티션 8개짜리 토픽에서 컨슈머 랙이 계속 쌓였다. 그래서 컨슈머 인스턴스를 8대에서 16대로 늘려 배포했는데 랙 그래프는 그대로였다. 컨슈머 그룹 상태를 확인해 보니 새로 뜬 8대는 할당된 파티션이 하나도 없었다. 일반 컨슈머 그룹에서는 파티션 하나가 같은 시점에 그룹 내 컨슈머 하나에게만 배타적으로 할당되기 때문이다. 애플리케이션 내부에서 별도 병렬화를 하지 않는 전통적인 소비 모델이라면, 그룹 전체 병렬성의 상한은 컨슈머 수가 아니라 파티션 수다.그렇다면 파티션을 늘리면 되지만 여기에는 되돌리기 어려운 결정이 끼어 있다. Kafka는 파티션 수를 줄이는 기능을 제공하지 않는다. 파티션을 추가하면 이후 레코드의 키-파티션 매핑도 달라질 수 있어, 파티션 내 키 순서에 의존하는 애플리케..
GCP Datastream을 걷어내고 자체 CDC 파이프라인을 구축하면서 만난 두 가지 정합성 문제 (feat. AWS Aurora 복제지연)
·
Java & Kotlin
🧐 들어가기전우리팀은 서비스 데이터는 AWS Aurora에서 관리하고, 마케팅 데이터나 외부 데이터의 수집 분석 도구로는 GCP BigQuery를 사용하고 있었다. 서로 다른 클라우드 플랫폼을 쓰다 보니, AWS 쪽 서비스 데이터를 주기적으로 BigQuery로 동기화해줘야 했다. 그리고 이 동기화를 위해 GCP에서 제공하는 Datastream 파이프라인을 이용하고 있었다. 하지만 문제는 비용이었다. Datastream 과금이 데이터 트래픽량에 따라 일별 1만~3만 원씩 빠져나가는 구조였으며, 월 30만~90만 원 사이를 오갔다. 그래서 이러한 비용 부담으로 인해 우리팀은 비용 절감이 필요하다고 판단이 들었고, 이를 위해 Datastream을 걷어내기로 하였다. Datastream을 대체하기 위해 애플리..
AI 에러 로깅 알림 시스템 구축 1편 (feat. Claude Headless, Loki Ruler, Alert Manager)
·
Infra
🧐 들어가기전"정말 필요한" 에러로그의 알림만 바로 슬랙으로 받으면 얼마나 좋을까?Datadog을 사용하던 시절에는 자동 그룹화, 패턴 인식, 알림 설정까지 잘 갖춰져 있었기 때문에 에러 로그 모니터링이 비교적 수월했다고 한다 (팀에서 Datadog을 사용하던 당시에 나는 없었기에 그 이점을 잘 모른다). 그러나 Datadog의 비용 부담이 커지면서 지속해서 사용하기 어려웠고, 대체재로 오픈소스 기반의 Prometheus + Loki + Grafana + Tempo 스택으로 전환하게 되었다. 회사를 처음에 들어오던 당시에는 해당 스택에 대한 불편함을 전혀 느끼지 못하였다. 하지만 이제 서비스를 개발하기 시작하면서 정말 필요한 에러 로그 알림만 바로 받아보고 싶다는 생각이 강하게 들기 시작하였다. 그래서..
분산 시스템 장애의 본질: Fault → Error → Failure 흐름과 Observability 기반 원인 추론
·
Infra
🧐 들어가기전"서비스 응답이 느려졌다." "간헐적으로 504 Gateway Timeout이 발생한다." "Pod가 재시작을 반복한다."분산 환경에서 이런 증상을 마주했을 때, 원인을 얼마나 빠르게 특정할 수 있는가? 증상은 하나지만 원인은 네트워크 지연, 메모리 부족, 외부 API 장애, 잘못된 설정 등 수십 가지가 될 수 있다. Prometheus 대시보드에서 CPU 사용률이 정상이고, Pod 상태도 Running이라면 어디서부터 추적을 시작해야 하는가? 이 질문에 체계적으로 답하려면 두 가지가 필요하다.첫째, 장애가 어떻게 발생하고 전파되는지에 대한 개념적 이해.둘째, 그 흐름을 실시간으로 관측할 수 있는 데이터 수집 체계.전자는 분산 시스템 이론에서 다루는 Fault/Error/Failure 모델..
Kubernetes Operator Pattern (feat. 언제까지 Helm만 쓸래?)
·
Infra/Kubernetes
🧐 들어가기전 Strimzi - Apache Kafka on KubernetesKafka on Kubernetes in a few minutes Strimzi provides a way to run an Apache Kafka cluster on Kubernetes in various deployment configurations. Use the Quick Starts to get started now! Secure by Default Built-in security TLS, SCRAM-SHA, and OAuth authenticastrimzi.io GitHub - strimzi/strimzi-kafka-operator: Apache Kafka® running on KubernetesApache Kaf..
J_hzlo
J_hzlo