강의

멘토링

커뮤니티

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

HH님의 프로필 이미지
HH

작성한 질문수

제미니의 개발실무 - 커머스 백엔드 기본편

개념 정리

타임베이스 정산 배치 실패 시 처리에 대해

작성

·

18

1

안녕하세요 시간날 때 틈틈히 보다가 어느새 막바지에 다다랐네요!

 

타임베이스 정산 배치가 실패했을 때 궁금한점이 있습니다.

 

우선 현재는 시간 대별로 오전 1시, 4시, 9시로 배치가 나눠져있는데

이 상황에서 강의에서도 설명하셨듯이 오전 1시 배치가 오전 4시 30분에 끝나서 오전 4시의 배치가 에러가 뱉는 상황에 대해 문제를 해결하는 방법들이 궁금합니다!

 

우선 제가 생각한 방법들은 다음과 같습니다.

1. 이벤트 기반

이벤트 기반으로 각 단계가 완료되면 바로 다름 배치 단계로 넘어가는 방식입니다.

하지만 이 방법은 이미 기존 인프라와 코드를 변경해야하고 정산 시간이 고정 된다는 요구사항이 있다고도 보여 현재 요구사항에는 적절하진 않은 것 같습니다.

 

2. 각 배치마다 전 단계 완료 여부 상태를 확인

오전 4시, 오전 9시 배치가 이전 단계의 배치 중 실패한 배치 이력이 있는지 확인하는 방법입니다.

현재 스케줄링 방식으로는 이를 위해 별도의 배치 기록 테이블을 만들어서 배치 이력 관리를 추가합니다.

오전 4시, 오전 9시에 해당 정산 날짜에 대해 실패한 이전 배치 단계 이력이 있다면 성공할 때 까지 N번 재시도 합니다.

정산의 즉시성이 필요하다면 N번 재시도 후 실패했을 때 해당 배치 단계를 에러 상태로 처리하고,

에러 로깅과 알림을 전송합니다.

다음 배치 단계는 정산 날짜에 해당하는 이전 배치 이력이 에러 상태로 남아 있다면 실행하지 않습니다.

 

현재 요구사항에서는 수동으로 처리할 부분은 최대한 제거하는 2번 방식을 사용할 수 있을 것 같습니다.

제가 배치 관리에 대해 잘 이해하고 있는지 모르겠어서 생각한 방법에 대해서 재민님은 어떻게 생각하시는지 궁금합니다.!

 

항상 잘 보고 있습니다 감사합니다!

 

 

답변 2

0

제미니님의 프로필 이미지
제미니
지식공유자

안녕하세요! 질문 감사드립니다!

우선 가장 리소스 효율적으로 접근한다는 측면에서는 배치 시간 간격을 더 멀리 띄워 놓으면 당장 며칠은 버틸 수 있을 것 같습니다!
(반대로 각 배치의 성능을 올려서 시간을 단축 할 수도 있겠죠ㅎㅎ 이 부분도 어떻게하면 시간 단축이 가능할지 고민해보시길 권장드립니다!)


이어서는 2번의 전략을 활용 할 수 있을 것 같습니다 (1번은 적어주신대로 지금 우리가 하기엔 리소스 효율이 없다고 가정하겠습니다)

여기서 생각해보실 부분은 이전 배치의 실패 이력을 체크하는 것으로 해결이 가능한지 고민해보시면 좋을 것 같습니다!

1시 배치가 4시30분에 정상적으로 끝났다면, 4시 배치가 수행 되려 할때 실패 이력은 없을 것 이기 때문입니다!

그럼 추가적인 데이터를 관리한다면 말씀하신 구현의 느낌으로 해당 문제 해결이 가능 할 것으로 보여집니다!


추가적으로 고민이 되시는건 편하게 댓글이나 추가 질문 부탁드립니다!

모쪼록 답이 되었길 바라며 강의가 도움이 되었길 바랍니다! 완강까지 고생하셨습니다!

0

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

타임베이스 정산 배치 실패 시 처리에 대해 고민하시는 부분 잘 봤습니다. 현재 배치 작업 시간을 나누어 관리하고 있는데, 시간적으로 겹쳐서 에러가 발생할 수 있는 상황에 대해 적절한 해결 방법들을 고민하셨군요. 제안하신 두 가지 방법 모두 의미 있는 접근입니다.

제안된 방법 분석

  1. 이벤트 기반 처리:

    • 기존의 스케줄을 변경해야 할 수도 있고, 정산 시간을 고정해야 하는 경우에는 적합하지 않을 수 있습니다. 이 방법은 상당한 인프라 변경이 요구되며, 배치 수행 시점 간의 유연성이 필요할 때 고려하기 어렵습니다.
  2. 배치 완료 여부 확인 후 실행:

    • 이 방법은 일정 관리와 충돌 방지 측면에서 실제로 많은 경우 사용되는 패턴입니다. 이전 단계의 완료 여부를 확인하고, 실패 시 재시도를 하며 상태 관리를 통해 다음 단계의 실행을 제어합니다. 이는 시스템이 자동적으로 문제를 해결할 수 있도록 하는 구조로, 즉시성 또한 어느 정도 보장됩니다.

추가 고려사항

  • 롤백 및 재시도 전략: 재시도 횟수 및 롤백 전략을 명확히 정의해야 합니다. 배치 프로세스 중 일부 단계가 실패할 경우, 전체를 어떻게 리커버리할 지에 대한 명확한 전략이 필요합니다.

  • 모니터링 및 알람: 배치 과정에서 발생할 수 있는 문제를 실시간으로 파악하기 위해, 모니터링과 알람 시스템을 강화하는 것도 중요합니다. 이를 통해 상황 발생 시 빠르게 대응할 수 있습니다.

  • 우선순위 및 의존성 관리: 배치 프로세스 간의 의존성, 그리고 우선순위를 명확히 설정해 두어 문제 상황에 적절히 대처할 수 있도록 해야 합니다.

해당 방법들이 실제로 제대로 동작할지, 혹은 다른 방법들이 이 상황에 더 적절할지 확신이 서지 않는다면, 테스트 환경에서 다양한 상황을 시뮬레이션 해보는 것도 추천드립니다.

이외에도 정산 배치 관리에 대한 기존의 경험이나 사례를 확인하는 것도 좋습니다. 아래 유사한 질문에 대한 답변들이 도움이 될 수 있겠습니다:

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

HH님의 프로필 이미지
HH

작성한 질문수

질문하기