인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

wisehero님의 프로필 이미지

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

인기글 Producer 설계 - Transactional Messaging

아웃박스 패턴과 로그 테일링 기법의 선택 기준에 대해서

해결된 질문

작성

·

86

·

수정됨

0

안녕하세요 쿠케님 강의 잘 듣고 있습니다.

아웃박스 패턴과 로그 테일링 기법은 물론 애플리케이션의 특징마다 다르겠지만

로그 테일링 기법이 선호되는 경우는 어떤게 있을까요?

 

LLM 챗봇들과 열심히 논의해본 결과 둘은 실시간성과 구현의 단순성에서 가장 큰 차이로 느꼈는데요. 실제로도 두 가지가 핵심적인 기준 역할을 하는지가 궁금하고 이외에 제가 찾지 못한 다른 것이 있다면 무엇이 있을까요?

답변 2

1

쿠케님의 프로필 이미지
쿠케
지식공유자

wisehero님, 안녕하세요!

 

강의에서도 아웃박스 선택한 이유에 대해 나름의 근거가 서술되는데요, 부가적인 내용과 함께 간략히 다시 설명해봅니다.

개인적으로 엄청 어려운게 아니라면 직접 만드는걸 재밌어하기도 하고,

직접 만들면 원하는 방향으로 커스텀할 수도 있으면서 문제 시 원인 찾기도 쉽고, 흐름이 눈에 확 드러나서 좋더라고요.

외에도, 보통 큰 회사에서는 DB를 개발팀이 아니라 별도 운영팀에서 관리하다보니 로그 테일링을 아예 적용할 수 없는 상황도 있어서 직접 만들어본 것도 있습니다.

 

그런데, 로그 테일링 기법을 사용할 수 없는 상황이 아니라면, 그냥 로그 테일링 기법 사용하는게 마음 편할 수 있습니다.

분산 DB에서 순서/재처리/처리량 등 모든 요소 다 고려하다보면, 아웃박스 패턴 구현하는게 쉽진 않거든요..!

강의에서도 샤딩 환경을 가정하면서 전반적인 흐름을 파악하고 구현하지만, 실무에서는 고려할 부분이 훨씬 많습니다. (카프카/DB 설정 등, 재처리도 원래는 별도 앱으로 분리하는게 좋습니다.)

 

실시간성은 두 방식 모두 가지고 있고,

CDC를 쓸 수 있는 환경인가, 아웃박스 직접 만들 수 있겠는가, 팀 또는 개인의 선호도?

이 정도가 기준이 될 것 같긴 하네요!

 

실시간성 차이가 있다는건, 보통 아웃박스를 저장한 후에 별도 스레드에서 polling하는 방식으로 구현하기 때문에 그런 식으로 답해준 것 같은데,

강의에서는 트랜잭션 커밋되자마자 비동기로 즉시 전송하기 때문에 실시간성에서 차이는 딱히 없을 것 같네요!

 

혹시 더 궁금한 점 있으시면 편히 문의 주세요!

wisehero님의 프로필 이미지
wisehero
질문자

아~ 강의에서 채택한 방식은 커밋 후 비동기 즉시 전송이라는 점을 놓치고 있었네요!

지금 듣고 있는 섹션이 제일 어려운 섹션 같은데 그만큼 뭔가 더 열심히 해야겠다는 의욕이 생기고 있습니다. 답변 감사드립니다~!

쿠케님의 프로필 이미지
쿠케
지식공유자

제일 어려운 섹션 맞습니다 ㅎㅎㅎ

마지막 최적화 부분도 꽤나 어렵지만, 인기글 부분에서 이벤트와 카프카 활용법 잘 익히면 무난하게 수강하실 수 있을겁니다!

어려운데도 포기하지 않으시고 훌륭한 자세네요!

강의 잘 들어주셔서 감사 드리고 화이팅입니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. wisehero님.

아웃박스 패턴과 로그 테일링 기법의 차이 및 선택 기준에 대해 궁금하신 점에 대해 설명드리겠습니다. 두 방식 모두 데이터 일관성을 유지하기 위해 사용되나, 적용 상황에 따라 선호되는 경우가 다를 수 있습니다.

아웃박스 패턴과 로그 테일링 기법 비교

  1. 아웃박스 패턴:

    • 장점: 데이터베이스의 트랜잭션을 활용하여 일관성을 보장할 수 있습니다. 또한 애플리케이션 레벨에서 로직을 쉽게 관리할 수 있어 익숙한 환경에서 구현할 수 있다는 장점이 있습니다.
    • 적용 상황: 주로 데이터베이스 트랜잭션과의 결합이 필요한 경우나 복잡한 비즈니스 로직 통합이 요구될 때 사용됩니다.
  2. 로그 테일링 기법:

    • 장점: 데이터베이스를 직접 변경하지 않고 데이터 일관성을 유지할 수 있습니다. 실시간으로 데이터 변화를 감지하여 반응할 수 있습니다.
    • 적용 상황: 실시간성이 더 중요하고, 데이터베이스가 직접적으로 변경될 수 없는 경우 혹은 기존 시스템에 비침투적(less intrusive)으로 적용해야 할 때 선호됩니다.

추가 고려 사항

  • 실시간성: 로그 테일링 기법은 변경 감지가 즉시 일어나므로 실시간 대응이 필요한 시스템에 적합합니다.
  • 복잡도 및 유지보수: 아웃박스 패턴은 데이터베이스와의 결합이 강하기 때문에 중복 처리를 방지하는 등의 로직이 필요하지만, 로그 테일링은 별도의 시스템을 운영하므로 복잡성이 증가할 수 있습니다.
  • 기존 시스템 호환성: 로그 테일링은 기존 시스템을 크게 변경하지 않고 통합할 수 있어 레거시 시스템과의 통합에 유리할 수 있습니다.

질문하신 주제와 관련하여 추가적인 설명이 필요하시다면, 아래의 유사한 질문 URL을 참고하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

wisehero님의 프로필 이미지

작성한 질문수

질문하기