MSA에서 다른 서비스의 트랜잭션이 실패된다면 어떻게 해야할까?, Saga

이 글은 MSA 환경에서 다른 서비스의 트랜잭션 Fail으로 인한 보상로직을 작성하는 방법에 대해서 다루는 글입니다. 이 글을 쓰는 이유 최근에 MSA하다가 A 컴포턴트에서 트랜잭션을 마치고, B 컴포넌트에 이벤트를 던져두었더니, B 컴포넌트가 제대로 처리를 못하면 어떻게 해야하나라는 질문을 받았습니다. 그래서 해결책을 찾아보다가 이 해결책으로 Saga pattern을 알게 되었고, Saga pattern에 대해서 공유하고자 글을 씁니다. https://microservices.io/patterns/data/saga.html Microservices Pattern: Pattern: Saga Implement transactions using a saga, which is sequence of local ..

Web 2024.04.13 0

스프링에서 싱글톤으로 관리하는 빈의 생성주기

스프링 빈 생성주기에 대해서 배웠다. 정확히는 스프링에서 싱글톤으로 관리하는 빈에 대한 생성주기였다. 스프링 컨테이너 생성 스프링 컨테이너의 생성은 말 그대로 Application Context(이하 스프링 컨테이너)의 생성이다. 빈 객체 등록 스프링 컨테이너가 생성되면 빈 객체 등록이 이뤄진다. 이때, 빈이 생성자 주입을 사용하도록 되어있다면, 필요한 의존관계가 빈 객체등록 시점에서 이뤄진다. 의존관계 주입 만약 모든 의존관계가 다 생성자 등록이라면 빈 객체등록이 끝나는 시점에 의존관계 주입도 이미 끝나있을 것이다. 이 의존관계 주입단계에서는 수정자 주입이나, 필드주입을 받는 빈이 주입을 받는다. 초기화 콜백 위 단계에서 의존관계가 주입된 빈들은 초기화 콜백이 수행된다. 초기화 콜백은 Initializ..

Spring 2023.01.26 0

복 받으실거에요

복 받는 삶이란 무엇일까.어제 남양주에 있는 카페에 잠시 놀러갔는데, 루프탑에서 어떤 어머니가 아들들 두명 사진을 찍어주고 계셨다. 주차장에서부터 그 모습을 보고 사진을 꼭 찍어드리고 싶다는 생각이 들어서 올라가서 세 모자의 사진을 찍어드리겠다고 말씀드렸다.- 저 저기 주차장에서부터 오는데 아들들 사진만 찍어주시더라구요. 혹시 괜찮으시면 세 분 같이 있는 사진을 찍어드려도 괜찮을까요? 사진에 자식들만 나오면 서운하잖아요. - ???.. 오.. 감사합니다~~셋이서 있는 모습을 찍어주다보니 아버님도 오셔서 네 분의 사진을 찍어드렸다. 넷이서 함께 있는 모습을 보니 마음이 좋아져서 열심히 찍어드렸다. 좀 찍어드리고 뒤돌아서 카페로 들어가는데 복 받으실거에요. 라고 말씀해주셨다. 그런 말씀을 들을 수 있어서 감..

나의 생각 2025.03.22 0

트랜잭션후 메시지 전송을 보장하는 방법, How to guarantee to send events after Transaction

이 글에서 다루는 내용 이 글은 MSA 환경에서 로컬 트랜잭션의 커밋이후 메시지 전송을 보장하는 방법에 대해서 다룹니다. 내용을 다루기 위해서 예시와 함께 작성되었습니다. https://microservices.io/patterns/data/transactional-outbox.html Microservices Pattern: Pattern: Transactional outbox First, write the message/event to a database OUTBOX table as part of the transaction that updates business objects, and then publish it to a message broker. microservices.io 목차 트랜잭션의 커..

Web 2024.04.22 0

MockKInjects 및 Lateinit 사용을 통한 Kotlin 테스트 이슈 해결하기

글을 쓰게 된 이유 이번 블로그 글에서는 Kotlin 테스트를 진행하면서, 특히 MockKInjects를 사용하면서 마주친 이슈를 공유하려 합니다. 이 문제는 테스트 클래스 생성자의 실행과 Injectmock에서 발생하는 버그와 관련이 있습니다. 디버깅하면서 봤던 코드들을 공유하면 다른 분들이 보기에 좋겠다 생각이 들어서 공유하기 위해 글을 씁니다. 문제 상황 MockKInjects를 작업하는 동안 테스트 클래스 생성자를 호출하면 Injectmock와 관련된 오류가 발생하는 걸 봤습니다. 오류 메시지는 다음과 같았습니다: No ParameterResolver registered for parameter [%s] in %s [%s]. injectmocks에 주입해줄 파라미터들을 못찾는 이슈였는데, 저같은 ..

Kotlin 2023.12.13 0