반응형
Transactional Outbox Pattern 도입 및 Kafka 활용 경험 공유
이번 주에는 Transactional Outbox Pattern을 도입하고, Kafka를 통한 이벤트 발행/구독을 적용하는 작업을 진행했습니다. 프로젝트를 통해 얻은 피드백과 문제 해결 과정을 정리해보았습니다.
📝 피드백 요약
- Spring Boot 버전 관리 활용
- MySQL 의존성을 Spring Boot의 버전 관리 기능으로 관리할 것.
- 최신 버전을 사용할 때 발생할 수 있는 문제를 예측하고 대처 방안을 고민해볼 것.
- 이벤트 리스너 네이밍 개선
- 기존 이름:
paymentSpringEventPublisher
→ 너무 기술에 종속적임. - 더 직관적이고 역할 중심적인 이름으로 변경 필요.
- 기존 이름:
- 아웃박스 패턴 관련 테스트 코드 작성
- 패턴 도입 이후, 철저한 테스트 코드를 통해 신뢰성을 확보할 것.
- Kafka 구성 관리
groupId
와topic
의 체계적인 관리 방안을 고민.
- 인터페이스 및 구현체 네이밍
- 인터페이스:
OutboxEventRepository
- 접두어
I
는 불필요.
- 접두어
- 구현체는 역할에 맞게 구체적인 이름으로 구분.
- 인터페이스:
- 데이터베이스 성능 최적화
- PK를 UUID로 설정할 경우 O(n) 탐색 시간이 발생.
- PK를
BIGINT
로 설정하면 O(1) 성능 확보 가능.
💡 과제 진행 중 겪었던 기술적 문제
- Transactional Outbox Pattern 설계
- 첫 도입이다 보니 익숙하지 않았고, 이벤트 기반 설계의 확신 부족으로 방향성을 잡는 데 어려움이 있었습니다.
- 이벤트 기반 동작 이해
- 이벤트 발행 및 보상 처리를 어떻게 설계해야 할지 고민이 많았습니다.
🔍 문제 해결 과정
- 29cm 기술 블로그의 사례를 참고하여 설계 진행:
- 이벤트 발행 전 → 트랜잭션 처리 전 → 트랜잭션 처리 후 → 이벤트 발행 후 순서로 로직 설계.
- OutboxEvent 테이블을 설계하여 이벤트 발행 실패나 보상 처리까지 고려.
- 구체적 처리 흐름:
- Outbox 패턴을 통해 이벤트 발행과 데이터 일관성을 보장하는 설계를 진행.
- 실패 시 보상 로직이 동작할 수 있도록 테이블 구조와 트랜잭션 흐름을 설정.
📚 새롭게 알게 된 점
- 실패 처리 중요성:
- 이벤트 발행 과정에서 실패를 어떻게 처리할지 고민하며, 단순히 이벤트를 전달하는 것을 넘어 더 안정적인 로직을 설계하는 경험을 얻었습니다.
- 이벤트 기반 아키텍처 이해 심화:
- Kafka, Outbox Pattern, CDC 패턴 등 다양한 이벤트 처리 방식을 학습.
- 각각의 패턴이 갖는 장단점과 적용 시 고려 사항에 대해 이해도를 높일 수 있었습니다.
🔗 Keep: 계속 유지할 점
- 팀원 리뷰 활용:
- 과제 이후 팀원 리뷰에서 다양한 의견을 적극적으로 수용.
- 개인 Repository에서 이슈를 발행하고 개선 작업을 진행한 점이 좋았음.
⚙️ Problem: 개선이 필요한 점
- 설계 로직의 세밀함 부족:
- 현재 Outbox 패턴에서 이벤트 상태(
FAILED
)만 처리하도록 단순히 설계. - 스케줄러나 배치를 활용한 추가 처리 로직이 필요.
- 현재 Outbox 패턴에서 이벤트 상태(
- 아키텍처 개선:
- 아웃박스 패턴을 확장하면서 상태 관리 및 장애 복구 방안 추가 필요.
이번 주의 경험을 통해 Transactional Outbox Pattern과 Kafka를 활용한 이벤트 기반 아키텍처 설계에 대한 실질적인 이해를 높일 수 있었습니다. 앞으로는 설계의 세밀함과 확장성을 더욱 강화하는 방향으로 발전시켜 나갈 계획입니다. 😊
반응형
LIST
'후기 모음' 카테고리의 다른 글
[사내이슈] - 첫 커머스 이슈 대응기 (3) | 2025.01.04 |
---|---|
[회고록] 항해 백엔드 6기 과정 (3) | 2024.12.01 |
[항해플러스] Back-end 6기 - 8주차 회고 (6) | 2024.11.17 |
[항해플러스] Back-end 6기 - 7주차 회고 (3) | 2024.11.09 |
[항해플러스] Back-end 6기 - 6주차 회고 (0) | 2024.11.02 |
반응형
Transactional Outbox Pattern 도입 및 Kafka 활용 경험 공유
이번 주에는 Transactional Outbox Pattern을 도입하고, Kafka를 통한 이벤트 발행/구독을 적용하는 작업을 진행했습니다. 프로젝트를 통해 얻은 피드백과 문제 해결 과정을 정리해보았습니다.
📝 피드백 요약
- Spring Boot 버전 관리 활용
- MySQL 의존성을 Spring Boot의 버전 관리 기능으로 관리할 것.
- 최신 버전을 사용할 때 발생할 수 있는 문제를 예측하고 대처 방안을 고민해볼 것.
- 이벤트 리스너 네이밍 개선
- 기존 이름:
paymentSpringEventPublisher
→ 너무 기술에 종속적임. - 더 직관적이고 역할 중심적인 이름으로 변경 필요.
- 기존 이름:
- 아웃박스 패턴 관련 테스트 코드 작성
- 패턴 도입 이후, 철저한 테스트 코드를 통해 신뢰성을 확보할 것.
- Kafka 구성 관리
groupId
와topic
의 체계적인 관리 방안을 고민.
- 인터페이스 및 구현체 네이밍
- 인터페이스:
OutboxEventRepository
- 접두어
I
는 불필요.
- 접두어
- 구현체는 역할에 맞게 구체적인 이름으로 구분.
- 인터페이스:
- 데이터베이스 성능 최적화
- PK를 UUID로 설정할 경우 O(n) 탐색 시간이 발생.
- PK를
BIGINT
로 설정하면 O(1) 성능 확보 가능.
💡 과제 진행 중 겪었던 기술적 문제
- Transactional Outbox Pattern 설계
- 첫 도입이다 보니 익숙하지 않았고, 이벤트 기반 설계의 확신 부족으로 방향성을 잡는 데 어려움이 있었습니다.
- 이벤트 기반 동작 이해
- 이벤트 발행 및 보상 처리를 어떻게 설계해야 할지 고민이 많았습니다.
🔍 문제 해결 과정
- 29cm 기술 블로그의 사례를 참고하여 설계 진행:
- 이벤트 발행 전 → 트랜잭션 처리 전 → 트랜잭션 처리 후 → 이벤트 발행 후 순서로 로직 설계.
- OutboxEvent 테이블을 설계하여 이벤트 발행 실패나 보상 처리까지 고려.
- 구체적 처리 흐름:
- Outbox 패턴을 통해 이벤트 발행과 데이터 일관성을 보장하는 설계를 진행.
- 실패 시 보상 로직이 동작할 수 있도록 테이블 구조와 트랜잭션 흐름을 설정.
📚 새롭게 알게 된 점
- 실패 처리 중요성:
- 이벤트 발행 과정에서 실패를 어떻게 처리할지 고민하며, 단순히 이벤트를 전달하는 것을 넘어 더 안정적인 로직을 설계하는 경험을 얻었습니다.
- 이벤트 기반 아키텍처 이해 심화:
- Kafka, Outbox Pattern, CDC 패턴 등 다양한 이벤트 처리 방식을 학습.
- 각각의 패턴이 갖는 장단점과 적용 시 고려 사항에 대해 이해도를 높일 수 있었습니다.
🔗 Keep: 계속 유지할 점
- 팀원 리뷰 활용:
- 과제 이후 팀원 리뷰에서 다양한 의견을 적극적으로 수용.
- 개인 Repository에서 이슈를 발행하고 개선 작업을 진행한 점이 좋았음.
⚙️ Problem: 개선이 필요한 점
- 설계 로직의 세밀함 부족:
- 현재 Outbox 패턴에서 이벤트 상태(
FAILED
)만 처리하도록 단순히 설계. - 스케줄러나 배치를 활용한 추가 처리 로직이 필요.
- 현재 Outbox 패턴에서 이벤트 상태(
- 아키텍처 개선:
- 아웃박스 패턴을 확장하면서 상태 관리 및 장애 복구 방안 추가 필요.
이번 주의 경험을 통해 Transactional Outbox Pattern과 Kafka를 활용한 이벤트 기반 아키텍처 설계에 대한 실질적인 이해를 높일 수 있었습니다. 앞으로는 설계의 세밀함과 확장성을 더욱 강화하는 방향으로 발전시켜 나갈 계획입니다. 😊
반응형
LIST
'후기 모음' 카테고리의 다른 글
[사내이슈] - 첫 커머스 이슈 대응기 (3) | 2025.01.04 |
---|---|
[회고록] 항해 백엔드 6기 과정 (3) | 2024.12.01 |
[항해플러스] Back-end 6기 - 8주차 회고 (6) | 2024.11.17 |
[항해플러스] Back-end 6기 - 7주차 회고 (3) | 2024.11.09 |
[항해플러스] Back-end 6기 - 6주차 회고 (0) | 2024.11.02 |