[항해플러스] Back-end 6기 - 9주차 회고

2024. 11. 23. 16:59· 후기 모음
목차
  1. 📝 피드백 요약
  2. 💡 과제 진행 중 겪었던 기술적 문제
  3. 🔍 문제 해결 과정
  4. 📚 새롭게 알게 된 점
  5. 🔗 Keep: 계속 유지할 점
  6. ⚙️ Problem: 개선이 필요한 점
반응형

Transactional Outbox Pattern 도입 및 Kafka 활용 경험 공유

이번 주에는 Transactional Outbox Pattern을 도입하고, Kafka를 통한 이벤트 발행/구독을 적용하는 작업을 진행했습니다. 프로젝트를 통해 얻은 피드백과 문제 해결 과정을 정리해보았습니다.


📝 피드백 요약

  1. Spring Boot 버전 관리 활용
    • MySQL 의존성을 Spring Boot의 버전 관리 기능으로 관리할 것.
    • 최신 버전을 사용할 때 발생할 수 있는 문제를 예측하고 대처 방안을 고민해볼 것.
  2. 이벤트 리스너 네이밍 개선
    • 기존 이름: paymentSpringEventPublisher
      → 너무 기술에 종속적임.
    • 더 직관적이고 역할 중심적인 이름으로 변경 필요.
  3. 아웃박스 패턴 관련 테스트 코드 작성
    • 패턴 도입 이후, 철저한 테스트 코드를 통해 신뢰성을 확보할 것.
  4. Kafka 구성 관리
    • groupId와 topic의 체계적인 관리 방안을 고민.
  5. 인터페이스 및 구현체 네이밍
    • 인터페이스: OutboxEventRepository
      • 접두어 I는 불필요.
    • 구현체는 역할에 맞게 구체적인 이름으로 구분.
  6. 데이터베이스 성능 최적화
    • PK를 UUID로 설정할 경우 O(n) 탐색 시간이 발생.
    • PK를 BIGINT로 설정하면 O(1) 성능 확보 가능.

💡 과제 진행 중 겪었던 기술적 문제

  1. Transactional Outbox Pattern 설계
    • 첫 도입이다 보니 익숙하지 않았고, 이벤트 기반 설계의 확신 부족으로 방향성을 잡는 데 어려움이 있었습니다.
  2. 이벤트 기반 동작 이해
    • 이벤트 발행 및 보상 처리를 어떻게 설계해야 할지 고민이 많았습니다.

🔍 문제 해결 과정

  • 29cm 기술 블로그의 사례를 참고하여 설계 진행:
    1. 이벤트 발행 전 → 트랜잭션 처리 전 → 트랜잭션 처리 후 → 이벤트 발행 후 순서로 로직 설계.
    2. OutboxEvent 테이블을 설계하여 이벤트 발행 실패나 보상 처리까지 고려.
  • 구체적 처리 흐름:
    • Outbox 패턴을 통해 이벤트 발행과 데이터 일관성을 보장하는 설계를 진행.
    • 실패 시 보상 로직이 동작할 수 있도록 테이블 구조와 트랜잭션 흐름을 설정.

📚 새롭게 알게 된 점

  • 실패 처리 중요성:
    • 이벤트 발행 과정에서 실패를 어떻게 처리할지 고민하며, 단순히 이벤트를 전달하는 것을 넘어 더 안정적인 로직을 설계하는 경험을 얻었습니다.
  • 이벤트 기반 아키텍처 이해 심화:
    • Kafka, Outbox Pattern, CDC 패턴 등 다양한 이벤트 처리 방식을 학습.
    • 각각의 패턴이 갖는 장단점과 적용 시 고려 사항에 대해 이해도를 높일 수 있었습니다.

🔗 Keep: 계속 유지할 점

  • 팀원 리뷰 활용:
    • 과제 이후 팀원 리뷰에서 다양한 의견을 적극적으로 수용.
    • 개인 Repository에서 이슈를 발행하고 개선 작업을 진행한 점이 좋았음.

⚙️ Problem: 개선이 필요한 점

  1. 설계 로직의 세밀함 부족:
    • 현재 Outbox 패턴에서 이벤트 상태(FAILED)만 처리하도록 단순히 설계.
    • 스케줄러나 배치를 활용한 추가 처리 로직이 필요.
  2. 아키텍처 개선:
    • 아웃박스 패턴을 확장하면서 상태 관리 및 장애 복구 방안 추가 필요.

이번 주의 경험을 통해 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
  1. 📝 피드백 요약
  2. 💡 과제 진행 중 겪었던 기술적 문제
  3. 🔍 문제 해결 과정
  4. 📚 새롭게 알게 된 점
  5. 🔗 Keep: 계속 유지할 점
  6. ⚙️ Problem: 개선이 필요한 점
'후기 모음' 카테고리의 다른 글
  • [사내이슈] - 첫 커머스 이슈 대응기
  • [회고록] 항해 백엔드 6기 과정
  • [항해플러스] Back-end 6기 - 8주차 회고
  • [항해플러스] Back-end 6기 - 7주차 회고
iron_jin
iron_jin
배운 것에 대한 내 생각을 가지고 정리하자
學而不思則罔(학이불사즉망)배운 것에 대한 내 생각을 가지고 정리하자
iron_jin
學而不思則罔(학이불사즉망)
iron_jin
전체
오늘
어제
  • 전체 (163)
    • 도서 (10)
    • 생각 정리 (0)
    • 후기 모음 (14)
    • 언어 (20)
      • css (1)
      • java (9)
      • Kotlin (0)
      • javascript (0)
      • Solidity (3)
      • Python (3)
      • GO (3)
      • C++ (1)
    • Spring Framework (32)
      • spring (16)
      • JPA (6)
      • Error (4)
      • Settings (4)
    • 알고리즘 (62)
      • 이론 (0)
      • 연습문제 (58)
    • 인프라 (6)
      • 클라우드 (1)
      • 도커 (0)
      • AWS (4)
      • Elastic Search (0)
    • 쿠버네티스 (3)
      • 이론 (0)
      • 실습 (2)
      • 트러블슈팅 (1)
    • Nginx (2)
    • CS (4)
      • 서버 (0)
      • 리눅스 (2)
      • 네트워크 (0)
      • OAuth (2)
    • 형상관리 (3)
      • GIT (3)
    • Open API (3)
      • 카카오 API (1)
      • QGIS (2)
    • 보안 (0)
      • 알고리즘 (0)
    • 공통 (1)
      • 성능 관리 도구 (1)
    • Database (2)
      • MySQL (1)
      • Redis (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 항해99
  • 2020 kakao
  • spring
  • 프로그래머스
  • spring boot
  • AWS
  • 자바
  • JPA
  • 스프링
  • 백준
  • 항해플러스
  • 2019 카카오
  • 카카오 겨울 인턴십
  • 2019 카카오 블라인드
  • 도메인 주도 개발
  • SpringBoot
  • 2020 카카오 블라인드
  • Python
  • 2018 카카오 블라인드
  • 코딩테스트
  • 2019 kakao
  • Java
  • 2020 카카오
  • 에릭 에반스
  • Hibernate
  • 스프링 부트
  • 2018 kakao
  • ddd
  • MySQL
  • 알고리즘

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
iron_jin
[항해플러스] Back-end 6기 - 9주차 회고
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.