Skip to content

jjmsrc/order-platform-integration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

인스피언 채용 과제 - 서비스 연계 및 데이터 변환 처리

프로젝트 개요

본 프로젝트는 사용자 주문 요청을 받아 주문 데이터 생성과 회계 파일 산출 및, 운송 정보 갱신을 위한 시스템을 연계하는 주문 통합 시스템이다.

프로젝트 범위

시나리오 1

  • 사용자 주문 요청 수신
  • 주문 데이터 생성 및 저장
  • 주문 결과 회계 데이터 SFTP 전송

시나리오 2

  • 5분 주기 트리거 발생
  • 주문 테이블 미전송 주문 조회
  • 운송 회사 테이블 적재
  • 적재 성공한 건에 대해 주문 테이블 상태값 업데이트

공통 요구 사항

  • 요청 단위 로그 저장 (local 파일 저장)
  • 예외 처리 (JDBC, SFTP 전송 시 발생하는 예외 처리)

개발 도구

  • Java 17
  • Spring boot 3.5.10
  • libs: web, data-jpa, actuator, validation, devtools, lombok

아키텍처 개요

요청 흐름

[ 사용자 ]
    ↓
[ 시스템 ]
    ├─ 주문 데이터 저장
    └─ 회계 데이터 저장

[ 5분 주기 트리거 ]
    ↓
[ 시스템 ]
    ├─ 운송 데이터 저장
    └─ 적재 성공 결과 저장
image

TODO

시나리오 1

  • 주문 요청 검증 로직
  • 주문 데이터 저장 로직
  • 회계 데이터 전송 로직

시나리오 2

  • 5분 주기 트리거
  • 운송 테이블 저장 로직
  • 적재 상태 갱신

공통

  • 로그 파일 저장
  • 예외 처리 점검 및 수정
  • 예외 시나리오 정리 및 테스트

추가적으로 고려한 점

  • 글로벌 예외 처리 구조 도입 컨트롤러 서비스 전반에서 발생하는 예외를 @RestControllerAdvice로 일괄 처리하여 응답 형식을 통일하였다.

  • 트랜잭션 경계 명확화 주문 처리 로직에 @Transactional을 적용하여 DB 저장 중 오류 발생 시 데이터 정합성이 깨지지 않도록 롤백되게 설계하였다.

  • 테스트 DB 구조에 따라 저장하는 테이블의 pk 값을 임시로 생성하였다.

  • SFTP 파일 전송 과정에서 한글명으로 파일 제목 지정 시 권한 오류가 발생하여 영문으로 수정하였다.

향후 개선 방향

  • 에러 코드 체계 고도화 현재는 클라이언트 응답을 단순화하였으나, 향후 운영 환경에서는 내부용 에러 코드와 외부 노출용 에러 코드를 분리하여 모니터링 및 장애 대응 효율을 높일 수 있다.

  • 외부 시스템 장애 대응 강화 SFTP 및 외부 연계 실패 시 재시도 정책(Retry) 등을 통해 안전성을 높일 수 있다.

  • 로그 레벨 및 알림 체계 정교화 시스템 장애 로그에 대해 모니터링 도구와 연계하여 운영 단계에서의 실시간 장애 감지가 가능하도록 개선할 수 있다.

About

인스피언 개발자 채용과제 입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages