MSA 환경에서 이벤트 기반 아키텍처(EDA)를 적용할때 Kafka가 주로 사용되곤 한다. 카프카 Consumer 메시지 처리 실패시 dead-letter를 어떻게 관리하고 재시도 전략을 수립하면 좋을지 깊게 고찰해보자. (잘못된 내용 및 피드백은 코멘트로 남겨주시면 최대한 빠르게 확인해보겠습니다😃) 가장 간단하게는 spring-kafka에서 제공...
Redis 특징
Redis는 Remote Dictionary Server를 뜻하며 key-value 기반의 인메모리 데이터 저장소이다. 대용량 트래픽을 처리하기 위해 자주 사용되는 Redis의 대표적인 특징들을 알아보자. 1. key-value 구조의 비관계형 데이터베이스 RDB와는 다르게 관계가 없는 비정형 데이터를 관리한다. 2. 싱글 스레드 기반 Redis...
Redis 동작 원리
Redis는 실무에서 캐싱, 동시성 문제 해결을 위한 분산 락, Rate Limit, 이벤트 Pub/Sub 모델 기반 브로드캐스팅 등 다양하게 활용되고 있다. 인메모리(RAM) 기반의 key-value 구조로 하드디스크로부터 조회하는 것에 비해 뛰어난 조회 성능을 가지고 있다. 또한, 싱글 스레드 기반으로 하나의 명령씩 실행이 가능하기에 동시성 문제...
MSA 환경에서의 분산 트랜잭션 관리
MSA 환경에서 고민해야되는 포인트는 도메인별로 분산된 DB를 가질때의 트랜잭션 관리다. 단일 DB에서 제공하는 트랜잭션을 활용할 수 없다보니 전체적인 데이터 일관성과 무결성을 보장하기 위한 고민이 필요하다. 이를 해결하기 위한 대표적인 방식인 2PC 프로토콜(2Phase Commit)과 Saga Pattern에 대해 알아보자. 2PC(2Phas...
Spring Data JPA Batch Insert의 사실과 오해
SpringBoot + JPA + MariaDB(10.6 이상) 환경에서 JPA 엔티티 ID 생성 전략을 IDENDITY를 적용하면 batch insert를 사용할 수 없다는 내용은 구글링을 통해 쉽게 찾을수 있다. IDENTITY 전략은 auto-increment로 PK 값을 자동으로 DB 에 의존하여 채번하는 방식이다. JPA 엔티티를 ...
DB Lock 알아보기 1편
제품을 운영하다보면 Deadlock found when trying to get lock, Lock wait timout exceeded와 같은 DB 동시성 이슈를 마주할 수 있게 된다. 보통 여러 트랜잭션이 동시에 동일 데이터에 대한 select, update 작업들을 수행할때 발생하게 되는데 이와 관련해서 DB Lock에 대해 정리해보고자 한다. ...
Kafka 기반 대규모 데이터 동시성 최적화: Request-Reply 패턴 활용 사례
우아콘24의 ‘Kafka 기반 대규모 데이터 동시성 최적화: Request-Reply 패턴 활용 사례’’ 에 대한 학습 내용을 정리하기 위한 목적의 TIL 포스팅입니다.🙆♂️ 도입 배경 주문이 급증하는 지역에 소수의 라이더가 존재한다고 가정했을때 고객들의 배송이 지연되는 현상이 발생하게 됨 이때 시스템에선 ‘주문수 대비 라이더가 너...
[Java] Virtual Thread
우아한 테크 세미나 ‘Java의 미래, Virtual Thread’ 학습 내용을 정리하기 위한 포스팅입니다😀 1. 일반 Thread 모델 일반 스레드 모델은 다음과 같은 특징을 가진다. 플랫폼 스레드 OS에 의해 스케줄링 커널 스레드와 1대1 매핑 작업 단위 Runnable 애플리케이션은 커널 영역(OS), 유저 영역(...
Start With Why 내용 정리
‘Start With Why’ 책 내용을 정리하기 위한 목적의 포스팅입니다🙆♂️ 들어가며 진정한 리더는 사람들이 자발적으로 행동하도록 마음 깊이 열의를 준다. 성과보상이나 혜택 같은 외부 요인 없이 목적의식이나 소속감을 심어줄수 있다. 1부 방향을 잃어버린 세상 1장 - 우리는 착각에 빠져있다 우리는 ‘올바른’ 판단을...
첫 스프린트 리딩 회고
스프린트 리더 제의 23년 10월 전사 조직 개편과 더불어 스프린트 리더(a.k.a 유닛장) 제의가 들어오게 되었다. 구성원 및 상위 리더분들의 신뢰를 받고 있다는 생각들어 뿌듯하면서도, 두 가지 생각이 머릿속을 맴돌았다. 이전 스프린트 리더들을 옆에서 지켜보았을때 일반 스프린트 구성원들보다 많은 미팅 일정들로 실무 개발 시간이 줄어들텐데 ...