TIL

[TIL 2024/09/06] MSA 프로젝트 초기설정

dev_ajrqkq 2024. 9. 7. 00:22

유레카 서버 (Eureka-Server)

 

build.gradle

dependencies {
	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

 

EurekaServerApplication.java

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}

}

 

application.yml

spring:
  application:
    name: eureka-server
server:
  port: 19090
eureka:
  client:
    # 유레카 서버에 자신을 등록할지 여부를 설정합니다.
    # true로 설정하면 유레카 클라이언트가 유레카 서버에 자신을 등록합니다.
    # 유레카 서버에서는 일반적으로 false로 설정하여, 서버가 자기 자신을 등록하지 않도록 합니다.
    register-with-eureka: false
    # 유레카 서버로부터 레지스트리를 가져올지 여부를 설정합니다.
    # true로 설정하면 유레카 클라이언트가 유레카 서버로부터 다른 서비스 인스턴스 목록을 가져옵니다.
    # 유레카 서버에서는 일반적으로 false로 설정하여, 레지스트리를 가져오지 않도록 합니다.
    fetch-registry: false
    # 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL을 설정합니다.
    # 클라이언트 애플리케이션이 유레카 서버에 연결하고 등록하거나 레지스트리를 가져올 때 사용할 URL을 지정합니다.
    service-url:
      defaultZone: http://localhost:19090/eureka/
  # 유레카 서버 인스턴스의 호스트 이름을 설정합니다.
  # 유레카 서버가 자신의 호스트 이름을 다른 서비스에 알릴 때 사용합니다.
  instance:
    hostname: localhost

 

게이트웨이 (Gateway)

 

build.gradle

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-actuator'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'io.projectreactor:reactor-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

 

application.yml

server:
  port: 19091  

spring:
  main:
    web-application-type: reactive 
  application:
    name: gateway
  cloud:
    gateway:
      routes:  
        - id: service
          uri: lb://service
          predicates:
            - Path=/api/**
      discovery:
        locator:
          enabled: true 
eureka:
  client:
    service-url:
      defaultZone: http://localhost:19090/eureka/

 

Api Service

 

build.gradle

dependencies {
	// redis
	implementation 'org.springframework.boot:spring-boot-starter-data-redis'

	// swagger
	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

	// queryDsl
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"

	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'org.postgresql:postgresql'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

 

application.yml

spring:
  application:
    name: service
  datasource:
    url: jdbc:postgresql://localhost:5432/b2b
    username: postgres
    password: qwer
    driver-class-name: org.postgresql.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        format_sql: true
        show_sql: true
        use_sql_comments: true
        highlight_sql: true

server:
  port: 19092
  swagger:
    host: localhost

eureka:
  client:
    service-url:
      defaultZone: http://localhost:19090/eureka/

logging:
  level:
    org:
      hibernate:
        orm:
          jdbc:
            bind: trace