Spring Cloud

박우영·2023년 5월 13일
0

자바/코틀린/스프링

목록 보기
22/37

spring 을 사용하면서 MSA로 전환한다면 Spring Cloud 를 활용 할 수 있다.

Spring cloud 를 사용하면 다음과 같은 MSA의 단점을 극복 할 수 있다.

MSA의 전반적인 아키텍트


MSA는 다음과같이 클라이언트의 요청을 받으면 API Gateway를 통해
각 서비스를 이용할 수 있다.

Spring Cloud Config

다수의 MS 가 가지고있는 환경들을 중앙집중 형태로 관리하기 위해서 Spring Cloud Config를 사용한다.

Spring Cloud Config Server 설정

config 또한 하나의 MicroService이다. 설정 방법은 아래 와같다

  • github repository에 원하는 yml 설정을 세팅해준다.

  • spring cloud server 의존성 주입을 해주고 프로젝트 생성

  • application.yml 설정을 아래와 같이 해준다

server:
  port: 9900

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/choideakook/CloudConfig

config server의 포트는 9900 이고 spring cloud config로 동작하는데 git을 사용하고 해당 uri는 다음과 같다는 의미

  • postman 을 사용하여 아래와 같은 요청을 보내보면

응답에 성공했다는 메시지와 config server log 상에서 아래와 같이

2023-05-13T16:28:42.367+09:00  INFO 44400 --- [nio-9900-exec-7] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: Config resource 'file [/var/folders/dm/kzd96t2j09j627t49wk7rhqw0000gn/T/config-repo-16754938457828452995/config-view-dev.yml]' via location 'file:/var/folders/dm/kzd96t2j09j627t49wk7rhqw0000gn/T/config-repo-16754938457828452995/'

Adding property source: Config resource 'file [/var/folders/dm/kzd96t2j09j627t49wk7rhqw0000gn/T/config-repo-16754938457828452995/config-view-dev.yml]'
라는 메시지를 확인 할 수있다.

Client 설정

디펜던시에 추가

    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'

application.yml 설정

server:
  port: 9991

spring:
  application:
    name: config-view-dev  [해당 yml 이름]
  config:
    import: optional:configserver: [configserver] 주소 

테스트를위한 controller

@RestController
public class ConfigController {

    @Value("${custom.con}")
    private String name;

    @GetMapping("/test")
    public String test() {
        return name;
    }
}

custom.con 값은 config-view-dev.yml 에서 설정 했음

spring:
  mvc:
    hidden-method:
      filter:
        enabled: true

jasypt:
  encryptor:
    bean: jasyptStringEncryptor

custom:
  con: connection success!


연결 성공된걸 확인 할 수있다.

MSA를 적용할때 공통된 yml를 관리할때 중앙집중식으로 관리 할 수있다는 것.

회고


yml 을 저장소에 모아두고 관리하니 정말 편리했다. 실제 프로젝트에 전환중에 문제점이 있었는데 Spring Cloud Config 적용시 문제점 에 정리를 해놨다. 편리한 기술은 그만큼 알아야 적용할 수 있는거고 자세한 동작과정 을 알아야 문제 해결능력을 향상 시킬 수 있다는걸 느꼈다.

참조


https://www.youtube.com/watch?v=utpU00trFb8&list=PLOSNUO27qFbv95vD0Cc5Vwtro4vcMZGiy&index=16

0개의 댓글