Skip to content

Team4-MSA/hublink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

601 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš› HubLink

🌱 MSA 기반 λ¬Όλ₯˜ Β· 배솑 관리 ν”Œλž«νΌ

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 μ„œλΉ„μŠ€ λ””μŠ€μ»€λ²„λ¦¬ 및 쀑앙 μ„€μ • 관리

🍟 μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

안프ᄅᅑᄉα…₯ᆯ계도 drawio

πŸ’ ERD

HubLink

πŸ”Œ μ„œλΉ„μŠ€ 포트

πŸ“ 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 λ©”μ‹œμ§€ 생성 및 관리

πŸ§€ 브랜치 μ „λž΅

main
develop
feature/*
hotfix/*

🫑 ν˜‘μ—… κ·œμΉ™

  • PR 기반 μ½”λ“œ 리뷰 μ§„ν–‰
  • Gemini Code Assist 기반 AI μ½”λ“œ 리뷰 적용
  • μ½”λ“œ 및 Git μ»¨λ²€μ…˜ λ¬Έμ„œ 기반 ν˜‘μ—… μ§„ν–‰

πŸ“š API λ¬Έμ„œ

ν™˜κ²½ Swagger URL
Local http://localhost:19091/swagger-ui/index.html
Deploy http://{ALB-DNS}/swagger-ui/index.html

πŸ” ν™˜κ²½ λ³€μˆ˜

ν”„λ‘œμ νŠΈ λ£¨νŠΈμ— .env νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ•„λž˜ 값을 ν™˜κ²½μ— 맞게 μˆ˜μ •ν•©λ‹ˆλ‹€.

  • 둜컬 버전
# Database
DB_URL=jdbc:postgresql://localhost:5432/hublink
DB_USERNAME=
DB_PASSWORD=

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

# Eureka / Config
EUREKA_URL=http://localhost:19090/eureka/
CONFIG_SERVER_URL=http://localhost:19092

# JWT
JWT_SECRET=change-me-change-me-change-me-change-me

# External API
SLACK_BOT_TOKEN=xoxb-your-slack-bot-token

AI_API_URL=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent
AI_API_KEY=your-gemini-api-key


# Monitoring / Tracing
ZIPKIN_URL=http://localhost:9411/api/v2/spans

# ECR
ECR_REGISTRY=your-aws-account-id.dkr.ecr.ap-northeast-2.amazonaws.com


# Swagger
SWAGGER_GATEWAY_URL=http://localhost:19091

πŸ”₯ μ‹€ν–‰ 방법

πŸ“ Clone

git clone https://github.com/organization/hublink.git

πŸ“ ν™˜κ²½ λ³€μˆ˜ 파일 생성

  • .env.example νŒŒμΌμ„ μ°Έκ³ ν•˜μ—¬ ν”„λ‘œμ νŠΈ λ£¨νŠΈμ— .env νŒŒμΌμ„ 생성
  • ν•„μš”ν•œ 값을 둜컬 ν™˜κ²½μ— 맞게 μˆ˜μ •

πŸ“ 전체 μ„œλΉ„μŠ€ λΉŒλ“œ

./gradlew clean build
  • ν…ŒμŠ€νŠΈ μ œμ™Έν•˜κ³  λΉŒλ“œ
./gradlew clean build -x test

πŸ“ Docker Compose μ‹€ν–‰

docker compose up -d
  • νŠΉμ • μ„œλΉ„μŠ€λ§Œ μ‹€ν–‰
docker compose up -d api-gateway order-service delivery-service

πŸ“ μ‹€ν–‰ μƒνƒœ 확인

docker compose ps
  • μ„œλΉ„μŠ€ 둜그 확인
docker compose logs -f api-gateway

πŸ“ μ£Όμš” 접속 μ£Όμ†Œ

ν•­λͺ© URL
API Gateway http://localhost:19091
Eureka Dashboard http://localhost:19090
Zipkin http://localhost:9411
Prometheus http://localhost:9090
Grafana http://localhost:3000

πŸ“ μ’…λ£Œ

docker compose down

πŸ’‘ ν™•μž₯ κΈ°λŠ₯

  • Kafka 기반 이벀트 슀트리밍 λ„μž…
  • Saga νŒ¨ν„΄ 기반 λΆ„μ‚° νŠΈλžœμž­μ…˜ 처리
  • Redis 뢄산락 기반 λ™μ‹œμ„± μ œμ–΄

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors