휴넷
기술 스택 정보가 없어요.
최진안
MSA - Transactional Outbox Pattern
안녕하세요. MSA프로젝트에서 트랜잭셔널 아웃박스 패턴은 데이터 변경과 메시지 전송을 동시에 안정적으로 처리하기 위해 사용됩니다. 예시를 통해 이해해봅시다. 회원 정보가 수정될 때, 트랜잭션 내에서 먼저 데이터베이스의 회원 정보를 수정하고 스프링 이벤트를 발행합니다. 이벤트를 받게될 스프링 이벤트 리스너는 2개가 필요한데 그중 한개는 phase설정을 before_commit으로 해서 이벤트를 발행한 서비스 로직과 트랜잭션을 유지하도록 합니다. 그리고 이 before_commit 스프링 이벤트 리스너가 동작하면 이벤트 발행 정보를 RDB의 아웃박스 테이블에 기록합니다. 이 아웃박스 테이블은 전송할 메시지와 이벤트의 정보를 임시로 저장하는 곳입니다. 그 다음, phase를 after_commit으로 설정한 다른 스프링 이벤트 리스너가 before_commit 이벤트 리스너가 종료되면 바로 동작해서 메시지를 브로커(예: Kafka, RabbitMQ)로 전달합니다. 이 방법을 통해 회원 정보 수정과 메시지 전송이 모두 성공적으로 처리되며, 시스템은 데이터 일관성을 유지할 수 있습니다. 따라서, 회원 정보 수정 트랜잭션이 성공하면 아웃박스에 기록된 데이터가 메시지로 안전하게 전송되고, 실패하면 아웃박스에 기록되지 않으므로 메시지도 전송되지 않게 됩니다. 이러한 과정이 어떻게 설계되었을까요? 더 자세히 알고 싶으시다면 아래의 글을 통해 확인하실 수 있습니다. [MSA] Transactional Outbox Pattern - https://curiousjinan.tistory.com/m/entry/transactional-outbox-pattern-microservices-kafka
최진안
헥사고날 아키텍처를 통해 배운점
스프링에 헥사고날 아키텍처를 적용시킨 프로젝트를 진행하며 배운점들을 정리해봤습니다. (주니어 개발자의 회고록입니다!) 잘못된 부분도 있을것이고 보충할 내용도 있을것이라고 생각합니다. 언제든지 조언 부탁드립니다. ?? 블로그 내용은 대략 이렇게 구성되어 있습니다. 1. 헥사고날 아키텍처의 구조 2. 도메인 영역 3. 서비스 영역 4. 어댑터 in 5. 어댑터 out 6. 배운점 감사합니다 :) https://curiousjinan.tistory.com/entry/spring-hexagonal-architecture
💡
휴넷 사람들의
생각이 궁금하다면?
👀
휴넷 사람들의
관심사가 궁금하다면?