PROJECT DETAIL / 업무 프로젝트

모바일·기간계 연계 미들웨어

L사 모바일 앱과 기간계를 연결하는 Java·Spring 애플리케이션 유지보수

주요 업무 · 기존 시스템 유지보수유지보수·운영

  • Java 8
  • Spring Framework 5
  • SOAP · XML
  • REST · JSON
  • MyBatis
  • Redis
OVERVIEW

프로젝트 개요

L사 배송기사·영업소용 모바일 앱과 기간계 사이의 Spring 미들웨어를 유지보수합니다. 앱 요청을 SOAP 형식으로 변환하고 기간계 응답을 앱에서 사용하는 JSON 구조로 전달하며, 배송·집하 업무 API와 응답·예외 처리 흐름을 관리합니다.

SCOPE

담당 업무 및 개발 내용

모바일 앱과 L사 기간계 사이의 기존 Java·Spring 애플리케이션 유지보수를 담당합니다. 업무 요청의 파라미터 매핑, SOAP XML 생성과 응답 파싱, 배송·집하 관련 API의 수정·오류 대응을 수행합니다.

주요 역할
기존 Spring 유지보수
연계 방식
REST ↔ SOAP
업무 범위
배송 · 집하 · 운송장

01 / ARCHITECTURE

시스템 구성과 처리 흐름

모바일 앱의 요청과 기간계 응답을 연결하는 중계 계층

  1. 모바일 앱배송기사 · 영업소 업무
  2. Spring 중계파라미터 · SOAP 변환
  3. L사 기간계IIS · SOAP 웹서비스
  4. 앱 응답XML 파싱 · JSON 반환
앱 요청을 Java 객체로 받아 업무별 파라미터와 SOAP XML을 구성합니다. IIS 기반 기간계 웹서비스가 반환한 XML을 파싱해 앱용 응답 객체와 JSON으로 전달합니다. 요청과 응답이 왕복하는 과정을 표시한 도식입니다.

02 / IMPLEMENTATION

주요 기능과 설계

기능별 처리 흐름과 문제 해결 과정, 설계 이유와 구현 결과를 소개합니다.

FEATURE 01 유지보수·운영

REST·SOAP 중계

앱의 HTTP 요청과 기간계의 SOAP 웹서비스 사이에서 데이터 형식과 호출 규칙을 연결합니다.

REST·SOAP 중계 처리 흐름

  1. 앱 요청요청 객체 · 파라미터
  2. SOAP 생성업무별 XML 구성
  3. 기간계 호출SOAP 요청 · XML 응답
  4. 응답 변환객체 매핑 · JSON
PROBLEM

문제

모바일 앱의 요청 형식과 기간계의 XML·SOAP 규칙이 달라, 업무별 입력 값과 응답 구조를 맞추는 중계 계층이 필요합니다.

SOLUTION

해결

요청 객체를 업무별 파라미터로 매핑하고 XML 태그와 SOAP 메시지를 구성하는 기존 흐름을 유지보수합니다. 일부 공통 매핑은 리플렉션으로 객체의 필드와 메서드를 탐색해 값을 변환합니다. 기간계 응답을 파싱해 앱의 응답 객체로 전달하는 과정도 함께 관리합니다.

설계 이유와 트레이드오프

프로토콜 차이를 중계 계층에서 처리

앱은 HTTP API를 호출하고 SOAP 세부 규칙은 서버에서 처리합니다. 앱의 연계 코드를 단순하게 유지할 수 있지만, 기간계의 필드·태그 변경은 중계 로직과 응답 매핑에도 반영해야 합니다.

요청과 응답을 함께 수정

입력 파라미터의 순서·형식과 응답 필드의 매핑을 함께 살펴봅니다. 요청이 정상 전달돼도 응답 파싱이 달라지면 앱 업무에 영향을 줄 수 있어 양쪽 계약을 유지하는 것이 중요합니다.

RESULT

유지보수 범위

업무별 요청 객체 → SOAP XML → 기간계 호출 → 앱용 JSON 응답으로 이어지는 중계 기능을 유지보수합니다.

FEATURE 02 유지보수·운영

배송·집하 업무 API

배송 현황·운송장 조회, 배송순서·그룹 관리와 집하 예약 등 모바일 현장의 업무를 중계합니다.

배송·집하 업무 API 처리 흐름

  1. 업무 요청조회 · 등록 · 변경
  2. 서비스 분기업무별 입력 매핑
  3. 기간계 처리업무 웹서비스 호출
  4. 결과 전달조회 목록 · 처리 결과
PROBLEM

문제

조회·등록·변경마다 입력과 반환 데이터가 다릅니다. 업무 기능을 수정할 때 기존 앱이 기대하는 요청·응답 형식을 함께 유지해야 합니다.

SOLUTION

해결

Controller·Service·파서로 이어지는 기존 구조에서 업무별 API를 유지보수합니다. 배송 현황과 운송장 정보, 배송순서·그룹 관리, 집하 예약 관련 호출을 각각의 요청·응답 구조에 맞춰 연결합니다.

설계 이유와 트레이드오프

기존 클라이언트와의 호환성 유지

서버의 내부 처리와 앱에 노출되는 응답 계약을 구분합니다. 기존 필드와 결과 형식을 유지하면 앱의 변경 부담을 줄일 수 있지만, 형식을 바꿔야 하는 작업에는 클라이언트와 서버의 적용 순서를 함께 고려해야 합니다.

업무별 매핑을 명시적으로 관리

하나의 공통 통신 경로 위에 업무별 요청·응답 매핑을 둡니다. 통신 처리는 재사용하면서도 업무별 데이터 차이를 유지할 수 있으며, 필드 추가 시 관련 DTO와 파서를 함께 수정해야 합니다.

RESULT

유지보수 범위

배송 현황·운송장 조회, 배송순서·그룹 관리와 집하 예약 조회 등 기존 모바일 업무 API의 연계와 유지보수를 담당합니다.

FEATURE 03 유지보수·운영

응답·예외 처리

기간계의 업무 실패, SOAP 오류와 서버 예외를 앱의 처리 결과로 전달하는 흐름을 유지보수합니다.

응답·예외 처리 처리 흐름

  1. 처리 결과성공 · 업무 실패
  2. 오류 구분SOAP 오류 · 서버 예외
  3. 응답 구성결과 코드 · 메시지
  4. 앱 전달성공 · 실패 항목
성공·업무 실패·SOAP 오류·서버 예외는 각각의 처리 경로에서 결과 코드와 메시지로 변환됩니다.
PROBLEM

문제

요청 자체의 오류와 기간계가 반환한 업무 실패를 구분해야 하며, 여러 항목을 처리하는 API에서는 일부 항목만 실패할 수 있습니다.

SOLUTION

해결

SOAP 오류 처리와 공통 예외 응답, 업무별 결과 코드·메시지 매핑을 유지보수합니다. 목록형 등록에서는 항목별 성공·실패를 취합하는 응답 구조를 사용해 처리 결과를 구분합니다.

설계 이유와 트레이드오프

실패 원인과 응답 계약 함께 관리

기간계 응답, 서버 예외와 데이터 오류는 발생 위치가 다릅니다. 앱에서 사용하는 결과 형식은 유지하면서 원인을 추적할 수 있는 처리 경계를 살피며, 외부 응답에는 내부 상세 정보가 노출되지 않도록 관리할 필요가 있습니다.

목록 처리의 부분 성공 구분

여러 항목의 결과를 개별적으로 취합하는 방식은 실패 대상을 구분하는 데 도움이 됩니다. 전체 요청의 성공 여부만으로 판단하기 어렵기 때문에 재요청 범위와 부분 성공의 의미를 함께 고려해야 합니다.

RESULT

유지보수 범위

공통 예외 응답과 SOAP 오류 처리, 목록형 업무의 성공·실패 취합 흐름을 유지보수합니다.

03 / RESULTS

유지보수 범위와 제공 기능

모바일·기간계 연계 미들웨어 개발 결과
항목결과
업무 중계모바일 앱의 HTTP 요청과 기간계 SOAP 웹서비스 연결
데이터 변환업무별 요청 매핑·XML 생성·응답 파싱·JSON 반환
현장 업무배송·운송장 조회, 배송순서·그룹 관리와 집하 예약 연계
응답 처리기존 앱 응답 형식과 업무별 성공·실패·예외 처리 유지보수

04 / REFLECTION

개발 회고와 개선 방향

회고

기존 시스템을 유지보수할 때는 서버 코드의 변경뿐 아니라 앱이 사용하는 요청·응답 계약과 기간계의 데이터 규칙을 함께 이해해야 했습니다. 기능 하나를 수정하더라도 입력 매핑, XML 생성, 응답 파싱과 앱의 결과 해석까지 연결해서 살피는 것이 업무 연계의 핵심이라고 느꼈습니다.

NEXT / 향후 계획

향후 개선 방향

리플렉션 기반 공통 매핑을 업무·SOAP 웹서비스별 요청·응답 매퍼로 점진적으로 개선하려 합니다. 파라미터의 순서·타입과 XML 태그를 명시하고, 기존 요청·응답과 대조하는 계약 테스트를 보강해 호환성을 유지하겠습니다. 성능은 매핑·XML 처리·SOAP 통신 시간을 나누어 측정하고, 반복적인 필드·메서드 탐색의 비용을 확인한 뒤 최적화하려 합니다.

다른 프로젝트도 살펴보기

업무 프로젝트오토스캐너 연계 API업무 프로젝트배송지 주소 조회 서비스업무 프로젝트AMS개인 프로젝트PeakLog개인 프로젝트WMS-Lite
전체 프로젝트로 돌아가기 ←

처리 흐름

100%확대 후 가로·세로로 스크롤할 수 있습니다.
선택한 확대 도식
↑