팀프로젝트

[대규모 AI 시스템 프로젝트] 요구사항 파악 및 초기 세팅

KimMZ 2025. 3. 11. 22:24
프로젝트 주제는 "물류 관리 및 배송 시스템을 위한 MSA 기반 플랫폼 개발" 입니다.

 

MSA 설계를 하기 위해 서비스를 분리하기로 하였습니다.

이때, 어떤 기준으로 분리할 것인가 고민에 휩싸이는데 DDD 특강을 토대로 애그리거트 루트를 파악하고, 독립적으로 확장/축소가 가능한 컨텍스트로 분리하여 ERD 설계를 진행하였습다.

 

마이크로 서비스 간 통신 방식은 동기식 호출 구조로 이뤄지는데요. 트래픽이 증가하게 되면 서비스 증설과 함께 병목지점이 생기는 문제도 해결해야 할 사항입니다.

  • 객체/마이크로 서비스 간 의존성 순환 문제
  • 분산된 서비스의 데이터 일관성을 위한 트랜잭션 처리
  • 분산된 서비스의 로그 중앙화 환경 구성 문제

기본적인 요구사항은 정해져 있지만, 그 밖의 요구사항은 팀 자체에서 세부적인 내용들을 결정하고 개발을 진행하여야 합니다. 처음 적용해보는 MSA + Mono repo 설계로 인해 어려움 투성이지만 직접 부딪혀보면서 한 층 더 성장할 수 있는 기회라는 생각이 듭니다.

 

이번 프로젝트에서 제가 담당한 도메인은 "배송", "배송 경로 기록" 입니다.

요구사항을 자세히 분석 및 정리하고, 어떻게 다른 애플리케이션과 rabbitMQ 또는 kafka를 활용하여 소통할 수 있을지 구상해보면 프로젝트 개발에 도움이 될 것 같습니다.

 

고려해 볼 사항
- API 연동
- 데이터 무결성 유지
- 서비스 간 통신의 신뢰성 확보

목표
- MSA 복장성 이해
- MSA 구축을 통해 실무에서 발생할 수 있는 문제를 간접적으로 경험 및 해결

 

현재 아래 개발 프로세스 중, 테이블 명세서 및 ERD 작성 까지 진행되었습니다.

개발 프로세스

더보기
  1. 개요
    • B2B 물류 관리 및 배송 시스템
    • 각 지역에 허브 센터 존재, 각 허브 센터에서 여러 업체의 물건 보관
    • 배송 요청 : 상품이 허브 → 목적지 허브 로 이동
    • 프로세스
      1. 시스템 구조 - 도별 공급 허브 : 각 허브에서 해당 도 내의 모든 주문, 재고 관리, 물류 운영을 담당
      2. 식품 가공 업체 역할 : 경기도에 위치한 건조 식품 가공품 생산 업체
      3. 주문 발생 : 부산에 위치한 도매 업체가 물류로 연락하여 50개 오징어 가공품 주문
      4. 물류 처리 및 재고 이동 : 경기도 허브 → 부산 허브 로 제품 이동은 허브 배송 담당자를 통해 이동 경로에 따라 부산 허브로 제품 전달
      5. 최종 수령 : 부산 허브 → 수산물 도매 업체 로 제품 전달은 부산 허브 소속의 업체 배송담당자가 물품을 주문한 수산물 도매 업체로 배송

  2. 요구사항 확인
    •  사용자 관리
      • 권한
        1. 마스터 관리자 - 모든 기능 권한
        2. 허브 관리자 - 해당 허브, 배송 담당자, 업체 관리
        3. 배송 담당자 - 배송
        4. 업체 담당자 - 업체 정보, 등록한 상품 관리
      • 사용자 비활성화 시 deleted_by, deleted_at 필드로 관리
    • 허브 관리 - 허브 위치 총 17곳 고정
    • 허브간 이동정보 관리 - 데이터 조회를 통해 허브 간 경로 매핑 데이터를 사용
    • 배송 담당자 관리 - 타입별 업무 구분
      • 허브 배송 담당자 : 물류 시스템 전체 총 10명
      • 업체 배송 담당자 : 허브 소속으로, 각 허브별 10명(총 170명)
    • 업체 관리 - 모든 업체는 특정 허브 소속됨
      • 생산업체 supplier
      • 수령업체 recipients
    • 상품 관리 - 모든 상품은 특정 업체와 허브에 소속됨
    • 주문 관리
      • 주문 생성 및 취소 : 주문 생성 → 재고 감소, 주문 취소 → 해당 수량 복원, 재고 없는 경우 주문 실패
    • 배송 관리
      • 배송 및 배송 경로 기록은 주문 생성과 함께 생성됨
    • 슬랙 메시지 관리
      • 슬랙 메시지 발송은 엔티티 저장
      • 로그인한 모든 사용자 및 내부 시스템에서 메시지 발송 가능
    • 기타 공통 사항
      • 논리적 삭제 관리
      • API 호출 기반 연동 - 서비스 간 데이터 연관성 유지 및 데이터 변경 시 반영할 수 있는 통신 구조 설계
      • 트랜잭션 관리 - 일관성 유지, 실패 시 전체 롤백 처리
    • 개발 요구 사항
      • MSA 기반 아키텍쳐 - 각 서비스가 독립적으로 배포, 확장, 유지보수되도록 설계
      • 서비스 간 통신 - REST API, FeignClient 이용(기본 구성으로 권장)
      • 인프라 확장 - 시스템 설계 간결하고, MSA app이 수평 확장 될 수 있도록 구성
      • 기술 스택
        • 백엔드 : Spring Boot 3.x
        • 데이터베이스 : PostgreSQL
        • 빌드 툴 : Gradle
        • API 문서화  : Swagger API 문서 자동화 라이브러리 사용
        • 서비스 디스커버리 : Spring Cloud Eureka 사용하여 서비스 관리
        • 버전 관리 : Git(GitHub, GitLab, Bitbucket 등)
      • 프로젝트 구조
        • Layered Architecture : Controller, Service, Domain 계층
        • DDD(도메인 주도 설계) 적용
        • Entity, DTO 분리
        • API 설계
        • 서비스 경계 결
      • 데이터베이스
        • 분산 데이터베이스 : 논리적 또는 물리적으로 독립된 데이터베이스 사용
        • Audit 필드 : 데이터 감사 로그 기록
      • 보안
        • JWT 인증
        • 권한 확인
        • 비밀번호 암호화
        • 데이터 유효성 검사

  3. 테이블 명세서 및 ERD 작성
    • 각 서비스가 독립적으로 동작하므로, 별도의 데이터베이스 스키마를 설계(스키마 분리)

  4. 인프라 설계도 작성
    • 서버별 통신 방식, 데이터 저장소, 메시지 브로커, API 게이트웨이 등 인프라 요소를 결정
    • https://app.diagrams.net/ 사용하여 설계도 작성

  5. API 명세서 작성
  6. 백엔드 개발
    • 협업 규칙 정하기 - 브랜치 정책, PR 정책, 협업 방식
    • 코드 리뷰
  7. 테스트 및 버그 수정
    • 개별 기능 테스트 : 마이크로 서비스별 단위 테스트 & 통합 테스트 작성
    • API 실행할 수 있는 테스트 스크립트 or 툴 이용하여 전체 API 커버하는 테스트를 자동화, 로컬에서 바로 사용할 수 있도록 준비

 

필수 기능

더보기
  1. 배송담당자 관리
    • 효율적인 순차적 배정을 위한 구현 : 배송 담당자 상태(배달중, 대기중)에 따라 대기 중인 담당자List만 라운드로빈으로 할당
    • 배차 관리 시스템 : 확장성을 위해 차량 유형(차량톤수, 차폭 등)을 고려하여 물량 분배 필요
    • 추가적으로, 허브 배송 담당자는 총 10명으로 왕복/편도 개별적으로 배송 배정 필요

  2. 배송 관리(주문-배송 서비스간 통신은 비동기 MQ 방식, GPS 이용한 Geofencing 기술로 실시간 경로 추적 )
    • 주문 생성되면 주문 데이터를 주문 토픽에 메시지 생성하여 배송, 배송 경로기록 생성
    • 배송 담당자에서 배송 순번이 정해지면 배송 토픽에 메시지를 주문에 전달하여,  주문 도메인에서 발송 허브 담당자에게 배송 예상 시간 알림 처리할 수 있도록 처리 및 주문 현재 상태를 변경
  3. 업체 배송 담당자에게 슬랙 알림 발송 - 실시간 배송 추적
    • 배송 차량 GPS로 실시간 위치 정보 수집 → 지도 API로 시각적으로 실시간 경로 표시 + 실시간 데이터를 redis 조회 및 업데이트
    • Geolocation API 사용 → HTTPS 환경 필수, 참고1, 참고2

  4. 배송 데이터 검색 최적화

 

우아한 형제들 운송 관리 시스템(TMS)
올리브영 배송 및 물류

 

 

 

도전 기능