본문 바로가기

전체 글121

Debezium MySQL Source Connector 제대로 이해하기 목차0. 들어가며RDB의 데이터 변경을 실시간으로 Kafka로 보내야 할 때, CDC 방식을 많이 사용한다. Kafka의 Connector 도구로 가장 많이 쓰이고 잘 알려진 Debezium에 대해 자세히 파헤쳐보자.1. CDC(Change Data Capture)와 Debezium에 대해1-1. CDC(Change Data Capture)란?데이터베이스의 변경(INSERT, UPDATE, DELETE)을 캡쳐해 다른 시스템으로 전파하는 방법이다.구현 방식은 크게 폴링 기반, 트리거 기반, 로그 기반으로 나뉜다.CDC는 거의 로그 기반을 택하는데, 그 이유는 DB가 복제/복구를 위해 어차피 남기는 트랜잭션 로그를 읽기 때문에 원본 DB에 추가 부하가 거의 없고, 커밋 순서ㅐ로 빠짐없이 변경을 가져올 수 .. 2026. 6. 10.
5장. 비동기 연동, 언제 어떻게 써야 할까 목차비동기 연동우선, 동기 방식은 순차적으로 실행된다.1. User 정보를 찾는다.2. User가 없으면 false를 리턴한다.3. 암호가 일치하지 않으면 false를 리턴한다.4. 로그인 포인트 지급 서비스를 호출한다.5. 포인트 지급에 실패하면 익셉션을 발생시킨다.6. 로그인 내역을 기록한다.7. true를 리턴한다.동기 방식은 한 작업이 끝날 때까지 다음 작업이 진행되지 않는다.동기 방식에서는 코드의 순서가 곧 실행 순서가 된다.동기 방식은 프로그램의 흐름을 직관적으로 이해할 수 있으며,디버깅도 용이하다. (코드를 그대로 쫓아가면서 분석할 수 있기 때문)하지만 동기 방식이 외부 연동을 만나면 고려할 게 많다. (예를 들면, 외부 연동 실패 시 로그인도 실패되어 전체 기능을 사용할 수 없게 된다.또,.. 2026. 5. 6.
HikariCP Thread starvation 문제 해결 과정 목차0. 들어가며AWS EC2에 배포를 마치고 사이트에 접속하던 중 갑자기 서버가 다운되는 일이 발생했다. 원인을 찾고자 로그를 확인했고, 로그를 통해 HikariCP Thread starvation 문제가 발생했다는 것을 알 수 있었다. 문제를 해결하기 전에 먼저 커넥션 풀에 대해 자세히 파헤쳐보고자 한다. 얕은 지식으로만 알고 있었는데 이번 기회에 자세히 공부해보고 문제의 근본적인 원인을 파악해 해결해보자. 1. DB ConnectionDB Connection 이란 애플리케이션과 데이터베이스 서버가 통신할 수 있도록 연결하는 것을 의미한다. pool을 사용하지 않고 DB를 연결하여 사용할 때 아래와 같은 과정을 거치게 된다.하지만 이런 방식의 작업은 비용이 많이 발생하고 비효율적이다.새로운 Conne.. 2026. 3. 14.
[프로젝트 복귀] 트랜잭션 Isolation level 조절 목차0. 들어가며TTS&VC&Concat 오디오 제작 웹 프로젝트 코드를 복귀하던 중 Isolation level이 serializable인 것을 보았다. 정말 이 방법밖에 없었는지 당시 문제 상황을 떠올려 보면서 다른 방법을 찾아보기로 했다. 아래 코드를 보면 오디오 작업 처리를 할 때 serializable이 걸려 있다. 내부 코드를 더 자세히 분석해보면서 방법을 모색해보자. 1. 당시 문제 상황 오디오 작업 처리를 RabbitMQ를 이용해 비동기 메시징 작업으로 처리를 했다. RabbtMQ를 도입했던 이유는 모든 오디오 작업 요청 API가 동기적으로 실행되면서 다른 API 응답이 지연되면서 시스템 전체에 영향을 끼쳤다. 그래서 RabbitMQ를 도입했고 비동기로 처리를 했다. 하지만 비동기로 처리.. 2026. 3. 5.
유니온-파인드(Unoin-Find) 알고리즘 목차유니온-파인드(Union-Find)유니온-파인드 알고리즘은 집합을 결합(Union, 합집합)하고 해당 Element가 소속된 집합을 찾아내는(Find) 알고리즘이다. 서로소 집합(Disjoint-Set) 알고리즘이라고도 불린다. Union 연산 : 여러 노드 중 두 노드를 선택하여 이들을 하나의 집합으로 연결한다.Find 연산 : 해당 노드들이 같은 집합에 속해 있는지를 확인할 수 있다. 유니온-파인드의 용도집합 소속 여부 판단 : 임의의 두 노드가 동일한 집합에 속해 있는지를 확인할 수 있다. 그래프라면 임의의 두 노드가 연결되었는지 (탐색 가능한지)를 판단할 수 있다.경로 압축 : Find 연산 중 경로 압축 기법을 사용하여, 그래프 내에서 노드 간의 경로를 최적화한다. 이것은 그래프를 정돈하여 .. 2026. 1. 13.
chapter4. 네트워크 계층: 데이터 평면 (4.3~4.5) 목차4.3 인터넷 프로토콜(IP): IPv4, 주소체계, IPv6 등4.3.1 IPv4 데이터그램 포맷서비스 타입- 서비스 타입 비트는 각기 다른 유형의 IP 데이터그램을 구별한다.- ex) 실시간 데이터그램(IP 전화 통신 애플리케이션)과 비실시간 트래픽(FTP)을 구분하는 데 유용하다.데이터그램 길이- 바이트로 계산한 IP 데이터그램(헤더와 데이터)의 전체 길이식별자, 플래그, 단편화 오프셋- 이 세 필드는 IP 단편화와 관련이 있다.- 큰 IP 데이터그램이 여러 개의 작은 IP 데이터그램으로 분할된 다음 목적지로 독립적으로 전달되며, 페이로드 데이터가 최종 호스트의 트랜스포트 계층으로 전달되기 전에 다시 모이게 된다.- IPv6에는 단펴화를 허용하지 않는다.TTL(Time-to-live)- 라우터가.. 2025. 12. 9.