Database 16

아파치 카프카(Apache Kafka) - Amazon MSK

Amazon MSK (Managed Streaming for Apache Kafka)는 Amazon Web Services(AWS)가 제공하는 완전 관리형 Apache Kafka 서비스이다. Kafka 클러스터의 설정, 운영, 확장 및 유지 관리를 간소화하여 사용자에게 Kafka의 강력한 기능을 제공하면서 운영 부담을 줄이는 데 초점을 둔 서비스이다. Amazon MSK의 주요 특징완전 관리형 KafkaKafka 클러스터의 프로비저닝, 패치 관리, 모니터링, 백업 등 운영 작업을 자동화사용자는 데이터 스트리밍과 애플리케이션 개발에만 집중할 수 있음100% Apache Kafka 호환MSK는 오픈 소스 Apache Kafka와 완벽히 호환되므로 기존 Kafka 애플리케이션을 변경 없이 사용할 수 있음고가용..

Database 2025.01.07

아파치 카프카(Apache Kafka) - 카프카 커넥트

Kafka Connect는 Apache Kafka의 데이터 통합 프레임워크로 Kafka 클러스터와 외부 시스템(예: 데이터베이스, 파일 시스템, 클라우드 스토리지 등) 간 데이터를 손쉽게 이동할 수 있도록 설계된 도구이다. Kafka Connect를 사용하면 데이터를 Kafka로 가져오거나(Kafka 소스 커넥터), Kafka에서 외부 시스템으로 내보내는(Kafka 싱크 커넥터) 작업을 쉽게 구현할 수 있다. Kafka Connect의 주요 특징데이터 이동 자동화외부 시스템과 Kafka 간 데이터 통합을 간소화ETL(Extract, Transform, Load) 파이프라인의 일부로 사용분산 또는 독립형 실행분산 모드(Distributed Mode) : 클러스터 환경에서 실행, 확장성 제공독립 모드(Sta..

Database 2025.01.07

아파치 카프카(Apache Kafka) - 카프카 스트림즈

Kafka Streams는 Apache Kafka의 스트리밍 데이터를 실시간으로 처리하기 위한 Java 라이브러리이다. Kafka Streams는 데이터를 Kafka 토픽에서 읽어와 실시간으로 변환, 집계, 분석한 뒤 결과를 다시 Kafka 토픽으로 쓰는 데 사용된다. 이를 통해 분산 스트리밍 애플리케이션을 쉽게 구현할 수 있다. Kafka Streams의 주요 개념스트림(Stream)Kafka 토픽에서 지속적으로 흐르는 데이터Kafka Streams에서는 스트림이 무한히 이어지는 레코드들의 순차적 흐름으로 간주된다.토폴로지(Topology)스트림 처리 작업의 논리적 흐름데이터 변환, 필터링, 집계 등의 작업이 단계별로 정의된다.키값 쌍(Key-Value Pair)Kafka Streams에서 처리되는 데..

Database 2025.01.06

아파치 카프카(Apache Kafka) - 프로듀서, 컨슈머

Apache Kafka의 프로듀서(Producer)와 컨슈머(Consumer)는 Kafka의 핵심 구성 요소로 데이터를 송수신하는 데 사용된다. 이 두 역할은 Kafka 클러스터를 통해 데이터를 효율적으로 주고받을 수 있도록 설계되어있다. 1. 프로듀서(Producer)역할데이터 생성 및 전송프로듀서는 데이터를 Kafka 클러스터로 보내는 애플리케이션이다.데이터를 특정 토픽(Topic)에 게시(Produce)한다.주요 특징파티션 선택프로듀서는 토픽의 데이터를 파티션(Partition)으로 분배한다.기본적으로 파티셔너(Partitioner)를 통해 데이터를 특정 파티션에 저장한다.파티션 키(key)가 제공되면 해당 키의 해시 값을 기준으로 파티션이 결정된다.파티션 키가 없으면 라운드 로빈 방식으로 파티션이..

Database 2025.01.06

아파치 카프카(Apache Kafka) - RabbitMQ, Redis Queue 와 차이

Apache Kafka, RabbitMQ, Redis Queue는 메시징 시스템 및 데이터 스트리밍 용도로 많이 사용되지만 각각의 아키텍처, 사용 사례, 강점, 약점이 다르다.  1. 카프카(Apache Kafka)특징데이터 스트리밍 플랫폼 : 실시간 데이터 스트리밍 및 이벤트 기반 아키텍처에 최적화분산 시스템 : 높은 처리량과 내결함성을 제공로그 저장 : 데이터를 디스크에 저장하며 저장된 데이터를 여러 컨슈머가 독립적으로 처리 가능데이터 보존 : 메시지는 소비 후에도 저장되며 데이터 보존 기간을 설정할 수 있음장점고성능 : 대량의 데이터를 처리하며 높은 처리량을 제공내결함성 : 데이터를 복제하여 장애 발생 시에도 데이터 손실 최소화순서 보장 : 파티션 내에서는 메시지 순서가 보장됨실시간 데이터 스트리밍..

Database 2025.01.05

아파치 카프카(Apache Kafka) - 컨슈머 랙(Consumer Lag)

1. 컨슈머 랙(Consumer Lag)컨슈머 랙(Consumer Lag)은 카프카의 컨슈머 그룹이 데이터를 읽어오는 속도와 브로커에 데이터가 기록되는 속도 간의 차이를 나타낸다. 간단히 말해, 컨슈머가 아직 읽지 못한 메시지의 수를 의미합니다. 컨슈머 랙의 계산컨슈머 랙은 특정 파티션에서 다음 식으로 계산된다Consumer Lag = Latest Offset (Log End Offset) - Committed OffsetLatest Offset (Log End Offset) : 현재 브로커에서 해당 파티션에 기록된 최신 메시지의 오프셋Committed Offset : 컨슈머 그룹이 해당 파티션에서 마지막으로 읽고 커밋한 메시지의 오프셋 컨슈머 랙의 중요성실시간성 지표랙이 작을수록 컨슈머가 데이터를 실시..

Database 2025.01.05

아파치 카프카(Apache Kafka) - 파티셔너

파티셔너(Partitioner)는 Apache Kafka에서 데이터를 특정 파티션에 어떻게 분배할지 결정하는 로직을 담당한다. 프로듀서가 데이터를 토픽에 보낼 때 데이터를 어떤 파티션에 저장할지를 결정하는 역할을 한다. 1. 파티셔너의 역할카프카의 토픽(Topic)은 여러 파티션(Partition)으로 나뉘며 각 파티션은 독립적으로 데이터를 저장한다.파티셔너는 데이터가 특정 파티션에 저장되도록 결정하여 데이터의 분배와 병렬 처리를 최적화한다.데이터 분배의 필요성데이터는 파티션에 분산되어야 병렬 처리, 읽기/쓰기 성능 향상, 확장성을 제공할 수 있다.파티셔너는 데이터를 특정 키를 기준으로 그룹화하거나 균등하게 분산한다. 2. 기본 파티셔닝 전략Kafka는 기본적으로 DefaultPartitioner를 사용..

Database 2025.01.03

아파치 카프카(Apache Kafka) - 브로커

Apache Kafka에서 브로커(Broker), 복제(Replication), ISR(In-Sync Replicas)는 데이터의 안정성과 가용성을 보장하기 위한 중요한 구성 요소이다. 1. 브로커(Broker)브로커는 카프카 클러스터에서 데이터를 저장하고 관리하는 개별 서버(노드)이다.역할데이터를 저장 및 제공프로듀서로부터 데이터를 받아 파티션에 저장컨슈머 요청에 따라 데이터를 전달클러스터 내에서 파티션 리더와 복제를 관리특징하나의 카프카 클러스터는 여러 브로커로 구성된다.각 브로커는 고유 ID를 가지고 있다.데이터의 파티션을 분산 저장하여 확장성과 병렬 처리 성능을 높인다.브로커의 주요 구성 요소리더(Leader) : 특정 파티션의 읽기/쓰기 요청을 처리하는 주 노드팔로워(Follower) : 리더의..

Database 2025.01.03

아파치 카프카(Apache Kafka) - 토픽

카프카의 토픽(Topic)은 데이터를 논리적으로 그룹화하는 기본 단위로 프로듀서(Producer)와 컨슈머(Consumer) 간 데이터를 송수신하는 채널 역할을 한다. 각 토픽은 카프카 클러스터에서 데이터를 저장하고 관리하는 핵심 개념이다. 토픽의 주요 특징토픽의 데이터 흐름프로듀서 : 데이터를 특정 토픽에 게시(Produce)한다.컨슈머 : 토픽에 저장된 데이터를 구독(Consume)하고 읽어온다.토픽 이름각 토픽은 클러스터 내에서 고유한 이름을 가져야 한다.이름 규칙 : 소문자, 숫자, 점(.), 밑줄(_), 하이픈(-)만 사용 가능토픽은 멀티캐스트 방식여러 컨슈머가 동일한 토픽을 구독할 수 있으며 각 컨슈머는 독립적으로 데이터를 처리한다.컨슈머 그룹을 통해 데이터를 분산 처리 가능데이터는 로그 형태..

Database 2025.01.03

아파치 카프카(Apache Kafka) - 개념

아파치 카프카(Apache Kafka)는 분산 이벤트 스트리밍 플랫폼으로 대량의 데이터를 실시간으로 처리하고 전송할 수 있도록 설계된 오픈 소스 소프트웨어이다. 카프카는 LinkedIn에서 처음 개발되었으며 이후 Apache Software Foundation에 기부되었다. 주로 데이터 스트리밍, 실시간 분석, 메시지 브로커 역할을 수행한다. 주요 개념Producer (프로듀서)데이터를 카프카 클러스터로 보내는 역할을 한다.프로듀서는 데이터를 특정 토픽(Topic)에 게시한다.Consumer (컨슈머)카프카 클러스터에서 데이터를 읽어오는 역할을 한다.컨슈머는 하나 이상의 토픽으로부터 메시지를 구독(subscribe)한다.Topic (토픽)데이터가 저장되는 논리적 채널이다.프로듀서와 컨슈머는 특정 토픽을 ..

Database 2025.01.03

DB Replication

DB Replication(데이터베이스 복제)은 데이터를 한 데이터베이스 서버에서 다른 서버로 복제하여 여러 복사본을 유지하는 기술이다. 이 과정은 데이터의 가용성과 성능을 높이고 장애 복구 및 확장성을 제공하기 위해 사용된다. DB Replication의 주요 목적고가용성(High Availability) : 한 서버가 다운되더라도 다른 복제본 서버에서 데이터를 제공할 수 있도록 보장부하 분산(Load Balancing) : 읽기 작업을 여러 서버에 분산시켜 성능 향상장애 복구(Fault Tolerance) : 원본 데이터베이스가 손상되더라도 복제본으로 복구 가능데이터 배포(Data Distribution) : 여러 지역이나 지점에 데이터 동기화 가능 DB Replication의 유형Master-Sla..

Database 2024.12.09

MySQL 옵티마이저 실행계획 분석

MySQL 옵티마이저 실행계획은 쿼리를 효율적으로 실행하기 위해 MySQL이 사용하는 계획을 의미한다. 이 실행계획은 쿼리를 어떻게 처리할지에 대한 정보를 제공하며 이를 분석하면 쿼리 성능을 최적화할 수 있다.MySQL에서 실행계획을 확인하려면 EXPLAIN 명령어를 사용한다. 이를 통해 MySQL이 쿼리를 실행하는 방식(예: 사용된 인덱스, 조인 방식, 풀스캔 여부 등)을 확인할 수 있다. EXPLAIN 사용 방법EXPLAIN [쿼리]; 예제)EXPLAIN SELECT * FROM employees WHERE department_id = 10; EXPLAIN 출력 컬럼 설명id쿼리 내 실행 단계 식별자값이 클수록 먼저 실행됨select_type쿼리의 유형주요 값SIMPLE : 단순 쿼리, 서브쿼리 없음..

Database 2024.12.09

CDC(Change Data Capture)

CDC(Change Data Capture)는 데이터베이스에서 데이터 변경 사항을 캡처하고 이를 다른 시스템이나 서비스로 전송하는 기술 또는 프로세스를 말한다. 이는 데이터베이스의 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)와 같은 변경 사항을 추적하고 이를 실시간 또는 배치 작업으로 다른 데이터 스토어, 데이터 웨어하우스, 데이터 레이크 등으로 전달하는데 사용된다. CDC의 주요 목적데이터 동기화 : 여러 시스템 간의 데이터를 실시간으로 동기화데이터 분석 : 실시간 분석 및 데이터 스트리밍 애플리케이션 구현ETL 개선 : 전통적인 ETL(Extract, Transform, Load) 프로세스를 개선하여 실시간 데이터 파이프라인 구축이벤트 드리븐 아키텍처 : 데이터베이스의 변경 사항을 ..

Database 2024.11.28

트랜잭션의 메커니즘

트랜잭션이 필요한 이유트랜잭션이 없다면 예를 들어 계좌이체와 같은 중요한 작업 도중 오류가 발생한다면 다음과 같은 문제들이 생길 수 있다.출금은 되었으나 입금이 안 된 경우입금은 되었으나 출금이 안 된 경우둘 다 처리되지 않은 경우 (데이터 불일치)트랜잭션은 이러한 중간 상태를 방지하고 작업을 원자성(Atomicity) 있게 처리한다. 즉, 모든 작업이 성공하거나 모두 실패하도록 보장해 데이터를 일관된 상태로 유지한다.트랜잭션의 동작 원리트랜잭션의 주요 속성 (ACID)Atomicity(원자성) : 모든 작업이 완료되거나 전혀 수행되지 않아야 한다Consistency(일관성) : 트랜잭션이 끝난 후에도 데이터는 항상 일관된 상태여야 한다Isolation(고립성) : 여러 트랜잭션이 동시에 수행될 때 서로..

Database 2024.10.28

Sharding, Clustering, Replication

클러스터링 (Clustering)클러스터링은 여러 서버를 하나의 그룹으로 묶어 동시에 운영함으로써 고가용성을 확보하는 기술이다. 이는 한 서버에 장애가 발생해도 서비스가 중단되지 않도록 하는 데 효과적이다.액티브-액티브 클러스터링여러 서버가 동시에 가동되어 모든 서버가 실제로 데이터를 처리한다장점서버 하나가 장애를 일으켜도 나머지 서버가 역할을 대신 수행해 서비스가 중단되지 않는다CPU와 메모리 자원을 효율적으로 활용하여 처리 성능이 향상된다단점모든 서버가 동일한 스토리지를 공유하므로 데이터 I/O에서 병목 현상이 발생할 수 있다여러 서버를 운영하므로 비용과 관리 부담이 증가한다액티브-스탠바이 클러스터링한 서버가 활성(액티브) 상태로 운영되고 다른 서버는 대기(스탠바이) 상태로 유지된다장점대기 서버가 평..

Database 2024.10.23
반응형