전체 글 18

[Database] Cardinality / Selectivity

Cardinality SQL에서 카디널리티 : 데이터 집합에서 유니크(unique)한 원소 개수(테이블의 '성별' 칼럼에 값이 남,여 두가지밖에 없다면 카디널리티는 2) 데이터 모델링에서 카디널리티 : 한 테이블이 다른 테이블과 가질 수 있는 관계(일대일, 다대다, 일대다, 다대일) 보통 카디널리티라고 하면 주어진 테이블에 있는 열의 카디널리티를 뜻하는 경우가 많음. (이는 해당 열에 대한 테이블에 나타나는 고유한 값의 수를 나타낸다.) 카디널리티는 상대적인 개념이며, 모든 열의 데이터가 고유하다면 high-cardinality 하다고 표현한다. 즉, 카디널리티는 해당 컬럼의 중복된 수치를 뜻하기 때문에 해당 테이블의 해당 컬럼의 값이 얼마나 중복되었는지 조회함으로 카디널리티를 알 수 있다. SELECT..

Database 2023.12.05

[Kafka] Kafka DR(Disaster Recovery)

DR : Disaster recovery 자연 재해나 인간의 행동으로 재해가 발생한 후 IT 인프라에 대한 엑세스 및 기능을 복원할 수 있는 기능을 말한다. DR에서 가장 중요한 점은 서비스 중단 이벤트가 발생한 이후 가능한 빨리 중요한 비즈니스 기능을 지원하는 IT 시스템이 작동하도록 해야 한다는 것이다 예방, 감지, 수정이라는 세가지 요소를 키워드로 인프라를 가동하고 실행하는 확실한 계획을 수립해야 한다. 스냅샷, BaaS 솔루션 등을 통해 데이터를 주기적으로 백업해둬야 한다. 재해 복구 전략을 수립할 때는 복구 시간 목표(RTO)와 복구 지점 목표(RPO)와 같은 주요 측정항목을 신중하게 고려해야 한다. 어플리케이션을 더 빨리 복구해야 할 수록 어플리케이션 실행 비용이 증가한다. DR 방법 : 다중..

Hadoop eco 2023.07.14

[OS] Zero Copy

https://colevelup.tistory.com/23 [Kafka] Kafka와 zero-copy 이전 카프카 도입 사례에서 Twitter가 내부에서 활용하는 In-House-Event-Bus에서 kafka로 전환하계 되는 이유들 중 하나가 kafka가 zero-copy를 제공한다라는 말이 있었습니다. zero-copy에 대해서 자세하게 알 colevelup.tistory.com 해당 블로그에 zero copy에 대해 잘 정리가 되어 있어 오늘은 해당 부분을 내 블로그에 옮겨 적어보며 공부해보고자 한다. 해당 글이 잘 이해되지 않는다면 위에 블로그가 정리가 깔끔하게 되어 있으니 들어 가서 다시 읽어 볼 것을 추천한다. Kafka와 Zero-Copy 오늘날 스트리밍 데이터 플랫폼에서 Kafka를 쉽게..

CS 기초 2023.07.14

[Kafka] Schema Registry

스키마 레지스트리란? Producer와 Consumer가 주고 받는 메세지를 서로 알게 해주고 호환을 강제한다. 즉, 스키마를 만들어 저장, 관리하는 confluent의 웹 어플리케이션 클라이언트 사이에는(Producer와 Consumer) 메세지 구조에 대한 강한 결합도를 가지고 있다. 스키마 레지스트리는 이 결합도를 낮추기 위해 고안 내부적으로는 Avro를 사용하고 REST API를 이용해 Avro 스키마를 저장/조회 가능하며, 설정에 따라 상위, 하위, 양쪽 호환성을 보장한다. 특징 Kafka 외부에서 독립적으로 동작하며 REST API를 제공한다. Producer와 Consumer는 Avro 포맷의 메세지를 Kafka를 통해 송수신 할 수 있도록 한다. Avro 시스템, 프로그래밍 언어, 프로세싱..

Hadoop eco 2023.07.04

[JAVA] Maven pom.xml 구조

Maven이란? Java application의 빌드 도구 Build tool : 프로젝트 생성, 테스트 빌드, 배포등의 작업을 위한 전용 프로그램 빠른 기간 동안 계속해서 늘어나는 라이브러리 추가, 프로젝틀르 진행하며 라이브러리의 버전 동기화의 어려움을 해소하고자 등장 Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라, 해당 라이브러리가 작동 하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해 자동으로 다운 받음 Maven은 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소(Apache 재단에서 운영 관리)는 라이브러리를 공유하는 파일 서버라고 볼 수 있고, 메이븐은 자기 회사만의 중앙 저장소를 구축할 수도 있음. 간단한 설정을 ..

CS 기초 2023.07.01

[Kafka] 성능 측정 지표

성능 지표 성능을 측정할 때 어디에 중점을 두고 테스트를 하느냐에 따라 적합과 부적합이 나뉠 수 있다고 생각한다. 아래는 카프카 클러스터의 성능을 체크할 때 알아볼 수 있는 지표를 추려본 내용이다. 각각의 목표는 trade-off가 발생한다. Throughput vs Latency Durability vs Availability Throughput : 처리량 얼마나 많은 데이터를 처리할 수 있는 지에 대한 지표. 시간 당 얼마 만큼의 메세지를 처리할 수 있는지를 말한다. 고려할 만한 옵션들 - Producer 더보기 batch.size 같은 파티션으로 보내는 다수의 레코드를 배치로 묶어 보내기 위해 bytes를 단위로 묶어 전송할 것인지 설정 linger.ms 배치 형태의 메시지를 보내기 전에 추가적인 ..

Hadoop eco 2023.05.23

[Kafka] Message Delivery Semantics

메세지 전송 전략 메시징 시스템의 메시지 보증 전략 at-most-once (최대 한번만) 실패나 타임 아웃 등이 발생하면 메시지를 버릴 수 있다. 데이터가 일부 누락되더라도 영향이 없는 경우엔 대량 처리 혹은 실시간성이 중요한 서비스에 유용할 수 있다. at-least-once (적어도 한 번) 메시지가 최소 1번 이상 전달되는 것을 보장한다. 실패나 타임아웃 등이 발생하면 메시지를 다시 전송하며, 이 경우엔 동일한 메시지가 중복으로 처리될 수 있다. exactly-once (정확히 한 번) 메시지가 정확하게 한 번만 전달되는 것을 보장한다. 손실이나 중복 없이, 순서대로 메시지를 전송하는 것은 구현 난이도가 높고 비용이 많이 든다. exactly-once가 가장 이상적인 메시지 처리 방식이지만 난이도..

Hadoop eco 2023.05.23

Java 개념 정리

JDK, JRE 차이 JDK는 JRE를 포함할 뿐만 아니라 컴파일러(javac), javadoc, jar 등 개발에 유용한 도구들을 포함하고 있다. 따라서 자바 프로그램을 개발하기 위해서는 JDK를 다운로드하여야 한다. 결론은 JRE는 자바 실행 환경이고, JDK는 자바 개발 도구라는 것이다 Main method 참고 https://velog.io/@skyepodium/JAVA-메인-메소드-public-static-void-mainString-args-알아보기 https://javacpro.tistory.com/11 Java에서는 application이 실행된다면 제일 먼저 main method 실행 public 접근 제어자, private → protected → public 순 어느 곳이던 해당 객체..

CS 기초 2023.05.23

[Kafka] 기업 도입 사례들

라인 LINE에서 Kafka를 사용하는 방법 - 1~3편 https://engineering.linecorp.com/ko/blog/how-to-use-kafka-in-line-1 https://engineering.linecorp.com/ko/blog/how-to-use-kafka-in-line-2 https://engineering.linecorp.com/ko/blog/how-to-use-kafka-in-line-3 LINE 오픈챗 서버가 100배 급증하는 트래픽을 다루는 방법 https://engineering.linecorp.com/ko/blog/how-line-openchat-server-handles-extreme-traffic-spikes 여기 어때 Apache Kafka를 사용하여 EDA 적..

Hadoop eco 2023.05.23

[Kafka] Kafka 브로커의 동작

Kafka는 토픽 안에 파티션에 데이터를 저장한다. 브로커가 뭔지 프로듀서가 먼지 모르겠다면 해당 용어부터 빠르게 알고 넘어가자. 토픽 : 데이터를 구분하기 위해 사용하는 단위, 1개 이상의 파티션을 소유하고 있음. 파티션 : 프로듀서가 보낸 데이터들이 들어가 있는 데이터 덩어리. 한개의 데이터마다 레코드 단위로 이뤄짐. FIFO 구조. 레코드 : 한개의 데이터 단위 Partition 파티션은 Kafka의 병렬처리 핵심으로 컨슈머들이 레코드를 병렬로 처리할 수 있도록 매칭된다. 컨슈머 개술를 늘려 파티션의 개수도 늘리면 병렬 처리량이 증가 된다. Topic 토픽 이름 제약조건 빈 문자열 토픽이름은 지원하지 않음 토픽이름은 . 혹은 .. 으로 생성될 수 없음, _ 와 . 가 동시에 들어갈 수도 없음 __c..

Hadoop eco 2023.02.11