DataOps39 [Kafka] KSQL KSQL?Apache Kafka를 위한 SQL 엔진, SQL과 비슷한 문법으로 복잡한 스트리밍 데이터를 쉽게 처리하고, 실시간 대시보드, 모니터링 시스템 및 기타 실시간 애플리케이션을 구축할 수 있음. Stream, TableStream Object연속적인 record의 흐름, 집계보다 데이터 자체를 담는 경우가 많음 Table Object최신상태를 보여주는 데이터를 넣는경우가 많음.재고, 계좌 잔액 등을 생각하면 좋을 듯, key-value형식으로 구성되어 있음 사용 모습Stream 생성 쿼리 2024. 6. 5. [Kafka] Kafka Stream Stream?- 컴퓨터 과학에서 스트림이란 연속적인 데이터의 흐름, 일정한 데이터 조각의 연속을 의미한다- 일반적으로 Stream 은 업데이트하지 않고, 지우지 않고 쌓기만 한다. 끝이 정해지지 않고 계속되는 불규칙한 데이터를 연속으로 반복 처리할 때 이 또한 스트림 처리라고 부른다.- Data가 순차적으로 도착하여 특정한 컨텐츠를 구성하거나 그 자체가 컨텐츠가 되는 데이터의 흐름 흔히 음악, 영상 등이 실시간으로 송출되어 컨텐츠를 구성할 때 Streaming Service 라고한다. Kafka Streams? - Kafka Stream은 데이터를 연속적인 레코드로 취급하고, Kafka에 저장된 토픽에서 데이터를 읽어 들여 처리하며, 처리 결과를 다시 Kafka 토픽에 출력해주는 Library, Fra.. 2024. 6. 5. [Kafka] MirrorMaker2 MirrorMaker2?Kafka를 MultiCluster 로 이용할 때, Cluster간 데이터 이동이 필요할 때 사용하는 도구 패턴1. Solid Cluster 대응- Solid Cluster: 데이터베이스 및 분산 시스템 분야에서 고가용성, 확장성, 일관성을 보장하는 클러스터링 기술, Active-Active or Active-Standby) 2. Cluster 마이그레이션- 마이그레이션 후 Routing 만 변경하여 운영 중단 없도록 하는 것이 목적- 마이그레이션 완료 전까지 Old Cluster 데이터를 New Cluster 로 동기화 3. 사용용도의 구분과 부하분산, 안전성 추가 확보- 같은 데이터를 적재하지만, 클러스터마다 사용용도가 다른 경우 2024. 6. 5. [Kafka] Kafka Connect 란? - 카프카란? https://mystudylab.tistory.com/105 KafkaConnectKafka Connect는 손쉽게 Kafka를 이용하는 pipeline을 구성해주는 도구.생성되는 Data pipeline은 데이터 이동과 변환이 목적이며 , 분산된 환경에서 수행하기에 고가용성과 부하분산을 구현.다양한 source와 target을 지원하며, source 데이터를 target 에 적재합니다. 구성요소1. Connector- Source connector: 데이터 소스에서 데이터를 추출해 카프카에 데이터 적재- Sink connector: Kafka에서 데이터를 목적지로 전송2. Task- 커넥터는 하나 이상의 작업을 가질 수 있음- Task는 실제로 데이터를 이동시키는 단위이며,여러 작업은.. 2024. 6. 5. [Redis] 레디스 데이터 백업 방법 TL;DR- RDB와 AOF 두 가지 백업 방식을 지원한다.- 레디스 복구 시점은 재시작될 때뿐이며, AOF or RDB 존재하면 파일 로드한다. 데이터 영구 저장- 레디스 모든 데이터는 메모리에서 관리된다.- 장애로 인스턴스가 재시작되면 데이터가 손실될 수 있다.- 가용성을 위한 복제 구조이지만 백업과 복제는 목적부터 다르다는 것을 알아야한다.(복제는 가용성, 백업은 장애 상황에서 데이터 복구) - 의도하지 않게 데이터를 삭제하는 커맨드가 실행되는 경우는 데이터를 안전하게 유지할 수 없음 AOF, RDBAppend Only File- 처리한 모든 쓰기 작업을 차례대로 기록- 복원 시에는 파일을 다시 읽어가며 데이터 세트 재구성- RESP 형태로 저장- 파일 크기가 크고 주기적으로 압축 필요하지만 원.. 2024. 6. 2. 이벤트 기반 아키텍처(Event Driven Architecture, EDA) Event Driven Architecture시스템 구성 요소들이 이벤트와 이벤트 핸들러로 서로 소통하는 구조. 관심사를 분리해 전체적인 결합도를 낮추기 위해 사용.유연한 구조, 뛰어난 확장성이 특징추가적인 컨슈머 필요하면 구독만 추가하면 됨.구성 요소 4가지이벤트이벤트 발행자이벤트 리스너버스 (통로)Internal Event vs External EventInternal Event시스템 내 컴포넌트 간 통신목적내부 도메인 로직과 부가적인 정책을 분리하기 위해서long transaction 분리External Event시스템 간 통신카프카와 같은 이벤트 스트리밍 플랫폼, 혹은 메시지 브로커를 이용해서 처리관련 영상우아한형제들 EDA 예시(외부이벤트, 스프링)https://www.youtube.com/wa.. 2024. 5. 29. [Redis] 레디스를 메시지 브로커로 사용하기 메시지 브로커의 필요성- 여러 모듈이 서로 느슨하고 적절하게 연결시킨 구조를 선호하는데, 이떄 탄탄한 상호작용이 필요해 메시지 브로커를 필요로 한다.- 서비스 간 커넥션이 실패하는 상황은 언제나 발생할 수 있으며, 되도록 비동기 통신하는 것을 권장한다.- 메시지를 어딘가에 쌓아 둔 뒤 나중에 처리할 수 있는 채널을 만들어 주는 것, 이것이 메시지 브로커의 핵심 역할이다. 메시지 브로커 타입1. 메시징 큐- Producer: 데이터를 생성하는 쪽- Consumer: 데이터를 수신하는 쪽 2. 이벤트 스트림- Publisher: 데이터 생성- Subscriber: 데이터 조회 이벤트 큐 vs 이벤트 스트림1. 방향성- 메시지 큐는 생산자가 소비자 큐로 데이터를 직접 푸시. 2곳에서 필요하면 생산자는 2곳으.. 2024. 5. 27. [Redis] 5장. 레디스를 캐시, 세션으로 사용하기 TL;DR레디스는 캐시, 세션 용도로 사용되며 캐시는 데이터 저장소의 서브 셋, 세션은 정해진 시간동안 저장되는 정보라는 차이점이 있다.레디스는 평균 읽기 및 쓰기 작업 속도가 1ms이기 때문에 성능 개선이가능하며, 데이터베이스 커넥션 I/O 를 줄여 CPU, 메모리 리소스를 줄일 수 있다.장애 대응 기능을 갖춘 고가용성 솔루션이며, 스케일 아웃을 지원한다.캐시데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소효과적인 케이스원본 데이터 저장소에서 원하는 데이터를 찾기 위해 검색하는 시간이 오래 걸리거나, 매번 계산을 통해 데이터를 가져오는 것쓰기보다 읽기에 특화된 데이터인 경우캐시에 저장된 데이터가 잘 변하지 않는 데이터인 경우캐시에 저장되는 데이터가 자주 검색되는 데이터인 경우.. 2024. 5. 8. [Redis] 4장. 레디스 자료 구조 활용 사례 실시간 리더보드배경리더보드: 경쟁자들의 순위와 현재 점수를 보여주는 순위표절대적 리더보드모든 유저를 정렬시켜 상위권만 표시하는 것을 absolute leaderboard 라고 함상대적 리더보드사용자마다 다른 데이터를 보여줌구로 직장인 대상 순위필요상대적 리더보드의 경우 다양한 관점에서 데이터 계산하고 통계 내야하기 때문에 여러 가지 수학적 계산이 빠르게 수행되어야 함관계형 데이터베이스 사용할 경우 항상 정렬해서 가져와야 한다.해결Sorted set 은 항상 정렬해서 저장하기 때문에 매번 정렬할 필요가 없다.ZUIONSTORE로 스코어 합한할 수 있음특정 SET 에 가중치 줄 수 있음최근 검색 기록배경최근 검색 기록유저별로 다른 키워드 노출검색 내역은 중복 제거가장 최근 검색한 5개 키워드만 사용자에게 노.. 2024. 5. 5. [Redis] 3장. 레디스 기본 개념 TL;DRRedis는 range 검색할 때 end index 를 포함함String최대 512MBBinary-safe 하게 처리되어 이ㅁ지 같은 바이트 값 등 다양한 데이터 저잦ㅇ 가능key-아이템 1대1 연결되는 유일한 자료 구조 → 나머지 자료 구조를 보면 된다커맨드SETOptionsNX: 키 없는 경우XX: 키 이미 있는 경우GETINCR, INCRBY, DECR, DECRBY원자적으로 처리 가능Race condition 방지타이밍 순서에 따라 요청 무시됨SET hello wolrdGET helloList순서를 가지는 문자열 목록최대 12억개스택, 큐로 사용된다특징LPUSH, RPUSH, LPOP, RPOP 커맨드는 당연 O(1)인덱스 들어가면 O(n)커맨드추가LPUSH, RPUSHLINSERT데이터.. 2024. 5. 5. 이전 1 2 3 4 다음