😭 이슈 발생 어느 날 팀원분이 PinPoint 모니터링 중 병목이 발생한다고 말씀을 해주셨는데, 일단 구체적인 원인을 모르니 상황을 조금 더 지켜보기로 했습니다. 병목이 발생한 타이밍이 필자가 RabbitMQ 설정을 추가적으로 설정한 탓에 발생한 건가?라는 생각을 했었는데 추후에 RabbitMQ 설정을 원래대로 설정을 하고 배포를 했는데도 불구하고 계속하여 문제가 발생을 하였습니다. RabbitMQ와 관련이 없구나 생각한 후 aws Cloudwatch의 로그를 보던 중 특정 API 호출 후 문제가 발생하는 것 같은 느낌을 받아 특정 API의 소스코드를 보았는데 QueryDSL의 메서드 중 transform 메서드를 확인하고 이게 어떤 역할을 하는지부터 찾아보게 되었습니다. 그리고 이녀석이 문제였구나 알..
서론 교착상태란 두 개 이상의 프로세스 또는 스레드가 상대방의 작업이 끝나길 하염없이 기다리고만 있는 상태를 말합니다. 예를 들면 두 기차가 교차로에 진입했을 때, 두 기차 중 하나의 기차가 지나가는 게 아닌 일단 두 기차 모두 정지하고 상대방이 없어지길 기다린 후 기차가 지나가는 것입니다. 이 예를 보면 기차가 둘 다 정지했는데 어떻게 상대방이 없어지길 기다리고 내가 지나갈 수 있는거지? 라는 생각이 들 것입니다. 이게 바로 교착상태입니다. 앞서 말했듯이 교착상태란 상대방의 작업이 끝나길 하염없이 기다리는데, 상대방 또한 내가 끝나길 하염없이 기다릴 테니 아무런 행동 조차할 수 없는 것이죠 교착상태는 어떤 조건하에 발생하는가? 교착상태는 상호배제, 점유대기, 비선점, 순환 대기 이러한 4가지 조건이 모..
Pessimisitic Lock : 비관적 잠금 비관적 잠금은 여러 트랜잭션이 동일한 데이터에 동시에 접근하고 수정하는 것을 방지하는 잠금 매커니즘입니다. 이 잠금에서의 트랜잭션은 특정 데이터 항목을 읽거나 수정하기 전에 해당 데이터에 대한 잠금을 요청하고 트랜잭션이 완료될 때 잠금을 해지합니다. 이렇게 한 번에 하나의 트랜잭션만이 데이터에 접근하고 수정할 수 있으므로 데이터 불일치 및 데이터 충돌 문제를 해소할 수 있습니다. 하지만 교착 상태에 빠질 우려가 있으니 주의가 필요합니다. 💡 비관적 잠금의 과정 💡 비관적 잠금의 교착 상태 아래 순서에 따르면 스레드 A는 영원히 스레드 B에 대한 비관적 잠금을 구할 수 없습니다. 그 이유는 스레드 B가 B 에그리게이트에 대해 잠금을 이미 선점하고 있기 때문입..
RabbitMQ를 사용하여 알림 발송하기 1편 Spring Boot - RabbitMQ를 사용하여 알림 발송 1편 ApplicationEventPublisher란? 이벤트 리스너는 발생된 event에 반응하고 이벤트 리스너는 발생된 event를 전달받아 이벤트에 담긴 데이터를 기반으로 특정한 기능을 수행합니다. 🤔 왜 ApplicationEventPublishe kdg-is.tistory.com 지난 이야기 지난 이야기에서는 RabbitMQ를 사용하여 특정 클라이언트가 회원가입을 완료했을 경우 알림을 보냈습니다. 하지만 알림을 데이터 베이스에 저장하는 상황에서 예외가 발생하다면 어떻게 대처할 것인가에 대해서는 설명하지 않았습니다. 이번 편에서는 어떻게 대처할 수 있을까에대해 알아보겠습니다. 필자가 설명하..
- Total
- Today
- Yesterday
- 레이어드 아키텍처란
- spring boot poi excel download
- 공간 기반 아키텍처
- transactional outbox pattern
- microkernel architecture
- pipe and filter architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- redis 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot excel download oom
- 람다 표현식
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot redisson sorted set
- 서비스 기반 아키텍처
- spring boot redisson destributed lock
- spring boot redisson 분산락 구현
- space based architecture
- java userThread와 DaemonThread
- pipeline architecture
- polling publisher spring boot
- spring boot redis 대기열 구현
- redis sorted set으로 대기열 구현
- redis sorted set
- spring boot 엑셀 다운로드
- 자바 백엔드 개발자 추천 도서
- transactional outbox pattern spring boot
- @ControllerAdvice
- spring boot excel download paging
- service based architecture
- java ThreadLocal
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |