전체 글(115)
-
상태는 Running, 그런데 데이터는 없다
평범한 토요일 오전, 갑자기 옆 팀 스노우 플레이크 담당자 분이 연락을 받게 됩니다."어제자 새벽부터 스노우 플레이크에 저번 주 추가한 북미 쪽 데이터가 들어오지 않아요"지난주 신규 서비스가 런칭되면서 평균 8만 명의 유저가 초당 약 3MB/s 수준의 데이터를 쏟아내고 있었고, 이와 관련된 모든 로그는 Kafka 클러스터로 유입되는 구조였습니다. 로그의 파이프라인은 MySQL 기반의 로그 DB에 적재된 후, Debezium CDC를 통해 Kafka로 전송되고, 이후 Snowflake로 전달되는 구조로 그리 어렵지 않은 구조의 파이프라인이였습니다.다시 문제로 돌아가 보면, 핵심은 결국 CDC 커넥터가 정상적으로 데이터를 가져오지 못했다는 점입니다. 토픽별 메시지 생산량을 확인해보니, 문제가 발생했던 새벽 ..
2025.05.25 -
max.block.ms 주절주절
브로커에 메세지를 전송하기 전 Producer의 큰 흐름을 3 단계로 나눠보면 Producer -> Accumulator -> Sender로 구분할 수 있습니다. (네이버 D2에서 훌륭하게 소개해주고 계십니다 https://d2.naver.com/helloworld/6560422) 대표적으로 메시지를 전송할 때 사용하는 send() 메서드는, 먼저 Kafka 브로커로부터 토픽과 파티션에 대한 메타데이터를 확보한 후, 이 정보를 바탕으로 파티션을 결정하고, 그에 따라 내부 버퍼(RecordAccumulator의 deque)에 데이터를 적재합니다. 이 버퍼에 쌓인 데이터는 배치 조건이 충족되면 Sender 스레드에 의해 브로커로 전송됩니다. 이때 내부 버퍼가 꽉 차서 더이상 데이터를 담을 수 없는 경우, s..
2025.04.21 -
엘라스틱 스택 - Elasticsearch
엘라스틱 스택(or ELK 스택)은 애플리케이션 지표의 오류 문제 해결부터 로그 보안 위협 조사, 웹 사이트 및 애플리케이션의 검색 상자 구현에 이르기까지 다양한 사용 사례에서 사용됩니다. Elasticsearch, Kibana, Beats 그리고 Logstash로 구성된 엘라스틱 스택은 모든 종류에 대한 검색 및 분석을 위해 유연하고 다양한 도구를 제공합니다. 각각의 기술을 소개하자면 다음과 같습니다. Elasticsearch는 다양한 용도로 사용가능한 데이터 저장소이자, 전문 검색 엔진입니다. 대용량 데이터를 저장하고 검색과 집계 작업을 신속하게 처리할 수 있습니다. Kibana는 엘라스틱서치용 사용자 인터페이스입니다. 이를 통해 시각화 자료를 검색하고 엘라스틱 서치를 관리할 수도 있습니다. Beat..
2023.09.15 -
Zero Copy는 어떻게 Kafka의 속도를 높일까
Apache Kafka에서는 "Zero Copy"라는 기술을 통해 효율적인 데이터 전송과 I/O를 이뤄낸다. 본격적으로 Zero Copy를 이야기하기 전에 일반적인 운영체제에서 커널 공간을 활용하여 데이터를 전송하는 과정을 살펴보자. 먼저, 애플리케이션의 요청에 따라 디스크에서 데이터를 커널 읽기 버퍼에 복사한다. 첫 번째 복사는 디스크에서 파일 내용을 읽고 커널 주소 공간 버퍼에 저장하는 DMA(엔진)에 의해 수행된다. 애플리케이션이 요청이 이뤄지는 시점에서는 User mode였으나, DMA를 통해 복사가 이뤄지는 시점에서는 Kernel mode이다. 즉, 컨텍스트 스위치가 일어난다. (1 번의 복사, 1 번의 컨텍스트 스위치) 이후 데이터를 커널 공간에서 애플리케이션 읽기 버퍼로 복사한다. (1 번의..
2023.08.08 -
L7 프로토콜 - HTTP
Application Layer, L7 먼저 Application Layer라고도 불리는 L7은 유저와 네트워크 간의 인터페이스 역할을 수행하는 계층이다. 해당 계층에서는 애플리케이션 및 사용자 간의 통신과 데이터 전송 방식을 다양한 방식으로 정의하게 되는데, 이를 프로토콜이라고 부르게 된다. L7 내에는 매우 다양한 프로토콜이 존재한다. 가장 대표적으로는 웹 애플리케이션의 통신을 가능하게 하는 HTTP와 HTTPS부터, 파일 전송에 활용되는 FTP, 이메일 메세지를 전송하는 SMTP, 이메일 수신에 사용되는 IMAP/POP3, google.com을 해석하게 해주는 DNS, 초기 주소 할당시에 사용되는 DHCP, 터미널 접속 시 사용되는 SSH 등 굵직한 프로토콜들이 L7 프로토콜로 분류된다. 모든 프로..
2023.08.08 -
IPv4에서 IPv6로의 전환 매커니즘
몇 일전 면접에서 받았던 질문이다. "그럼 IPv4에서 IPv6로의 전환은 어떻게 가능할까요? IoT 솔루션의 경우에는 많은 경우에서 IPv6를 사용하는 걸로 알고 있는데 혹시 이 부분에 대해서 답변 주실 수 있나요?" 워딩은 정확하진 않지만, 대략적으로 이런 워딩의 질문을 받았던 것으로 기억한다. 생각지도 못한 질문이였고, 솔직히 말해서 그게 가능하겠구나라는 생각도 면접장에서 처음 했었다. 사실 너무나 당연하게도 IPv4 주소체계를 사용하는 머신이 있고 IPv6 주소체계를 사용하는 머신이 있다면, 어떤 프로토콜을 사용하고 DHCP에서 어떻게 주소를 받아왔는지만 다르지 두 머신의 연결이 불가능할 이유는 당연히 없다. 질문 자체도 생각할 여지가 많았지만 그리 잘 답변하지는 못했던 것 같다. 그럼에도 이 질..
2023.08.06