2025/08 10

[Kafka] Dead Letter Queue

Overview견고하고 장애에 강한 데이터 파이프라인을 구축할 때 중요한 요소소비자가 처리 중 메시지 처리가 실패될 수 있음✅ DLQ는 실패 메시지를 모아두는 백업 저장소 역할을 담당함➡️ 시스템은 계속 정상 동작할 수 있음➡️ 운영자는 실패 원인을 분석하고 문제를 해결할 수 있음Kafka 자체에서 내장되어 있지 않음소비자 애플리케이션에서 구현 (Kafka의 오프셋 관리와 재시도 로직을 확장해 구현함) 장점메시지 손실 방지명확한 오류 가시성 제공재처리 및 복구 지원 Kafka DLQ Architecture OverviewWhy Use a Kafka Dead Letter Queue?Configuring a Kafka Dead Letter QueueBest Practices for Implementing K..

[Debezium] 1. Introduction

다양한 데이터베이스의 CDC를 위한 오픈소스 커넥터 모음 (Kafka Connect 위에서 동작함)각 데이터베이스의 로그를 기반으로 한 변경 스트림을 읽음 장점항목설명예완전성모든 데이터 변경을 누락 없이 캡처 낮은 지연폴링 대비 매우 낮은 레이턴시MySQL·Postgres 사례: ms 수준스키마 변경 불필요Last Updated 같은 컬럼 추가 불필요 삭제 캡처DELETE 이벤트도 포함 메타데이터 제공DB/설정에 따라 포함 가능이전 레코드 상태, 트랜잭션 ID, 유발 쿼리 등 1. ArchitectureKafka Connect 위에서 동작하는 소스 커넥터로 배포됨구분내용가능 여부/비고토픽 네이밍기본은 서버/DB/테이블 기반 토픽명 생성✅ SMT로 패턴 치환/이름 변경 가능토픽 라우팅 1:1한 테이블 → ..

DevOps/Kafka 2025.08.11

[MongoDB Kafka Connector] 1. Kafka Connector

1. Kafka ConnectorApache Kafka의 하위 구성 요소Kafka를 데이터 저장소와 연결해줌 2. Install the MongoDB Kafka ConnectorKafka plugins 디렉토리에 복사커넥터 플러그인(JAR 파일들)을 plugin.path로 지정된 디렉토리에서 찾음예: plugin.path=/usr/local/share/kafka/plugins 라고 설정하면,/usr/local/share/kafka/plugins 폴더 안에 MongoDB Kafka Connector JAR을 넣어야 함.이렇게 하면 Kafka Connect 실행 시 해당 디렉토리에서 커넥터 클래스를 자동으로 로딩합니다. 분산 모드(Distributed Worker)Kafka Connect는 Standalon..

카테고리 없음 2025.08.10

[MongoDB Kafka Connector] 3-1. Source Connector: Fundamentals

1. Change Streams애플리케이션이 실시간 데이터 변경 내용을 바로 받아볼 수 있게 하는 기능구분내용AggregationAggregation Pipeline을 사용해 Change Stream 이벤트를 원하는 형태로 가공 가능Change Event Structure - 메타데이터(_id, operationType, ns, documentKey, updateDescription)- 변경 내용* publish.full.document.only 옵션: 변경 내용만 Kafka Connector로 전송 (메타데이터 제외)Performance인덱스 사용 불가 (oplog가 특수한 capped 컬렉션이라 인덱스 불가)→ 고속 스토리지 사용, 충분한 캐시 메모리(WiredTiger cache) 확보 Source..

카테고리 없음 2025.08.10

[마이크로서비스 아키텍처 구축] 1. 마이크로서비스란?

샘 뉴먼 님의 "마이크로서비스 아키텍처 구축" 책을 정리한 포스팅 입니다. 1. 마이크로서비스 살펴보기마이크로서비스란?도메인과 관련된 모든 요소를 하나의 모듈로 캡슐화한 아키텍쳐 스타일적용 범위설명주의사항도메인비즈니스 도메인별로 기능을 나누어 서비스 경계 설정 네트워크REST API, gRPC, 메시지 큐 등을 통한 통신만 허용내부 로직·DB 직접 접근 ❌데이터베이스각 서비스가 자체 데이터베이스를 소유공유 데이터베이스 사용 ❌ 효과효과설명특징정보 은닉외부 인터페이스를 통해 최소한만 노출가능한 많은 내부 정보를 구성요소에 감춤변경 격리내부 변경이 외부에 전파되지 않도록 하여 영향 범위를 최소화 경계 명확화변경이 쉬운 부분과 어려운 부분을 명확히 구분- 변경이 쉬운 부분: 내부 구현- 변경이 어려운 부분: ..

Code/MSA 2025.08.08

[MongoDB] MongoDB Replication

1. How does replication work in MongoDB?복제데이터를 여러 복제본으로 만들어서 물리적으로 분리된 서버들에 보관하는 것 Replica Set하나의 Primary 노드 (쓰기 연산)여러 Secondary 노드 (읽기 연산) ElectionPrimary 노드가 다운되면, 선거를 통해 Secondary 노드 중 하나가 새로운 Primary 노드로 승격됨장애 났던 Primary 노드가 복구 되면, Secondary 노드로 복귀 및 동기화를 수행함 2. How do I enable replication in MongoDB사전 준비서버 3대 이상 필요각 서버는 기본 포트(27017)로 통신 가능해야 함private ip로 서로 통신 가능해야 함 (외부 접근 차단) 복제 시작mongod ..

Database/MongoDB 2025.08.05

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 12. 채팅 시스템 설계

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 1. 요구 사항핵심 기능항목설명1:1 채팅빠른 메시지 송수신그룹 채팅최대 100명사용자 접속 상태 표시상태 표시 (온라인 여부 등)다양한 단말 지원하나의 계정으로 여러 기기 동시 접속 가능푸시 알림실시간 알림 지원메시지 형태텍스트 메시지만 지원메시지 최대 길이최대 100,000자채팅 이력 보존영구 보관종단 간 암호화 (E2EE)불필요 (시간 여유 시 고려 가능) 플랫폼 및 접근 방식항목설명플랫폼모바일 및 웹 모두 지원접속 유형하나의 계정으로 여러 단말에서 동시 접속 허용 시스템 규모 및 성능 요건항목설명일일 능동 사용자 수 (DAU)약 5천만 명응답 지연 (latency)낮아야 함 (실시간 응답 수준 추정)..

Code 2025.08.03

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 10. 알림 시스템 설계

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 1. 요구 사항항목내용알림 종류모바일 푸시, SMS, 이메일전송 대상 기기iOS, Android, PC/Laptop전송 타이밍- 실시간 (Soft real-time)- 지연 허용: 수 초~수십 초알림 생성 주체클라이언트 앱 or 서버 스케줄러Opt-out 지원개별 사용자 알림 수신 설정 가능일일 전송량 규모 - Push: 1천만 - SMS: 100만 - Email: 500만 확장성 수준고부하 지원 필요 (스케일 아웃 가능 구조 요구됨) 2. 개략적 설계안알림 유형별 지원 방안알림 유형주요 구성 요소동작 과정 / 설명iOS 푸시 알림- 알림 제공자- APNS (Apple Push Notification Se..

Code 2025.08.02

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 1. 문제 이해요구 조건항목요구 사항 내용값 크기 제한1쌍(Key-Value) ≤ 10KBHigh Availability장애 상황에서도 빠르게 응답해야 함Low Latency빠른 응답 속도 보장 필요Scalability트래픽 변화에 따라 서버 자동 증설/축소 가능Consistency 조정 가능사용자가 요구하는 대로 일관성 수준 선택 가능 2. 분산 키-값 저장소키-값 쌍을 여러 서버에 분산시킴 CAP 정리분산 시스템에서는 Consistency - Availability - Patition Tolerance 모두를 만족하지 못함개념설명Consistency (일관성)모든 노드에서 항상 같은 데이터를 반환해야 함..

Code 2025.08.02

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 추정

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 0. 개략적인 규모 추정설계가 요구사항에 대략적으로 부합하는지 판단시스템 설계자는 추정 능력 및 단위 감각이 필수 1. 2의 제곱수축약형지수 (2^x)설명1KB2¹⁰1,024 바이트1MB2²⁰1,024KB = 약 10⁶ 바이트 (100만)1GB2³⁰1,024MB = 약 10⁹ 바이트 (10억)1TB2⁴⁰1,024GB = 약 10¹² 바이트 (1조)1PB2⁵⁰1,024TB = 약 10¹⁵ 바이트 (1000조)1바이트: 일반적으로 ASCII 문자 하나를 저장할 수 있음 2. 응답지연 값연산 항목설명응답 지연 시간L1 캐시 참조CPU에 매우 가까운 저장소0.5ns분기 예측 오류 (Branch Mispredict)..

Code 2025.08.01