배치 서비스 특징

분할 처리

배치 서비스에서 처리하는 데이터는 일반적으로 대량의 데이터이다. 대량 데이터를 DB에서 DB로 전송하는 경우 그 건수가 10만건부터 100만건에 이를 수도 있다. 이런 대량의 데이터를 하나의 트랜잭션 단위로 처리하는것은 적절하지 않다. 따라서 배치 서비스에서는 처리 대상 데이터 건수에 따라 처리 대상 데이터를 일정 크기로 분할하여 처리한다.

재처리

배치 서비스를 재처리하기 위해서는 최초 요청에서 생성된 배치 작업 ID를 포함하여 요청한다. ISM은 배치 작업 ID가 기존에 오류 발생했던 작업이면 오류 발생한 데이터 구간 부터 다시 작업을 수행한다. 실패한 작업에 대해서는 관리자가 웹콘솔을 통해 다시 처리할 수도 있다.

선처리, 후처리

배치 서비스를 수행하기 전이나 수행한 후에 처리해야 할 작업이 있다면 배치 서비스의 선처리 혹은 후처리로 등록하여 수행하도록 할 수 있다. 예를 들어, 수신 시스템에 파일을 전송하는 배치 서비스에서 파일 전송이 완료된 후에 수신에 저장된 파일을 수신 시스템의 DB에 반영하여야 한다면, 수신 시스템의 파일을 DB로 올리는 스크립트를 실행시키는 후처리 태스크를 등록하여 배치 서비스가 성공한 후에 실행하도록 할 수 있다. 선처리가 실패하면 배치 본 작업은 수행되지 않는다. 배치 본 작업이 정상적으로 완료되지 않으면 후처리는 수행되지 않는다. 후처리가 실패하더라도 배치 본작업이 롤백되지 않는다.

배치 서비스 파라미터

배치 서비스에서는 작업에 필요한 파라미터들을 다음과 같이 정의한다.

파라미터 종류 설명 비고
송신 파일명 전송 대상 파일명
수신 파일명 수신 시스템에 저장할 파일명
쿼리 파라미터 DB 배치에서 데이터 조회 시에 조회 Query에 치환할 파라미터 parameter_name=parameter_value의 형식으로 지정하며 파라미터가 여러 개인 경우 각 파라미터의 구분자는 &를 사용한다.
선처리 파라미터 선처리 작업에서 사용할 데이터를 치환할 파라미터 쿼리파라미터를 지정하는 방식과 동일하다.
후처리 파라미터 후처리 작업에서 사용할 데이터를 치환할 파라미터 쿼리파라미터를 지정하는 방식과 동일하다.

파라미터를 지정하는 방법은 배치에이전트 설치 가이드를 따른다. 선처리, 후처리 파라미터들은 사용자가 커스텀 프로세스(커스텀 핸들러 포함)를 통해 추가 또는 삭제할 수 있다. 파라미터를 추가,삭제하는 방법은 ISM기반 개발 가이드에 설명되어 있는 JobUtil 클래스를 사용한다.

파일 직접 전송

많은 ISM을 사용하는 사이트에서 파일-파일 배치 서비스를 파일 데이터에 대한 변환 없이 파일을 지정된 수신 시스템으로 전송하는 기능으로만 사용한다. 또한 업무 성격 상 파일의 전송이 업무 사용자에 의해 비 정기적으로 발생하기도 한다. 예를 들어 사용자가 특정한 작업을 완료한 후 즉시 파일의 전송을 요청하는 경우, 사용자는 파일 전송이 온라인 서비스의 일부인 것처럼 인식하게 된다. 이로 인해 파일 배치 서비스도 온라인 서비스와 마찬가지로, 최대한의 성능이 요구된다. 이를 위해 변환이 필요없는 단순 파일 전송 서비스를 지원하기 위해서 파일 직접 전송 기능이 제공된다.

ISM 직접 전송

ISM 배치 매니저가 파일 전송 요청을 수신하였을 때, 송신 시스템과 수신 시스템 사이에 'stream relay'를 제공하여 파일을 전송한다. 이는 송수신 시스템에 대한 FTP 접근이 외부 시스템에서는 제한되어 있고 ISM에서만 가능할 때 사용한다.

에이전트 직접 전송

ISM 배치 매니저가 파일 전송 요청을 수신하였을 때, ISM 배치 매니저는 파일 전송을 요청한 에이전트에게 직접 파일을 전송하도록 요청한다. 이 경우에는 배치 에이전트가 송신 시스템과 수신 시스템 사이에 'stream relay'를 제공하여 파일을 전송한다. 파일이 전송된 후 배치 에이전트는 전송한 파일, 디렉토리, 파일 크기와 같은 정보들을 ISM으로 전달한다.

타임아웃 관리

배치 서비스에서는 여러 개의 타임아웃 설정들이 사용된다. 각 타임아웃들의 의미는 다음과 같다.

서비스 처리 타임아웃

배치 매니저와 수신 인터페이스 프로세스들 간의 타임아웃이다. 배치 매니저가 인터페이스 프로세스에 처리 요청을 보내고 '서비스 처리 타임아웃' 시간 내에 응답이 없으면 배치 매니저는 작업이 실패한 것으로 처리한다. 이 타임아웃 시간은 2시간이다.

데이터 조회 타임아웃

송신 인터페이스 프로세스가 DB에서 데이터를 조회할때 사용되는 타임아웃이다. 송신 인터페이스 프로세스가 데이터 조회를 요청하면 조회된 내용은 데이터 조회 타임아웃이 지나기 전에 생성되어야 한다. 송신시스템의 유형이 DB인 배치 서비스는 데이터 양이 많을 경우 데이터 조회에 소요되는 시간만큼 배치 서비스의 진행이 멈추게된다. 또한 변환이 있는 파일을 전송하는 배치 서비스는 송신시스템에서 ISM으로 파일 전송이 완료되어야 다음 변환 작업을 수행할 수 있다. 따라서 데이터 조회(가져오기)와 데이터 반영(변환 후 전송하기)은 순서대로 진행되어야 한다. DB 배치 서비스는 데이터를 조회하여 그 결과를 분할하여 임시 파일로 저장하므로, 모든 데이터에 대한 조회가 완료되기 전에도 분할된 조회 결과 파일들이 생성된다. 따라서 데이터 반영 작업은 데이터를 조회하는 동안에도 진행 가능하다. 데이터 조회와 반영을 동시에 수행하기 위해서 데이터 조회 작업은 백그라운드로 진행된다. 이 때 데이터 반영 작업을 진행할 수 있도록 배치 매니저는 조회 결과 임시 파일이 생성되어 있는지 확인한다. 데이터 조회 결과 파일이 타임아웃 시간 이내에 생성되지 않으면 배치 매니저는 데이터 조회 작업이 실패한 것으로 판단하여 작업이 실패한 것으로 처리한다. 타임아웃은 각 분할된 파일 단위로 적용된다. 만약 데이터 조회 단위(Fetch count)가 1000건이고 송신해야 할 데이터 전체 건수가 10000건이면, 조회 결과 파일은 10개가 생성된다. 배치 매니저는 10개의 파일에 대해 각각 조회 타임아웃 시간동안 대기한다. 이 타임아웃 시간은 통합 서비스 정의할때 배치 서비스의 타임아웃으로 지정한다. 지정하지 않으면 기본값은 60초이다.

FTP 연결 타임아웃

송수신 시스템이 FTP서버인 경우 ISM에서 FTP서버에 연결할때 사용되는 타임아웃이다. ISM에서 FTP서버로 연결을 시도할 때 방화벽이나 상대방 FTP 서버의 오류로 인해 정상적으로 FTP 연결이 이뤄지지 않을 수 있다. 일반적으로 FTP서버가 실행 중이지 않거나 포트 정보가 틀린 경우 연결이 거부(Connection refused)되지만 비정상적으로 실행 중인 경우 또는 방화벽이 있는 상태에서 FTP서버가 다운된 경우에는 연결 과정에서 무한대기하는 상황이 발생하기도 한다. 이로 인해 배치 서비스가 미처리 상태로 무한대기하는 상황이 발생할 수 있으므로 이를 방지하기 위해 연결 시 타임아웃을 사용한다. 이 타임아웃 시간은 통합 서비스 정의할때 송신,수신 시스템의 타임아웃 값으로 지정한다. 지정하지 않으면 기본값은 30초이다.

중복 데이터 오류 무시 옵션

수신시스템이 DB 시스템인 경우 DB 데이터를 반영할때 수신 DB에 설정된 Key값에 따라 중복 오류가 발생하여 배치 서비스가 실패할 수 있다. 정확한 데이터가 수신 DB에 반영되고 중복이 없는 것이 정상이다. 하지만 운영 환경에서는 오류 데이터의 수정은 시간이 소요된다. 또한 이 시간 동안 수신 DB에 반영되어야할 전체 데이터들이 반영되지 않아 이 데이터들을 이용한 다른 서비스들이 연쇄적으로 장애 또는 오류를 발생시킬 수 있다. 이렇게 특정 오류 데이터로 인해 전체 데이터가 반영되지 않아 전체 서비스에 영향을 미치는 것은 데이터를 정확히 전달하는 기능적으로는 정상이다. 하지만 전체 서비스 운영관점에서는 위험 요소가 된다. 따라서 ISM은 오류로 인한 영향이 적은 일부 중복된 데이터들에 대해 무시할 수 있는 옵션을 제공한다.

<batch>
<db ignoredup="true"/>
</batch>
                                        

ignoredup 값이 true이면 중복 오류가 발생하여도 무시한다.