서론 자바를 사용하다 보면 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 환경에서 데이터베이스의 상태가 변경되면 해당 트랜잭션과 함께 이벤트를 발행해야 하는 경우가 종종 발생하곤 합니다. 예를 들어 사용자가 회원가입을 완료한 경우 쿠폰을 발급하거나 이메일을 발송해야 하는 경우입니다. 위와 같은 이벤트를 발행하는 행위는 데이터베이스의 상태 변경과 원자적으로 실행되어야 합니다. 만약 데이터베이스에 회원가입 정보를 커밋한 뒤에 이벤트를 발행하면 이벤트가 어떠한 이유로 인해 오류가 발생하여 제대로 발행이 되지 않았다면? 데이터의 일관성이 깨질 우려가 있습니다. 간단한 코드로 조금 더 이해를 해보겠습니다. 🤔 코드로 살펴보기 아래 코드는 사용자의 회원가입 요청이 들어왔을 경우 한 트랜잭션 안에서 이벤트를 발송하고 있습니..
Space Based Architecture 공간 기반 아키텍처는 확장성과 탄력성, 동시성의 문제를 해결하기 위해 등장한 아키텍처입니다. 많은 웹 기반 애플리케이션은 보통 웹 서버(NGINX), 애플리케이션 서버, 데이터베이스 서버로 구성되어 있으며 하나의 요청은 이 순서대로 도달하게 됩니다. 이때 사용자가 많지 않으면 별 문제가 발생하지 않지만 사용자가 증가함에 따라 병목 현상이 발생하게 됩니다. 병목 현상의 일반적인 해결 방법은 웹 서버를 확장하고 이후 애플리케이션 서버, 데이터베이스 서버 순으로 확장할 수 있지만 뒤로 갈수록 확장하는데 비용도 많이 들고 점차 복잡해져 갑니다. 그리고 최종적으로 데이터베이스의 동시 처리 가능한 트랜잭션 수가 최종 제약조건이 되는 경우가 많습니다. 토폴로지 공간 기반 ..
- Total
- Today
- Yesterday
- spring boot 엑셀 다운로드
- spring boot redisson sorted set
- redis sorted set으로 대기열 구현
- java userThread와 DaemonThread
- spring boot poi excel download
- 트랜잭셔널 아웃박스 패턴 스프링부트
- java ThreadLocal
- 레이어드 아키텍처란
- polling publisher spring boot
- spring boot redisson destributed lock
- 공간 기반 아키텍처
- pipeline architecture
- service based architecture
- redis sorted set
- transactional outbox pattern spring boot
- @ControllerAdvice
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot redis 대기열 구현
- redis 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot redisson 분산락 구현
- space based architecture
- spring boot excel download oom
- pipe and filter architecture
- 람다 표현식
- 자바 백엔드 개발자 추천 도서
- 서비스 기반 아키텍처
- microkernel architecture
- spring boot excel download paging
- transactional outbox pattern
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |