Skip to content

Conversation

@daydream-03
Copy link
Collaborator

개요

모놀리식 구조에서 멀티 모듈 구조로 전환하고, 추천 서비스를 독립적인 서브프로젝트로 분리한 PR입니다. 이를 통해 모듈 간 의존성을 명확히 하고, 각 모듈의 독립적인 개발 및 배포가 가능하도록 개선했습니다.

주요 기능

1. 멀티 모듈 구조 전환

  • 모놀리식 → 멀티 모듈: 단일 프로젝트를 3개의 서브프로젝트로 분리
    • app: 메인 애플리케이션 모듈
    • common: 공통 유틸리티 및 인터페이스 모듈
    • recommend: 독립적인 추천 서비스 모듈

2. 추천 서비스 모듈 (recommend)

  • 독립적인 Spring Boot 애플리케이션: 별도의 포트(8081)에서 실행
  • 추천 API 제공: /api/v1/recommend 엔드포인트
  • 카테고리 기반 추천: 질문 카테고리와 태그를 기반으로 관련 질문 추천

3. 공통 모듈 (common)

  • Pure Java 유틸리티: 외부 의존성 없는 공통 인터페이스 및 유틸리티
  • 최하위 계층: 다른 모듈들이 의존할 수 있는 기반 모듈
  • 재사용성 향상: 여러 모듈에서 공통으로 사용하는 코드 중앙화

4. 앱 모듈 (app)

  • 메인 애플리케이션: 사용자 인증, 질문 관리, 답변 관리 등 핵심 기능
  • 추천 서비스 통합: RecommendServiceClient를 통한 추천 서비스 호출
  • 레이어 분리: Domain, Repository, Service, Controller, Config, DTO 계층 구조

5. 서비스 간 통신

  • RecommendServiceClient: app 모듈에서 recommend 모듈 호출을 위한 클라이언트
  • RestTemplate 기반 통신: HTTP 기반 서비스 간 통신
  • 장애 격리: 추천 서비스 실패 시에도 메인 서비스는 정상 동작 (빈 배열 반환)

아키텍처 개선

1. 모듈 구조

tech-interview-buddy/
├── app/              # 메인 애플리케이션 모듈
│   ├── domain/       # 도메인 엔티티
│   ├── repository/   # 데이터 접근 계층
│   ├── service/      # 비즈니스 로직 계층
│   ├── controller/   # API 계층
│   ├── config/       # 설정 클래스
│   └── dto/          # 데이터 전송 객체
├── common/           # 공통 모듈
│   └── domain/       # 공통 도메인 (Category 등)
└── recommend/        # 추천 서비스 모듈
    ├── controller/   # 추천 API
    └── dto/          # 추천 DTO

2. 모듈 의존성

  • appcommon: 공통 도메인 및 유틸리티 사용
  • apprecommend: HTTP 통신을 통한 서비스 호출 (런타임 의존성)
  • common: 의존성 없음 (최하위 계층)
  • recommend: 독립 실행 (app과 분리)

3. 레이어별 모듈 이동

  • 도메인 계층: domain/app/src/main/java/.../domain/
  • 리포지토리 계층: repository/app/src/main/java/.../repository/
  • 서비스 계층: service/app/src/main/java/.../service/
  • 컨트롤러 계층: controller/app/src/main/java/.../controller/
  • 설정 계층: config/app/src/main/java/.../config/
  • DTO 계층: dto/app/src/main/java/.../dto/
  • 리소스 파일: resources/app/src/main/resources/

Copy link
Collaborator

@f-lab-moony f-lab-moony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 폴더 구조 변경이라 바로 approve 할게요~

@f-lab-moony f-lab-moony merged commit 804fbfa into feature/2-tech-questions-dashboard Jan 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants