Google Drive 유형의 파일 저장소 및 공유 시스템 설계
파일 저장소 시스템 설계 사례 연구: 요구사항, 데이터 모델, 청크 업로드 API, 공유, 동기화, 충돌 처리 및 트래픽 급증 대응
파일 저장소 시스템 설계 사례 연구: 요구사항, 데이터 모델, 청크 업로드 API, 공유, 동기화, 충돌 처리 및 트래픽 급증 대응
여러 매개변수 객체를 쉽게 읽을 수 있고 불변이며 검증할 수 있는 Builder Pattern 사용 방법, 수동 작성부터 Lombok @Builder와 record까지
Kafka가 consumer group에 partition을 할당하는 방식, rebalance가 발생하는 시점, Spring Boot 애플리케이션에서 rebalance의 영향을 줄이는 방법을 알아봅니다.
PostgreSQL이 transaction을 처리하는 방식, 네 가지 isolation level, lost update와 write skew 같은 현상, 그리고 Spring Boot에서의 설정 및 재시도 방법을 알아봅니다.
SET NX PX와 Lua 스크립트를 사용한 분산 잠금 구현, Redisson의 watchdog 활용, Testcontainers를 이용한 테스트, 일반적인 오류 회피
여러 마이크로서비스 간의 데이터 일관성을 유지하기 위해 Saga 패턴을 사용하는 방법으로, 2PC 없이 Java 21로 작성한 orchestration 예제와 테스트를 포함합니다.
할인 코드 시스템 설계 사례 연구: 플래시 세일 중 한도 초과 방지, atomic UPDATE, Redis Lua, Kafka 및 만료되는 예약 메커니즘
Spring Boot, Kafka, Redis GEO, SSE를 이용한 주문 추적 및 배송원 실시간 위치 추적 시스템 설계. 동시성, 일관성, 트래픽 급증 처리 분석.
경매 시스템 설계 사례 연구: 데이터 모델, API, 조건부 업데이트를 이용한 동시 입찰, Redis Lua, 스니핑 방지 및 안전한 세션 종료
cache-aside와 write-through라는 두 가지 일반적인 캐싱 전략을 이해하고 구현하며, Spring Boot 3에서 적절한 TTL을 선택하는 방법을 배웁니다.
1-1 및 그룹 채팅 설계 사례 연구: seq 기반 데이터 모델, 멱등성 메시지 발송 API, 워터마크 방식의 읽음 상태, outbox + Kafka 및 급증하는 부하 처리
Debezium으로 PostgreSQL의 WAL을 읽어 모든 데이터 변경을 Kafka로 보내고, 데이터 저장 로직을 수정하지 않고도 Spring Boot로 처리하세요.
뉴스 피드 설계 사례 연구: 요구사항, 규모 추정, 데이터 모델, API, fan-out on write vs on read 비교, 하이브리드 모델, 셀러브리티 처리, 일관성, 트래픽 급증
Kafka producer의 acks, enable.idempotence, batch.size, linger.ms를 구성하여 메시지 손실 없이, 중복 없이 높은 throughput을 달성하세요.
Consumer lag이 무엇인지, CLI, AdminClient 및 Micrometer로 측정하는 방법, 추적해야 할 broker/producer/consumer 메트릭 및 적절한 알림 설정 방법을 다룹니다.
Kafka를 Order의 event log로 사용: 불변 이벤트 기록, replay로 상태 재구성, projection으로 read model 생성. 적용 전에 알아야 할 제한사항 포함.
데이터베이스에 쓰고 동시에 Kafka로 메시지를 보내기는 매우 쉽게 이벤트를 잃을 수 있습니다. 이 글은 Spring Boot 3과 Kafka를 사용하여 Outbox pattern을 설정하고 양쪽이 항상 일치되도록 하는 방법을 안내합니다.
Spring Boot 3과 Spring Data Redis에서 Redis Streams와 컨슈머 그룹을 사용하여 at-least-once 이벤트 처리, 수동 ACK, 미처리 메시지 재시도 및 dead-letter 처리를 구현합니다.
Spring Boot에서 Redis를 이용한 cache-aside 패턴, commit 후 캐시 삭제, race condition 처리, Testcontainers로 테스트하기
RDB와 AOF를 사용하여 Redis가 데이터를 디스크에 쓰는 방식을 이해하고, 각 모드를 구성하며, 영속성을 활성화했음에도 데이터가 손실되는 상황을 파악합니다.