서론 자바를 사용하다 보면 Thread에 대해 많이 들어보고, 대략적인 흐름은 알지만 무심하게 지나치게 되는 상황이 있곤 합니다. 그리고 우리는 ThreadPoolExecutor, ForkJoinPool, VirtualThread, Webflux 등 Thread를 다양하게 사용하는 상황에 대비해 기본적인 Thread에 대해 알 필요가 있습니다. 그럼 지금부터 Thread에 대해 알아보겠습니다. 참고로 VirtualThread에 의해 만들어지는 Thread는 OS와 매칭되는 흐름이 다르기 때문에 해당 글은 VirtualThread에 의해 만들어진 Thread가 아님을 알립니다. Thread란? 자바 Thread는 JVM에서 사용자 모드 Thread를 생성할 때 System call을 통해 커널에서 생성된 ..
서론 Transactional Outbox Pattern에 대해서 궁금하시다면 해당 링크를 참고해 주세요. Transactional Outbox Pattern 이번 글에서는 Spring Boot와 Polling Publisher를 활용하여 어떻게 Transactional Outbox Pattern을 구현할 수 있는지, 그리고 주의점이 무엇인지 알아보겠습니다. 동작 과정 위 동작 과정은 다음과 같습니다. 클라이언트의 요청이 발생합니다. Member Service에서 Member 테이블에 대해 Insert, Update, Delete가 발생하면 Outbox 테이블에도 변경사항을 기록할 수 있도록 데이터를 저장합니다. Message Relay는 주기적으로 Outbox 테이블을 읽고 있습니다. Message R..
Transactional OutBox Pattern 이란? MSA 환경에서 데이터베이스의 상태가 변경되면 해당 트랜잭션과 함께 이벤트를 발행해야 하는 경우가 종종 발생하곤 합니다. 예를 들어 사용자가 회원가입을 완료한 경우 쿠폰을 발급하거나 이메일을 발송해야 하는 경우입니다. 위와 같은 이벤트를 발행하는 행위는 데이터베이스의 상태 변경과 원자적으로 실행되어야 합니다. 만약 데이터베이스에 회원가입 정보를 커밋한 뒤에 이벤트를 발행하면 이벤트가 어떠한 이유로 인해 오류가 발생하여 제대로 발행이 되지 않았다면? 데이터의 일관성이 깨질 우려가 있습니다. 간단한 코드로 조금 더 이해를 해보겠습니다. 🤔 코드로 살펴보기 아래 코드는 사용자의 회원가입 요청이 들어왔을 경우 한 트랜잭션 안에서 이벤트를 발송하고 있습니..
서론 Spring을 사용하여 개발을 하다보면 @Transactional이라는 어노테이션을 많이 보고, 많이 사용하곤 합니다. 이때 클래스 레벨이나 메서드 레벨에 @Transactional 어노테이션이 선언되어 있으면 Proxy로 수행이 되는구나 생각만하고 지나치는 경우가 있습니다. 하지만 이러한 Proxy로 인해 AOP Self Invocation과 같은 겪고 싶지 않은 여러 경험들을 하게 될 수 있습니다. 그렇기 때문에 우리는 스프링에서 Proxy가 어떻게 동작하는지 알아야할 필요성이 있습니다. JDK Dynamic Proxy JDK Dynamic Proxy는 java.lang.reflect 패키지에 속한 Proxy 클래스를 사용합니다. 따라서 리플랙션을 사용하여 동적으로 프록시를 생성해주기 때문에 이..
- Total
- Today
- Yesterday
- 람다 표현식
- spring boot 엑셀 다운로드
- spring boot redisson 분산락 구현
- java ThreadLocal
- spring boot poi excel download
- @ControllerAdvice
- spring boot redisson destributed lock
- service based architecture
- spring boot redisson sorted set
- spring boot excel download paging
- spring boot redis 대기열 구현
- redis 대기열 구현
- spring boot excel download oom
- redis sorted set으로 대기열 구현
- pipeline architecture
- 레이어드 아키텍처란
- 자바 백엔드 개발자 추천 도서
- polling publisher spring boot
- transactional outbox pattern spring boot
- transactional outbox pattern
- 공간 기반 아키텍처
- 서비스 기반 아키텍처
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- microkernel architecture
- java userThread와 DaemonThread
- 트랜잭셔널 아웃박스 패턴 스프링부트
- pipe and filter architecture
- redis sorted set
- JDK Dynamic Proxy와 CGLIB의 차이
- space based architecture
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |