1/13 데이터중심어플리케이션설계 3장까지

김태훈·2026년 1월 9일

각자 이야기

아웃박스 패턴과 인박스 패턴

카프카 이벤트와 DB 트랜잭션을 하나의 통 트랜잭션처럼 묶는다 = 아웃박스 (밖으로 나가는 트랜잭션을 박싱한다)
정확히 말하면 “DB 트랜잭션만을 신뢰하고, 이벤트 발행은 DB에 기록한 뒤 비동기로 보장한다”

인박스는 들어오는것 (중복/재처리 막는것)
“들어온 이벤트를 DB에 먼저 기록해서 중복 처리·재처리를 안전하게 만드는 패턴”

Kafka 장애 포인트

동기 Kafka pub로직으로 인해 서비스 전체장애가 났을때, 만약 동기 pub 로직을 유지해야만 했다면 어떻게 해야했을까?
1. Kafka timeout을 매우 줄인다
2. Kafka 로직 / API 로직을 모듈별로 분리하여 배포한다

비동기 스레드풀로 위임한다고 해도 문제가 있지 않을까?
비동기 워커스레드풀 전략에 따라 다르다. 스레드풀 다차면 거절할건지 대기할건지..

책이야기

인메모리 디비 vs 데이터베이스 언젠간 합쳐질것이다
인메모리 디비의 안티캐싱방식 -> OS의 가상메모리와 스왑파일처럼 메모리보다 더 큰 용량을 인메모리디비가 다룰 수 있게된다 (인메모리디비의 메모리 - 인메모리디비의 디스크)

이와 관련해서 얘기가 나왔던게 보통의 캐싱방식이라면 메모리에도 쓰고 (redis) 하드디스크에도 쓰는데(DB) 인메모리디비 구조 내부의 메모리와 하드디스크에서 cache eviction & flush로 인해서 또다른 overhead가 있지 않을까?... 결과는 당연하고. overhead가 없다.

profile
기록하고, 공유합시다

0개의 댓글