Skip to Content
Infra & DevOps배치 실행 시간과 영향 범위 정리하기
☁️ Infra & DevOps2020년 3월 16일

배치 실행 시간과 영향 범위 정리하기

#e-commerce#into-commerce#operations#scheduler#infra-devops
Series 3 · Operations / Tooling1 / 4Infra & DevOps
운영 중인 배치의 시간대와 영향을 파악하기 위해 스케줄을 정리한 이야기입니다.

커머스 플랫폼에서는 사용자 요청이 끝난 뒤에도 처리할 일이 남았습니다. 주문 후처리와 외부 연동, 집계 같은 작업은 배치로 이어졌고, 운영할 때는 이 작업들의 상태도 함께 봐야 했습니다.

배치가 많아지니 이름과 실행 주기만 나열한 목록으로는 전체 흐름을 파악하기 어려웠습니다. 어떤 시간대에 작업이 겹치는지 볼 수 있도록 스케줄을 시간축으로 정리하고 시각화했습니다.

목록에서 시간축으로

목록에서는 개별 작업의 실행 주기를 찾을 수 있습니다. 시간축으로 보면 여러 작업이 한 시점에 몰리는 구간을 비교하기 쉽습니다.

배치가 서로 다른 기능을 맡더라도 같은 DB나 서버 자원을 사용할 수 있습니다. 실행 시간이 겹치는 구간은 자원 사용량과 서비스 지연을 대조할 출발점이 됩니다. 단, 같은 시간에 실행됐다는 사실만으로 병목의 원인이 같다고 단정할 수는 없습니다.

예정 시각과 실제 실행

스케줄에 적힌 시각은 실행 예정 시각입니다. 실제 시작은 지연될 수 있고, 데이터량이나 재시도 때문에 끝나는 시각도 달라질 수 있습니다.

예를 들어 10분 간격인 작업이 15분 걸린다면 다음 실행과 겹치거나 대기할 수 있습니다. 이는 설명을 위한 예시이며, 중복 실행을 허용하는지와 지연된 실행을 처리하는 방식은 사용하는 스케줄러 설정에 따라 확인해야 합니다.

스케줄 표에 실제 실행 이력을 함께 보면, 예정된 겹침과 실행 지연으로 생긴 겹침을 구분할 수 있습니다. 시작 시각·종료 시각·실행 결과가 필요한 이유입니다.

실패 이후의 영향

작업 하나가 실패해도 사용자 화면에는 바로 문제가 보이지 않을 수 있습니다. 대신 외부 전달이 늦어지거나, 뒤에서 읽을 데이터가 갱신되지 않은 채 남을 수 있습니다.

그래서 배치를 정리할 때는 이름과 주기 외에 다음 정보를 함께 두는 편이 유용합니다.

  • 입력으로 읽는 데이터와 완료 후 바뀌는 상태
  • 이 작업의 결과를 기다리는 후속 작업
  • 지연을 허용할 수 있는 범위와 확인 담당자
  • 재실행 전에 확인할 처리 범위

이 정보가 있으면 실패한 작업을 발견했을 때 무엇부터 확인할지 정하기 쉽습니다.

재실행 전 확인

재실행은 실패한 시점에서 자동으로 이어지는 것과 다를 수 있습니다. 외부 전송이나 상태 변경이 일부 완료된 작업을 처음부터 다시 돌리면 중복 처리가 생길 수 있습니다.

실패한 실행의 대상 기간과 처리한 범위를 확인하고, 작업 전체를 재실행할지 남은 부분만 처리할지 판단해야 합니다. 스케줄을 보는 화면과 실행 결과를 보는 기록이 연결돼 있으면 이런 확인에도 도움이 됩니다.

당시에는 배치 스케줄을 시간순으로 정리하고 시각화해, 어떤 작업이 같은 시간대에 몰리는지 볼 수 있게 했습니다. 배치 실행 시간 단축이나 장애 해결까지 확인한 기록은 아닙니다. 지연 원인을 판단하려면 예정된 시각에 더해 실제 실행 이력과 DB·서비스 영향을 함께 확인해야 했습니다.

다음 글에서는 서비스별 운영 로그 확인을 이어서 다루겠습니다.

Last updated on