[WIL] 부트캠프 8주차

2025. 9. 7. 23:58·Essay/WIL

이번 주에는 카프카를 직접 써봤다.

글로벌 이벤트와 로컬 이벤트… “이벤트에도 글로벌이 있구나” 싶은 순간도 있었다.

 

어디에 쓰이는지가 먼저 궁금

K.A.F.K.A라는 이름 정도만 아는 상태에서, 이 도구가 무엇으로 구성되는지보다 어디에 쓰이는지가 먼저 궁금했다.

그 부분은 월요일 멘토링에서 전체 흐름을 들으며 큰 도움을 받았다.

이벤트 분리를 처음부터 미세하게 하려니 막막했는데, “쉬운 것부터 해보자”는 말이 전환점이었다.

즉, 주문등록(재고 차감, 포인트 차감, 쿠폰 사용) 같은 핵심 트랜잭션부터 쪼개기보다, 우리 시스템 관점에서 바깥이라고 볼 수 있는 데이터 플랫폼 전송 같은 곳부터 분리해보기로 했다.

그리고 나서 주문등록 이벤트를 떼어내 보니, 예컨대 주문 이벤트 발행 후 포인트 차감이 실패하면 보상 트랜잭션이 필요하다.

다만 모든 걸 보상 트랜잭션으로만 해결하려 들면 작업 순서를 정교하게 이해해야 하고, 잘못하면 뫼비우스의 띠처럼 맴돌 수 있다.

이 지점에서 예전엔 “하나의 트랜잭션”으로만 여겼던 작업들이 사가 패턴으로 연결된다고 하셨다. 아, 그렇게 이어지는 거였구나.

전체 그림을 보고나니 화요일부터는 다른 질문도 할 수 있었다.

 

 

토픽을 이벤트 단위로 나눌 것인가, 도메인 단위로 묶을 것인가?

이벤트 단위라면 “주문완료”, “주문취소”처럼 쪼갤 수 있고, 도메인 단위라면 “주문”으로 뭉칠 수 있다. 둘 중 하나를 고를 수 있고  트레이드오프가 따른다. 이번 과제에서는 도메인 안의 세부 이벤트들이 하는 일이 거의 같아서 굳이 나눌 이유가 없었다. 반대로 세부 이벤트별로 해야 할 일이 달라지면 분리가 필요하겠지.

 

처음 배울 때는 용어도 벽이었다.

카프카는 용어를 텍스트로만 보면 그냥 개념일 뿐이다. 용어가 유기적으로 연결되다 보니 그림으로 그려져야 이해가 되었다. 과제를 수행하다보니 토픽과 컨슈머 그룹은 머릿속에 그림이 그려졌다. 하지만 파티션과 컨슈머는 아직 유기적으로 이어지지 않는다. 순서 보장, 파티션 선택 같은 이슈까지 함께 고려하며 이해하려면, 설정값을 바꿔가며 직접 확인하는 과정이 필요하겠다.

 

마지막으로 예외 케이스를 더 들여다봐야 한다.

메시지 커밋은 예외 상황에서 어떻게 처리되는지, 재시도/실패 시나리오는 어떤 경로를 밟는지 등. 그리고  나중에 다시 실행해 볼 수 있도록 테스트 코드로 남겨 두어야한다.

저작자표시 비영리 변경금지 (새창열림)

'Essay > WIL' 카테고리의 다른 글

[루퍼스] 10주간 돌아보기  (0) 2025.09.19
[WIL] 루퍼스_부트캠프 9주차  (0) 2025.09.14
[WIL] 부트캠프 7주차 : Spring Application Event 기본 용어와 튜토리얼 코드  (0) 2025.09.07
[WIL] 부트캠프 6주차  (0) 2025.08.24
[WIL] 부트캠프 5주차  (1) 2025.08.18
'Essay/WIL' 카테고리의 다른 글
  • [루퍼스] 10주간 돌아보기
  • [WIL] 루퍼스_부트캠프 9주차
  • [WIL] 부트캠프 7주차 : Spring Application Event 기본 용어와 튜토리얼 코드
  • [WIL] 부트캠프 6주차
devstep
devstep
웹 백엔드 개발자
  • devstep
    개발 여정
    devstep
  • 전체
    오늘
    어제
    • 분류 전체보기 (99) N
      • Java (24)
      • Spring Framework (17)
        • Spring (14)
        • JPA (3)
      • Database (9)
        • RDBMS공통 (1)
        • MySQL (6)
        • Redis (1)
        • Oracle (1)
      • Concept (13)
        • 테스트코드 (4)
        • 클린코드 (2)
        • 성능테스트 (4)
        • 설계 (1)
        • 인증 (1)
        • REST API (1)
      • git (2)
      • Intellij (4)
      • Computer Science (3)
        • 네트워크 (1)
        • 자료구조 (1)
        • 보안 (1)
      • Essay (22) N
        • Learning Essay (10)
        • WIL (12) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    단위테스트
    테스트코드
    tdd
    부하테스트도구
    JMeter
    비대칭암호화
    DDD
    대칭암호화
    storageEngine
    ClusteredIndex
    부하테스트
    innodb
    linux
    인텔리제이실행에러
    applicationcontext
    자바메모리모델
    성능테스트
    블록암호화
    seed
    nofile
    카프카
    JavaMemoryModel
    component
    JVM
    springsecurity
    aggregate
    보안
    클린코드
    nginx
    bean
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devstep
[WIL] 부트캠프 8주차
상단으로

티스토리툴바