반응형

분류 전체보기 65

#6 세그먼트와 삭제 주기

세그먼트와 삭제 주기 🗑️Kafka에서 데이터가 어떻게 삭제되는지에 대해 공부하다 보니, 여러 가지 설정과 개념들이 생각보다 복잡하다. 특히, 세그먼트 단위로 삭제가 이루어진다는 점과 특정 오프셋을 삭제할 수 없다는 점이 인상적이다.삭제 주기와 보유 기간 ⏳Kafka에서는 액티브가 아닌 세그먼트에 대해 파일 단위로 삭제가 이루어진다. 이를 제어하는 주요 설정 값들은 다음과 같다.retention.ms (단위: minutes, hours): 세그먼트를 보유할 최대 기간. 기본값은 7일.retention.bytes: 파티션당 로그 적재 바이트 값. 기본값은 -1(지정하지 않음).log.retention.check.interval.ms: 세그먼트 삭제 여부를 확인하는 주기. 기본값은 5분.데이터 삭제 여부는..

Apache Kafka 공부 2025.02.15

#5 브로커의 역할

Kafka 브로커의 역할 🏢Kafka의 브로커는 여러 가지 역할을 수행한다. 단순히 데이터를 저장하는 것뿐만 아니라 컨트롤러 역할, 데이터 삭제, 컨슈머 오프셋 저장, 그룹 코디네이터 등 다양한 기능을 담당한다.컨트롤러 🖥️Kafka 클러스터에는 여러 개의 브로커가 존재하지만, 그중 한 대가 컨트롤러 역할을 수행한다. 컨트롤러는 브로커들의 상태를 모니터링하고, 문제가 발생하면 조치를 취한다. 예를 들어, 특정 브로커가 장애로 인해 클러스터에서 빠지게 되면 해당 브로커에 할당된 리더 파티션을 재분배한다.그런데 "브로커가 클러스터에서 빠진다"는 게 무슨 의미일까? 🤔 브로커가 클러스터에서 빠진다는 것은 네트워크 장애나 하드웨어 장애 등의 이유로 해당 브로커가 정상적으로 동작하지 않는 상태를 의미한다. ..

Apache Kafka 공부 2025.02.14

#4-1 Zookeeper란?

# Zookeeper: 분산 시스템의 조력자?Zookeeper는 분산 시스템에서 필수적인 구성 요소다. 처음에는 이게 뭔가 싶었는데, 알고 보니 여러 서버를 조율하는 역할을 한다. 마치 오케스트라에서 지휘자가 하는 역할과 비슷하달까? 분산 환경에서는 여러 노드가 서로 정보를 공유하고 협력해야 하는데, 이를 안정적으로 관리해 주는 게 Zookeeper다.## Zookeeper는 뭘 하는 걸까? 🤔Zookeeper는 분산 시스템을 위한 **코디네이션 서비스**다. 여기서 말하는 코디네이션이란 서버 간의 상호작용을 조율하는 걸 의미한다. 단순한 데이터 저장소가 아니라, 노드 간의 정보 공유, 이벤트 관리, 동기화 같은 중요한 역할을 한다.  이걸 이해하려면 먼저 Zookeeper의 핵심 기능을 살펴봐야 한다..

Apache Kafka 공부 2025.02.14

#4-2 리더 파티션과 팔로워 파티션

Kafka의 리더 파티션과 팔로워 파티션 🧐Kafka를 공부하다 보면 "파티션"이라는 개념이 꼭 등장한다. 그런데 파티션 안에도 리더(Leader) 파티션과 팔로워(Follower) 파티션이라는 개념이 있다. 도대체 이게 뭘까? 🤔🏆 리더 파티션이란?리더라는 단어 자체가 "대표"라는 의미를 가지니까, 아무래도 중심 역할을 하는 것 같긴 하다. 실제로 Kafka에서 리더 파티션은 데이터를 직접 주고받는 핵심적인 파티션이다.프로듀서(Producer)는 데이터를 어디로 보낼까? 👉 리더 파티션컨슈머(Consumer)는 데이터를 어디서 가져올까? 👉 리더 파티션즉, 리더 파티션이 없으면 Kafka에서 데이터가 흐를 수 없다는 뜻이다. 하지만 이러면 한 곳에만 의존하는 구조가 되어버린다. 이게 과연 안전..

Apache Kafka 공부 2025.02.14

#4 카프카 브로커와 클러스터

🏢 카프카 브로커와 클러스터🧐 주키퍼란?카프카 클러스터를 운영하기 위해 반드시 필요한 애플리케이션이 바로 주키퍼(Zookeeper) 이다. 그렇다면, 주키퍼는 정확히 어떤 역할을 하는 걸까?카프카에서 브로커가 여러 개 묶여서 클러스터를 이루는데, 이 클러스터의 상태를 관리하고, 브로커들 간의 조정을 담당하는 것이 주키퍼의 역할이다. 쉽게 말해, 클러스터의 '관리자'라고 볼 수 있다. 그런데 요즘은 주키퍼 없이 카프카를 운영하는 방식도 있다고 하던데, 그건 어떻게 가능한 걸까? 🤔🚀 카프카 브로커란?카프카 브로커(Kafka Broker) 는 카프카 클라이언트와 데이터를 주고받는 핵심 주체다. 브로커는 데이터를 분산 저장 하여 장애가 발생하더라도 안전하게 사용할 수 있도록 돕는다. 하나의 서버에는 한..

Apache Kafka 공부 2025.02.14

#3 카프카 생태계 25.02.10

🌍 카프카 생태계최근에 카프카(Kafka)에 대해 공부하면서 흥미로운 개념들을 정리해보았다. 처음에는 단순한 메시지 브로커 정도로만 생각했는데, 공부할수록 훨씬 강력한 생태계를 가지고 있다는 걸 알게 되었다. 이번 글에서는 카프카의 주요 개념들을 하나씩 정리해보려고 한다.🚀 프로듀서(Producer)프로듀서는 데이터를 보내는 역할을 한다. 쉽게 말하면 카프카에 데이터를 생산해내는 주체라고 볼 수 있다.그렇다면 프로듀서는 데이터를 어디로 보낼까? 바로 토픽(Topic) 이라는 개념이 등장한다.🏢 카프카 클러스터와 토픽(Topic)카프카는 하나의 클러스터로 운영된다. 그리고 이 클러스터 안에는 여러 개의 토픽(Topic) 이 존재한다.이때, 토픽은 일종의 데이터 스트림이라고 볼 수 있는데, 프로듀서가 ..

Apache Kafka 공부 2025.02.14

#2 카프카가 데이터 파이프라인으로 적합한 이유 25.02.10

카프카가 데이터 파이프라인으로 적합한 이유 📊최근에 데이터 파이프라인을 설계할 때 카프카(Kafka)가 많이 언급되고 있는데, 왜 그럴까? 카프카는 단순한 메시징 시스템을 넘어서, 대규모 데이터를 처리하는 데 뛰어난 성능을 발휘하는 분산 스트리밍 플랫폼이기 때문이다. 카프카가 데이터 파이프라인에 적합한 이유를 여러 측면에서 살펴보자.메시징 시스템이란? 애플리케이션간 데이터를 비동기적으로 주고 받을 수 있도록 중간에서 전달 역할을 하는 시스템이다. 서로 다른 프로그램들끼리 직접 통신하는 대신 중앙에서 메시지를 보내고 받는 우체국 역할높은 처리량 🚀카프카는 데이터를 전송할 때 '묶어서' 보내는 방식(batch processing)을 사용한다. 많은 양의 데이터를 송수신할 때 네트워크 비용을 고려하지 않을..

Apache Kafka 공부 2025.02.14

#1 Apache Kafka의 역사와 기본 구조 25.02.10

Apache Kafka의 탄생과 기본 구조 ✨왜 Apache Kafka가 나왔을까? 🤔소셜 네트워크 LinkedIn에서는 파편화된 데이터 수집 및 분배 아키텍처를 운영하는 데 큰 어려움을 겪었다. 데이터를 생성하고 적재하기 위해서는 데이터를 생성하는 소스 애플리케이션과 데이터가 최종 적재되는 타깃 애플리케이션을 연결해야 한다.초기에는 단방향 통신을 통해 소스 애플리케이션에서 타깃 애플리케이션으로 연동하는 방식이었고, 아키텍처가 단순했기 때문에 운영이 어렵지 않았다. 그런데 시간이 지나면서 문제가 발생하기 시작했다.아키텍처가 점점 거대해짐소스 애플리케이션과 타깃 애플리케이션의 개수가 증가데이터 전송 라인이 기하급수적으로 복잡해짐통신 장애가 여러 곳에서 동시다발적으로 발생이러한 문제를 해결하기 위해 Lin..

Apache Kafka 공부 2025.02.14

# 컨테이너와 도커

🐳 컨테이너와 도커최근 들어 컨테이너 기술에 대해 공부하고 있다. 처음에는 가상 머신(VM)과 뭐가 다른 건지 헷갈렸는데, 이제 조금씩 감이 오는 것 같다. 컨테이너는 애플리케이션이 한 환경에서 다른 환경으로 이동할 때 필요한 모든 종속성을 함께 패키징하는 일종의 표준 단위라고 한다. 쉽게 말해, 내 코드가 어디서든 같은 환경에서 실행될 수 있도록 보장해주는 것이다.🎯 컨테이너의 장점은?컨테이너를 사용하면 애플리케이션 간의 종속성 충돌 문제를 해결할 수 있다. 예를 들어, 프로젝트 A는 Python 3.8을 필요로 하고, 프로젝트 B는 Python 3.10을 사용해야 하는 경우를 생각해보자. 만약 같은 환경에서 이 두 가지 프로젝트를 실행하려고 하면 충돌이 발생할 것이다. 하지만 컨테이너를 사용하면 ..

CS 공부 2025.02.13

# CI/CD

CI/CD(Continuous Integration/Delivery & Deployment) 🚀🤔 왜 필요할까?혼자 개발을 한다면 CI/CD가 없어도 문제가 되지 않을 것 같다.그런데 여러 개발자들과 함께 개발을 진행한다면 이야기가 달라진다. CI/CD가 없으면 코드 통합이 어려워지고, 배포가 수동으로 진행되면서 실수가 발생할 가능성이 높아진다.그렇다면 CI/CD는 어떤 역할을 하는 걸까? 🔗 파이프라인이란?코드 구축부터 시작해서 배포까지의 일련의 과정을 CI/CD 파이프라인이라고 한다.이 과정은 총 3가지 단계로 구성된다. Continuous Integration (CI): 코드를 빌드하고, 테스트한 후, 저장소에 병합 Continuous Delivery (CD): 레포지토리에 릴리스 (m..

CS 공부 2025.02.13
반응형