
블로그 작성법
목표 > 공부한 내용 > 얻었고, 앞으로 이걸 해봐야지 적기


프로토콜을 사용해서 두 시스템(소프트웨어)이 통신할 수 있게 도와주는 컴퓨터(또는 소프트웨어)
통로 역할
어떻게 알고, A / B로 나눠서 보내주는 걸까?

4번째 방식을 가장 많이 사용한다.
ex. Rabbit MQ, Kafka, ActiveMQ 등
GlobalExceptionHandler 같은 공통 패키지는 어떻게 해야할까?
같은 코드를 모든 프로젝트에 복붙 해야하나?
ex. Exception 추가 되면, 모든 프로젝트 다 켜놓고 다 복붙
공통된 클래스는 다 같이 가져가는 방법
module: 독립적으로 배포할 수 있는 단위
루트모듈의 build.gradle을 잡고 프로젝트를 킨다.
서브모듈을 압축을 풀고, 드래그앤드롭으로 루트 모듈 안으로 move 시켜 온다.

multi-module의 settings.gradle을 설정한다.

-> a-module, b-module을 intellij가 인식 (파란 네모 생성)
multi-module build.gradle을 아래와 같이 바꿉니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.0'
id 'io.spring.dependency-management' version '1.1.5'
}
allprojects {
group = 'com.shoppingmall'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
}
여기까지하면 각 Application 실행 가능
다른 모듈의 클래스를 가져다 사용하려고 하면 사용이 안된다.

다른 프로젝트이기에 인식이 되지 않는 것 이다.
해결하기 위해서는 루트 프로젝트의 build.gradle에 추가해줘야한다.
:은 서브 모듈이라는 뜻이다.

나 b-module인데 a-module 사용할 거야.

이제 b-module에서 a-module을 사용할 수 있다.

다음과 같이 실행되는 것을 확인할 수 있다.
build를 하면 2가지 jar가 생긴다.
jar는 java에 대한 알집 파일이라고 생각.
사용 용도
1. 배포
2. 라이브러리화

Gradle 명령어
배포용으로는 plain이 없는 이름을 사용해야 한다.


그러면 다음과 같은 위치에 jar파일이 생성된다.


java -jar {project-name}.jar
ex> java -jar b-modlue-0.0.1.SNAPSHOT.jar
다음과 같이 실행이 되는 것을 확인할 수 있다.


알쓸송잡
오늘은 모듈을 여러 개 만들어서 간단하게 MSA를 구축해보았다.
앞으로 도메인 별로 모듈을 생성하여 루트 모듈과 서브 모듈로 MSA 아키텍처를 구축하고 배포해볼 것 이다.
또한, jar 파일을 생성하여 서버를 실행하는 것이 신기하였다.