JTA 구현체 쓰려고 했더니
mysql 같은 RDB들은 보통 XA 지원하는데
mongodb 같은건 XA 프로토콜을 지원 안하고 앞으로도 할 계획이 없다네?
만약 mongodb가 한다고 해도, 다른 수많은 벤더들이 지원할지 안할지도 미지수고
이런 상황에선 뭐 어케 해야됨? 길을 잃었다
내가 필요한건
쇼핑몰 주문 -> (캐시 업뎃 / mongodb 업뎃 / mysql 업뎃) -> kafka에 프로듀싱
이건데
지금까지는 트랜잭션 제대로 안돼있어서 mysql은 업뎃 됐는데 mongodb에 업뎃 실패했다거나, 그 반대라거나
그런 찐빠가 자꾸 나서 문제인데
이걸 어케 근본적으로 해결하는지 궁금
기술에 의존하지않도록!
트랜잭션은 벤더 기술에 의존하는거 아님? 그리고 이런 상황에서 일반적으로 어떻게 구현하는지 물어보는거임
분산 트랜잭션을 써야하는 상황이 왔다면 이미 설계부터 잘못됨
사가 패턴이건 코디네이터 패턴이건 직접 구현하셈 개념만 알면 크게 안 어려운데 도구들은 이미 널려있고
mysql까지 트랜잭션으로 묶고, 이 트랜잭션 결과를 바로보는 스레드에서 캐시업뎃, 몽고디비 업뎃 치기 - dc App
제가 잘 아는건 아닌데 서로 다른 디비를 트랜잭션 해야하는거면전체를 관리하는 중앙시스템을 두거나 아니면 각자 맡은 역할을 트랜잭션후 다음 로직을 해야 할 곳에이벤트전송으로나 방금 작업 끝났으니까 너 처리하면 돼그리고 중간에 오류가나면 이전애한테는나 오류났으니까 너가한거 롤백해그리고 오류난애의.다음애한테는 나 오류났으니까 너 하지마이렇게 흐르고마지막까지 이상없으면 마지막애가 앞의 모두에게 각각마지막까지 처리끗났으니 완료처리해이런식으로 하면되지 않을까?아니면 중앙시스템이 먼저 모든 디비한테 너희 일 하나 시작했다하고 알림보내고먼저 재고에 대해서 확인해야할거같아재고확인하는애가 재고 있으면 주문량만큼 락걸어두고이제 다음로직애한테 처리하라하고
중간에 에러나면 각자 준비만 마친상태에서 기다리고 있다가 에러난애가 중앙에 에러 보내고 중앙이 나머지한테 전달하거나 또는 에러난애가 앞의애들이랑 뒤에 애들한테 이벤트발송해서 취소하라하고 이러면 어때?