본 프로젝트는 사용자 주문 요청을 받아 주문 데이터 생성과 회계 파일 산출 및, 운송 정보 갱신을 위한 시스템을 연계하는 주문 통합 시스템이다.
- 사용자 주문 요청 수신
- 주문 데이터 생성 및 저장
- 주문 결과 회계 데이터 SFTP 전송
- 5분 주기 트리거 발생
- 주문 테이블 미전송 주문 조회
- 운송 회사 테이블 적재
- 적재 성공한 건에 대해 주문 테이블 상태값 업데이트
- 요청 단위 로그 저장 (local 파일 저장)
- 예외 처리 (JDBC, SFTP 전송 시 발생하는 예외 처리)
- Java 17
- Spring boot 3.5.10
- libs: web, data-jpa, actuator, validation, devtools, lombok
[ 사용자 ]
↓
[ 시스템 ]
├─ 주문 데이터 저장
└─ 회계 데이터 저장
[ 5분 주기 트리거 ]
↓
[ 시스템 ]
├─ 운송 데이터 저장
└─ 적재 성공 결과 저장
- 주문 요청 검증 로직
- 주문 데이터 저장 로직
- 회계 데이터 전송 로직
- 5분 주기 트리거
- 운송 테이블 저장 로직
- 적재 상태 갱신
- 로그 파일 저장
- 예외 처리 점검 및 수정
- 예외 시나리오 정리 및 테스트
-
글로벌 예외 처리 구조 도입 컨트롤러 서비스 전반에서 발생하는 예외를 @RestControllerAdvice로 일괄 처리하여 응답 형식을 통일하였다.
-
트랜잭션 경계 명확화 주문 처리 로직에 @Transactional을 적용하여 DB 저장 중 오류 발생 시 데이터 정합성이 깨지지 않도록 롤백되게 설계하였다.
-
테스트 DB 구조에 따라 저장하는 테이블의 pk 값을 임시로 생성하였다.
-
SFTP 파일 전송 과정에서 한글명으로 파일 제목 지정 시 권한 오류가 발생하여 영문으로 수정하였다.
-
에러 코드 체계 고도화 현재는 클라이언트 응답을 단순화하였으나, 향후 운영 환경에서는 내부용 에러 코드와 외부 노출용 에러 코드를 분리하여 모니터링 및 장애 대응 효율을 높일 수 있다.
-
외부 시스템 장애 대응 강화 SFTP 및 외부 연계 실패 시 재시도 정책(Retry) 등을 통해 안전성을 높일 수 있다.
-
로그 레벨 및 알림 체계 정교화 시스템 장애 로그에 대해 모니터링 도구와 연계하여 운영 단계에서의 실시간 장애 감지가 가능하도록 개선할 수 있다.