Skip to content

OHEUNSOL/WMS

Repository files navigation

🚚 차량 부품 창고 관리 시스템 (WMS)

현대오토에버 모빌리티 SW스쿨 팀 프로젝트 (백엔드 3, 프론트 3)
차량 부품의 입·출고/재고 관리 프로세스를 시스템화하여, 효율적인 관리와 운영 가시성 확보를 목표로 한 프로젝트

Java Spring Boot MySQL Redis Docker CI/CD Coverage


🗂 목차


🙋🏻‍♀️ 담당 역할

  • 재고 조회 성능 개선: Redis 캐싱 도입으로 응답 속도 단축 (5.9초 → 0.85초, 단건 요청 기준)
  • 출고 도메인 기능 개발: 출고·입고 관리, 중요도 산출(아이젠하워 매트릭스), QR 처리 로직 구현
  • 아키텍처 설계: 헥사고날 아키텍처 적용 → 도메인/애플리케이션/어댑터 계층 분리
  • 인프라 구축: AWS EC2 기반 배포, Docker 컨테이너화, GitHub Actions CI/CD 파이프라인 구성
  • 모니터링 환경: ELK Stack + Elastic APM + Metricbeat → 로그·지표·트랜잭션 중앙화
  • 품질 관리: JaCoCo 라인 커버리지 90% 룰 적용, Swagger 기반 API 문서화

🚨 트러블슈팅 & 성과

1) 인스턴스 메모리 부족 문제

  • 문제: AWS t3.micro(1GB) 환경에서 Elasticsearch 로그 조회 시 지속적인 타임아웃 에러 발생
  • 원인: 메모리 부족으로 인스턴스가 Swap 미설정 상태에서 과부하
  • 해결: 4GB Swap 메모리 추가 설정 → 안정적인 로그 수집 및 조회 가능
  • 성과: 서버 안정성 확보, 장애 재발 방지

2) N+1 문제 및 성능 저하

  • 문제: 복잡한 엔티티 연관관계로 인해 조회 시 N+1 문제 발생, API 응답 지연 (최대 5.9초)
  • 해결: DTO Projection 적용 → 필요한 컬럼만 조회, 불필요한 연관 로딩 제거
  • 추가 최적화:
    • 출고량 계산 로직 → HashMap 캐싱으로 중복 쿼리 방지
    • 자료구조 최적화 → 우선순위 큐 대신 리스트 사용으로 상위 K개 추출 효율화
  • 성과: API 응답 속도 5.9초 → 1.45초 단축

3) 출고 리스트 조회 성능 최적화 (Redis 캐시)

  • 문제: 출고 리스트 조회 시 DB 부하 증가, 응답 지연
  • 해결:
    • 리스트 데이터를 Redis Hash 구조에 캐싱
    • TTL(Time-To-Live) 설정 → 일정 시간 후 자동 삭제
    • 출고 데이터 변경 시 Redis 동기화 로직 적용
  • 성과:
    • 조회 속도 개선 (Postman 단건 요청 측정 기준)
    • DB 부하 감소, 불필요한 캐시 데이터 유지 문제 해결

🏗 아키텍처

WMS Architecture

🗺 ERD

image

🎥 시연 영상


🔧 핵심 기능

  • 입고/출고 관리: 필터링 조회, 검사 처리, 상태 변경, 이력 관리
  • 일정/우선순위: 칸반 보드, 아이젠하워 매트릭스 기반 우선순위 산정
  • QR 처리: 부품/배치 식별 및 작업 속도 향상
  • 검색/조회 고속화: Redis 캐시 + 인덱스/쿼리 튜닝
  • API 문서화: Swagger(OpenAPI) 자동 문서

🛠 기술 스택

  • Backend: Java 17, Spring Boot (Web, Validation, Data JPA, Security 선택), QueryDSL
  • Data: MySQL, Redis
  • Docs: Springdoc OpenAPI(Swagger UI)
  • Monitoring: Elastic APM, ELK(Stack), Metricbeat
  • Infra/DevOps: Docker, GitLab CI/CD
  • Test/Quality: JUnit, Spring Boot Test, JaCoCo(90% 룰)

📁 폴더 구조 (헥사고날 아키텍처)

wms/
 ├─ src/
 │   ├─ main/java/com/wms
 │   │   ├─ domain/              # 엔티티, 도메인 서비스
 │   │   ├─ application/         # 유즈케이스, 서비스 계층(포트 인터페이스)
 │   │   ├─ adapter/
 │   │   │   ├─ in/web/          # REST 컨트롤러
 │   │   │   └─ out/persistence/ # JPA 리포지토리, Redis 캐시
 │   │   └─ config/              # Swagger, Cache, APM 등 설정
 │   └─ test/java/com/wms        # 단위/통합 테스트
 ├─ build.gradle
 └─ assets/
     ├─ architecture.png
     ├─ erd.png
     ├─ apm.png                  # (선택) APM 캡처
     └─ kibana.png               # (선택) Kibana 대시보드 캡처

🤝 협업 과정

사용 툴 : Jira, Slack, Swagger, Notion

image image image image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages