도메인 관점
예를 들어, 유저가 책을 주문하는 서비스의 경우 모듈을 유저, 책, 주문과 같은 형식으로 나누어 모듈을 분리한다.
도메인을 기준으로 나누는 것으로 DDD가 떠올랐다.
백엔드 개발 관점
첫 번째는 아키텍처를 기준으로 분리하는 것이다.
예시로는 계층형 아키텍처를 사용할 경우 컨트롤러, 서비스, 레포지토리(+도메인)를 각각 다른 모듈로 분리한다.
두 번째는 관련된 서버(api 서버, 배치 서버 등)를 기준으로 분리하는 것이다.
예시로는 컨트롤러+서비스(api 서버), 레포지토리+도메인(db 서버), 배치 서버 등 관련된 서버를 기준으로 모듈을 분리한다.
이 중에서도 사이드 프로젝트에서 보통 많이 쓰는 구성은 백엔드 개발 관점에서 관련된 서버를 기준으로 분리하는 방식이었고
필자도 해당 방식을 택했다.
module-api (컨트롤러+서비스)
module-domain (레포지토리+엔티티)
module-infrastructure (외부 api)
module-batch (배치 서버)
plugins {
kotlin("jvm") version "1.9.21"
}
allprojects {
group = "org"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
}
subprojects {
apply {
plugin("org.jetbrains.kotlin.jvm")
}
java.sourceCompatibility = JavaVersion.VERSION_17
java.targetCompatibility = JavaVersion.VERSION_17
dependencies {
implementation("org.jetbrains.kotlin:kotlin-reflect")
testImplementation(kotlin("test"))
}
tasks.test {
useJUnitPlatform()
}
}
allprojects
: 현재 모듈과 하위 모듈에 적용subprojects
: 하위모듈에만 적용됨
url: https://velog.io/@devmizz/Spring-%EB%A9%80%ED%8B%B0-%EB%AA%A8%EB%93%88%EC%9D%98-%EA%B5%AC%ED%98%841-%EB%AA%A8%EB%93%88-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EA%B4%80%EA%B3%84-%EC%84%A4%EC%A0%95
title: "[Spring] 멀티 모듈의 구현(1) - 모듈 생성 및 관계 설정(1)"
description: "모듈을 본격적으로 만들어보자!"
host: velog.io
favicon: https://static.velog.io/favicons/favicon-32x32.png
image: https://velog.velcdn.com/images/devmizz/post/13804b25-e878-4dd1-8630-665c0554f4e7/image.png