You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
HubLink는 주문, 배송, 허브, 업체, 상품, 재고, 결제, 알림 기능을 독립적인 마이크로서비스로 분리한 물류·배송 관리 플랫폼입니다.
Spring Cloud Gateway, Eureka, Config Server를 기반으로 서비스 라우팅과 디스커버리, 중앙 설정 관리를 구성하였으며, Redis Streams, Kafka를 활용한 이벤트 기반 처리 구조를 적용했습니다.
또한 Docker Compose 기반 로컬 실행 환경과 AWS EC2, RDS, ECR, ALB 기반 배포 구조를 구성하여 서비스별 독립 배포와 운영 확장성을 고려했습니다.
🎯 프로젝트 목표
HubLink는 MSA 환경에서 주문, 재고, 배송 등 서비스 간에 발생하는 분산 트랜잭션 문제를 직접 다루는 것을 목표로 한다.
주문 생성 및 재고 차감 과정에서는 동시성 충돌이 발생할 수 있으므로, 락 전략과 트랜잭션 처리 방식을 적용하여 데이터 정합성을 보장한다.
또한 Saga Orchestration 기반의 트랜잭션 관리 방식을 적용하여 주문, 재고, 배송 서비스 간 작업 흐름을 제어하고, 실패 발생 시 보상 트랜잭션을 통해 일관성을 유지한다.
외부 API 호출 실패, 메시지 처리 실패, 특정 서비스 장애가 발생하더라도 전체 시스템이 중단되지 않도록 실패 상태를 저장하고 재처리 가능한 구조를 구성한다.
메시징 환경에서 동일 이벤트가 중복 소비되더라도 동일 작업이 반복 수행되지 않도록 멱등성 처리를 적용한다.
최종적으로 단순히 서비스를 분리하는 데 그치지 않고, 독립 배포, 장애 격리, 이벤트 기반 통신, 동시성 제어, 모니터링을 직접 구현하며 MSA의 장점과 한계를 함께 이해하는 것을 목표로 한다.
👥 역할 분담
이름
담당 영역
이성근
user-service, 인증/권한 연동, Redis, CI/CD
김신영
hub-service, company-service, ArchUnit
최준근
product-service, stock-service, Kafka
김영욱
order-service, Kafka
박성우
delivery-service, 분산락, Kafka
조혜은
ai-service, slack-service, 배포
🐥 주요 기능
서비스
주요 기능
User Service
회원가입, 로그인, JWT 인증, 권한 관리
Company Service
업체 등록 및 업체 정보 관리
Hub Service
허브 등록, 허브 간 이동 경로 관리
Product Service
상품 등록, 상품 조회, 상품 정보 관리
Stock Service
재고 관리, 재고 차감 및 복구
Order Service
주문 생성, 주문 조회, 주문 상태 관리, 주문 취소
Delivery Service
배송 생성, 배송 상태 변경, 허브 이동 추적
Slack Service
Slack 알림 전송, 이벤트 기반 메시지 처리
AI Service
AI 기반 발송 시한 생성 및 메시지 생성
API Gateway
인증 필터 처리, 서비스 라우팅
Eureka / Config Server
서비스 디스커버리 및 중앙 설정 관리
🍟 시스템 아키텍처
🍒 ERD
🔌 서비스 포트
📍 Core Infrastructure
Service
Port
Description
eureka-server
19090
서비스 디스커버리 서버
api-gateway
19091
API Gateway
config-server
19092
Spring Cloud Config Server
📍 Domain Services
Service
Port
Description
user-service
19093
사용자, 인증, 권한 관리
order-service
19094
주문 관리
hub-service
19095
허브 및 허브 경로 관리
company-service
19096
업체 관리
product-service
19097
상품 관리
stock-service
19098
재고 관리
delivery-service
19099
배송 및 배송 경로 관리
slack-service
19100
Slack 알림 처리
ai-service
19101
AI 메시지 생성 및 관리
📍 External Infrastructure
Service
Port
Description
PostgreSQL
5432
관계형 데이터베이스
Redis
6379
캐시, 토큰, 분산락
Zipkin
9411
분산 추적
Prometheus
9090
메트릭 수집
Grafana
3000
모니터링 대시보드
⚙️ 기술 스택
📍 Backend
Java 17
Spring Boot 3.x
Spring Security
Spring Data JPA
Hibernate
JWT
Spring Cloud OpenFeign
Resilience4j
ArchUnit
📍 Database / Cache
PostgreSQL
Redis
📍 Messaging / Event Driven
Redis Streams
Apache Kafka
📍 MSA
Spring Cloud Gateway
Eureka Service Discovery
Spring Cloud Config Server
Config Repository
📍 Infrastructure
AWS EC2
AWS RDS
AWS ECR
AWS ALB
AWS VPC
Public / Private Subnet
Internet Gateway
📍 DevOps / CI/CD
Docker
Docker Compose
GitHub Actions
📍 Monitoring / Tracing
Prometheus
Grafana
Zipkin
Spring Boot Actuator
📍 External API / AI
Slack API
Gemini API
🍿 프로젝트 구조
hub-link
├── core-common # 서비스 공통 모듈
│ ├── auth # 인증/인가 공통 처리
│ ├── error # 공통 예외 및 에러 코드
│ ├── JpaAuditing # JPA Auditing 공통 설정
│ ├── response # 공통 응답 형식
│ └── stream # 이벤트 스트림 공통 상수/DTO
│
├── eureka-server # 서비스 디스커버리 서버
├── config-server # 중앙 설정 관리 서버
│
├── api-gateway # API Gateway
│ ├── config # Gateway 및 Swagger 설정
│ ├── exception # Gateway 예외 처리
│ ├── filter # 인증/인가 필터
│ ├── response # Gateway 응답 처리
│ └── util # Gateway 유틸
│
├── user-service # 사용자, 인증, 권한 관리
├── hub-service # 허브 및 허브 경로 관리
├── company-service # 업체 관리
├── product-service # 상품 관리
├── stock-service # 재고 관리
├── order-service # 주문 관리
├── delivery-service # 배송 및 배송 경로 관리
├── slack-service # Slack 알림 처리
└── ai-service # AI 메시지 생성 및 관리