6.4 KiB
6.4 KiB
ERP API 데이터 동기화 배치 시스템
개요
이 시스템은 외부 ERP API로부터 거래처, 부서, 사원 정보를 자동으로 가져와 PLM 시스템의 데이터베이스에 동기화하는 배치 프로그램입니다.
주요 기능
1. 거래처 정보 동기화 (CustomerApiClient)
- API 엔드포인트:
/apiproxy/api16S11 - 대상 테이블:
client_mng - 동기화 데이터:
- 거래처코드, 거래처명, 거래처약칭
- 사업자등록번호, 대표자명
- 업태, 종목
- 주소, 연락처 정보
- 사용여부
2. 부서 정보 동기화 (DepartmentApiClient)
- API 엔드포인트:
/apiproxy/api16S10 - 대상 테이블:
dept_info - 동기화 데이터:
- 부서코드, 부서명
- 회사코드, 부서레벨
- 상위부서 정보
- 정렬순서, 등록일/종료일
3. 사원 정보 동기화 (EmployeeApiClient)
- API 엔드포인트:
/apiproxy/api16S05 - 대상 테이블:
user_info - 동기화 데이터:
- 사원번호, 사원코드, 사원명
- 부서 정보
- 직급, 직책
- 연락처 (이메일, 휴대폰)
- 재직구분, 입사일, 생년월일
배치 실행 스케줄
자동 실행
- 실행 시간: 매일 새벽 00시 00분
- Cron 표현식:
0 0 0 * * ? - 실행 메서드:
BatchService.syncErpData()
수동 실행
필요시 BatchService.syncErpData() 메서드를 직접 호출하여 수동 실행 가능
설치 및 설정
1. 데이터베이스 설정
# PostgreSQL에 접속하여 테이블 생성 스크립트 실행
psql -U [사용자명] -d [데이터베이스명] -f database/create_erp_sync_tables.sql
2. 소스 파일 구조
wace_plm/
├── src/com/pms/
│ ├── api/
│ │ ├── CustomerApiClient.java # 거래처 API 클라이언트
│ │ ├── DepartmentApiClient.java # 부서 API 클라이언트
│ │ └── EmployeeApiClient.java # 사원 API 클라이언트
│ ├── service/
│ │ └── BatchService.java # 배치 서비스 (동기화 로직)
│ └── mapper/
│ └── batch.xml # MyBatis 매퍼 (SQL 쿼리)
└── database/
└── create_erp_sync_tables.sql # 테이블 생성 스크립트
3. MyBatis 설정
mybatisConf.xml에 batch 매퍼가 등록되어 있는지 확인:
<mapper resource="/com/pms/mapper/batch.xml" />
4. API 인증 정보
API 클라이언트에 다음 정보가 설정되어 있습니다:
- Base URL:
https://erp.rps-korea.com - 회사코드:
1000 - Caller Name:
API_gcmsAmaranth40578 - Access Token: (소스 코드 참조)
- Hash Key: (소스 코드 참조)
동작 방식
1. API 호출
각 API 클라이언트가 ERP 시스템에 HTTPS POST 요청을 전송합니다.
- TLS 1.2 프로토콜 사용
- HMacSHA256 기반 인증
- JSON 형식 데이터 송수신
2. 데이터 파싱
API 응답 JSON을 파싱하여 Map 객체로 변환합니다.
- JDK 1.7 호환 방식의 수동 JSON 파싱
- 필요한 필드만 추출
3. 데이터베이스 저장
- 기존 데이터 존재 여부 확인 (코드 기준)
- 신규 데이터: INSERT
- 기존 데이터: UPDATE
- 트랜잭션 처리로 데이터 무결성 보장
4. 로깅
- 각 단계별 진행 상황 콘솔 출력
- 성공/실패 건수 집계
- 오류 발생 시 상세 로그 출력
에러 처리
API 호출 실패
- 연결 타임아웃: 30초
- 리다이렉트 자동 처리
- HTTP 에러 코드 확인 및 로깅
데이터 파싱 오류
- JSON 파싱 실패 시 해당 레코드 스킵
- 오류 로그 출력 후 다음 레코드 처리 계속
데이터베이스 오류
- 트랜잭션 롤백
- 전체 배치 실패 처리
- 상세 오류 메시지 출력
모니터링
로그 확인
배치 실행 시 다음 정보가 출력됩니다:
====================================
ERP 데이터 동기화 배치 시작
====================================
거래처 정보 동기화 시작...
거래처 정보 동기화 완료 - 신규: X건, 수정: Y건
부서 정보 동기화 시작...
부서 정보 동기화 완료 - 신규: X건, 수정: Y건
사원 정보 동기화 시작...
사원 정보 동기화 완료 - 신규: X건, 수정: Y건
ERP 데이터 동기화 배치 완료
데이터 확인
-- 거래처 정보 확인
SELECT COUNT(*) FROM client_mng WHERE reg_user = 'batch_system';
-- 부서 정보 확인
SELECT COUNT(*) FROM dept_info WHERE reg_user = 'batch_system';
-- 사원 정보 확인
SELECT COUNT(*) FROM user_info WHERE reg_user = 'batch_system';
-- 최근 동기화 데이터 확인
SELECT * FROM client_mng WHERE reg_user = 'batch_system'
ORDER BY reg_date DESC LIMIT 10;
주의사항
-
데이터 중복 방지
- 거래처:
tr_cd(거래처코드) 기준 - 부서:
dept_cd(부서코드) 기준 - 사원:
emp_cd(사원코드) 기준
- 거래처:
-
네트워크 환경
- ERP API 서버 접근 가능 여부 확인
- 방화벽 설정 확인
- SSL 인증서 검증 우회 (개발 환경)
-
성능 고려사항
- 대량 데이터 처리 시 시간 소요 가능
- 배치 실행 시간대 조정 가능 (현재: 새벽 00시)
- 필요시 페이징 처리 추가 고려
-
데이터 정합성
- 배치 실행 전 데이터 백업 권장
- 테스트 환경에서 충분한 검증 후 운영 적용
트러블슈팅
API 호출 실패
원인: 네트워크 연결 문제, 인증 실패
해결:
- 네트워크 연결 확인
- API 인증 정보 확인
- ERP 서버 상태 확인
JSON 파싱 오류
원인: API 응답 형식 변경
해결:
- API 응답 로그 확인
- 파싱 로직 수정
데이터베이스 오류
원인: 테이블 구조 불일치, 권한 문제
해결:
- 테이블 생성 스크립트 재실행
- 데이터베이스 권한 확인
향후 개선 사항
-
성능 최적화
- 배치 INSERT/UPDATE 처리
- 페이징 처리 추가
-
모니터링 강화
- 배치 실행 이력 테이블 추가
- 알림 기능 추가 (이메일, 슬랙 등)
-
에러 복구
- 실패 레코드 재처리 로직
- 부분 실패 시 이어서 처리
-
설정 외부화
- API URL, 인증 정보를 설정 파일로 분리
- 환경별 설정 관리
문의
기술 지원이 필요한 경우 개발팀에 문의하시기 바랍니다.