현대오토에버 모빌리티 SW스쿨 팀 프로젝트 (백엔드 3, 프론트 3)
차량 부품의 입·출고/재고 관리 프로세스를 시스템화하여, 효율적인 관리와 운영 가시성 확보를 목표로 한 프로젝트
- 재고 조회 성능 개선: Redis 캐싱 도입으로 응답 속도 단축 (5.9초 → 0.85초, 단건 요청 기준)
- 출고 도메인 기능 개발: 출고·입고 관리, 중요도 산출(아이젠하워 매트릭스), QR 처리 로직 구현
- 아키텍처 설계: 헥사고날 아키텍처 적용 → 도메인/애플리케이션/어댑터 계층 분리
- 인프라 구축: AWS EC2 기반 배포, Docker 컨테이너화, GitHub Actions CI/CD 파이프라인 구성
- 모니터링 환경: ELK Stack + Elastic APM + Metricbeat → 로그·지표·트랜잭션 중앙화
- 품질 관리: JaCoCo 라인 커버리지 90% 룰 적용, Swagger 기반 API 문서화
- 문제: AWS t3.micro(1GB) 환경에서 Elasticsearch 로그 조회 시 지속적인 타임아웃 에러 발생
- 원인: 메모리 부족으로 인스턴스가 Swap 미설정 상태에서 과부하
- 해결: 4GB Swap 메모리 추가 설정 → 안정적인 로그 수집 및 조회 가능
- 성과: 서버 안정성 확보, 장애 재발 방지
- 문제: 복잡한 엔티티 연관관계로 인해 조회 시 N+1 문제 발생, API 응답 지연 (최대 5.9초)
- 해결: DTO Projection 적용 → 필요한 컬럼만 조회, 불필요한 연관 로딩 제거
- 추가 최적화:
- 출고량 계산 로직 → HashMap 캐싱으로 중복 쿼리 방지
- 자료구조 최적화 → 우선순위 큐 대신 리스트 사용으로 상위 K개 추출 효율화
- 성과: API 응답 속도 5.9초 → 1.45초 단축
- 문제: 출고 리스트 조회 시 DB 부하 증가, 응답 지연
- 해결:
- 리스트 데이터를 Redis Hash 구조에 캐싱
- TTL(Time-To-Live) 설정 → 일정 시간 후 자동 삭제
- 출고 데이터 변경 시 Redis 동기화 로직 적용
- 성과:
- 조회 속도 개선 (Postman 단건 요청 측정 기준)
- DB 부하 감소, 불필요한 캐시 데이터 유지 문제 해결
- 입고/출고 관리: 필터링 조회, 검사 처리, 상태 변경, 이력 관리
- 일정/우선순위: 칸반 보드, 아이젠하워 매트릭스 기반 우선순위 산정
- 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