물류 관리 및 배송 시스템을 MSA(Microservices Architecture) 기반의 시스템을 설계하고 구현하면서 다양한 기술과 방법론을 적용해보는게 목표입니다.
- MSA 설계 및 구현
- 서비스 간 독립성을 유지하면서 유기적으로 연동되며는 마이크로서비스 아키텍처(MSA) 설계
- API 변경시 발생할 수 있는 문제를 최소화하기 위한 버전 관리
- 협업 및 프로젝트 관리
- GitHub Issues와 Slack을 활용하여 팀원 간 원활한 소통 및 업무 분배
- API 요구사항 및 공유해야 할 정보는 Notion을 통해 문서화하여 체계적으로 관리
- 코드 리뷰 및 PR(Pull Request) 프로세스를 통해 코드 품질 유지 및 개선
- 이벤트 기반 아키텍처 적용
- RabbitMQ를 활용한 비동기 메시징 시스템 도입
- 서비스 간 의존도를 줄이고 확장성을 높이기 위한 이벤트 기반 통신(Event-Driven Architecture) 적용
- AI 기술 적용 (Gemini API 활용)
- AI를 활용해 특정 기능을 자동화하고, 실제 프로젝트에 적용 경험 확보
전승현<팀장> | 김민지 | 이승욱 | 이지웅 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Company Product Order | Shipping Shipping Agent |
User Eureka Gateway |
Hub Message Gemini AI |
- 2025년 3월 11일 ~ 2025년 3월 26일
b2b-project/ # B2B 루트 프로젝트
│── com.devsquad10.company/ # 업체 관련 서비스
│ ├── src/main/java/com/devsquad10/company/
│ │ ├── application/ # 애플리케이션 서비스 계층
│ │ ├── domain/ # 도메인 모델 및 엔티티
│ │ ├── infrastructure/ # 데이터베이스, 외부 API 연동
│ │ ├── presentation/ # REST API 및 컨트롤러
│ ├── src/test/java/com/devsquad10/company/
│
│── com.devsquad10.eureka/ # 서비스 디스커버리 (Eureka)
│ ├── src/main/java/com/devsquad10/eureka/
│
│── com.devsquad10.gateway/ # API Gateway (Spring Cloud Gateway)
│ ├── src/main/java/com/devsquad10/gateway/
│ ├── infrastructure/
│
│── com.devsquad10.hub/ # 물류 허브 서비스
│ ├── src/main/java/com/devsquad10/hub/
│ │ ├── application/
│ │ ├── domain/
│ │ ├── infrastructure/
│ │ ├── presentation/
│
│── com.devsquad10.message/ # 메시징 서비스 (slack)
│ ├── src/main/java/com/devsquad10/message/
│ │ ├── application/
│ │ ├── domain/
│ │ ├── infrastructure/
│ │ ├── presentation/
│
│── com.devsquad10.order/ # 주문 서비스
│ ├── src/main/java/com/devsquad10/order/
│ │ ├── application/
│ │ ├── domain/
│ │ ├── infrastructure/
│ │ ├── presentation/
│
│── com.devsquad10.product/ # 상품 서비스
│ ├── src/main/java/com/devsquad10/product/
│ │ ├── application/
│ │ ├── domain/
│ │ ├── infrastructure/
│ │ ├── presentation/
│
│── com.devsquad10.shipping/ # 배송 서비스
│ ├── src/main/java/com/devsquad10/shipping/
│ │ ├── application/
│ │ ├── domain/
│ │ ├── infrastructure/
│ │ ├── presentation/
│
│── com.devsquad10.user/ # 사용자 서비스
│ ├── src/main/java/com/devsquad10/user/
│ │ ├── application/
│ │ ├── domain/
│ │ ├── infrastructure/
│ │ ├── presentation/
│
│
│── docker-compose.yml # Docker 설정 파일
│── README.md # 프로젝트 설명 문서
│── settings.gradle.kts # Gradle 설정 파일
서비스명 | 설명 | 기본 URL | 포트 |
---|---|---|---|
Eureka | 서비스 디스커버리 | http://localhost:19091 |
19091 |
Gateway | API Gateway | http://localhost:19092 |
19092 |
Company | 업체 정보 관리 서비스 | http://localhost:19093 |
19093 |
Hub | 물류 허브 서비스 | http://localhost:19094 |
19094 |
Message | 메시징 서비스 ( Slack ) | http://localhost:19095 |
19095 |
Order | 주문 서비스 | http://localhost:19096 |
19096 |
Product | 상품 서비스 | http://localhost:19097 |
19097 |
Shipping | 배송 서비스 | http://localhost:19098 |
19098 |
User | 사용자 서비스 | http://localhost:19099 |
19099 |
[승현] saga pattern 무한 재시도 방지- wiki 보기
[승현] RabbitMQ concurrency 설정과 비관적 락을 활용한 재고 감소 동시성 제어 - wiki 보기
[승욱] SpringBoot server port 오류 - wiki 보기
[민지] JPQL 날짜 비교 - wiki 보기
[지웅] 허브 간 계산 알고리즘 성능 최적화 - wiki 보기
검색, 정렬 등 동적 쿼리 작성을 위해 사용하며, 타입 안전한 SQL 쿼리를 생성하기 위해 활용했습니다.
연속된 요청으로 인한 DB 병목을 해소하기 위해 캐싱 용도로 사용하여 빠른 데이터 접근을 지원합니다.
MSA 도메인 간 비동기 이벤트 처리를 통해 서비스 간 결합도를 감소시키고 안정성을 향상시켰습니다.
매일 오전 6시에 배송 담당자들에게 당일 배송 메시지 안내를 자동으로 보내기 위해 사용했습니다.
재고 감소 , 배송 담당자 배정 할당 등 동시성 문제가 발생할 수 있는 중요한 트랜잭션에서 충돌을 방지하기 위해 사용했습니다.
MSA 환경에서 다른 서비스의 API를 호출할 때 간편하게 HTTP 통신을 처리하기 위해 사용했습니다.
슬랙 메시지 양식을 자동화하고, 배송 순서를 최적화하여 효율적인 물류 관리를 지원합니다.
- Framework: Spring Boot 3.x
- Database Access: Spring Data JPA , QueryDSL
- Security: Spring Security 6.x
- API Communication: Feign Client
- Message Broker: RabbitMQ
- Caching: Redis
- Testing: JMeter
- API Documentation: Swagger (Springdoc OpenAPI)
- REST API: RESTful API 설계
- Primary DB: PostgreSQL
- Application Server: Apache Tomcat 9.0
- Token-Based Authentication: JWT (JSON Web Token)
- 배포 및 운영: Docker, Docker-Compose
-
- **Gemini API** : 상품 발송 시한 예측 및 상품 설명 문구 추천을 위한 외부 AI API 연동.