[Spring Cloud] - 2. Github and Configuration Server

안녕하세요. 지난 시간에는 Spring Cloud의 Configuration Server를 로컬 환경의 설정 파일을 통하서 구성하는 방법에 대해 알아봤습니다. 

로컬 내에 있는 설정 파일을 직접 작성하여 이를 Pull 방식으로 이용할 수 있도록 별도의 구성 서버를 작성하는 것은 매우 효율적으로 서버의 구성 설정을 변경하고 새로이 작성하는 데 용이합니다.

그런데, 여기에 Git을 추가한다면 어떨까요? 기존의 설정에서 새로운 설정으로 변경한 뒤, 어떠한 문제점이 생겼다거나 이슈가 발생된다면 롤백을 하여야 합니다. 하지만 파일 시스템에서 롤백을 할 수 있는 것은 Volume Shadow Copy 정도나 혹은 RAID 레벨에서 제공하는 Snapshot, BRTFS에서 제공하는 Snapshot일 것입니다.

하지만 Git을 사용하면 Revert를 이용해서 쉽게 이전 커밋으로 돌릴 수 있고, 변경 사항을 팀 내에서 공유하며 여기에 Github 등의 Pull Request 기능을 이용한다면, 더욱 효율적으로 설정 관리가 이루어질 수 있겠죠.

 

Create Github Repository

먼저 Github에 각 API 서버에서 사용할 설정 파일을 저장할 수 있도록 새로운 레포지터리를 한 개를 만들어줍니다.

이름은 짧고 간결하게 적는 것을 권장드립니다. 저는 예시로 작성하는 것이기 떄문에 SpringCloud-config-example이라는 이름을 사용해보겠습니다.

 

Push Configuration

레포를 만들었으면 이전 글에서 사용했던 구성을 그대로 사용해 보도록 하겠습니다. 저는 server-configs라는 폴더를 만들어서 MemberService와 NoteService 설정 파일을 dev와 prod로 나누어서 만들어보도록 하겠습니다.

간단하게 설정 파일을 잘 가져오는지 확인하기 위해서 Message란에 어떤 설정 파일인지만 확인할 수 있도록 적습니다.

 

Run Configuration Server

이제 Configuration Server를 실행해봅시다. 그런데, 그냥 실행하면 안됩니다. 왜냐하면, 우리는 지난 글에서 Configuration Server의 설정을 로컬 환경 설정밖에 하지 않았기 때문입니다. 

따라서 Github에 있는 설정 파일을 가져오기 위해 이 파일이 어디에 있는지를 설정해야 합니다.

# Remote 환경 배포 설정
spring:
  profiles: remote
  cloud:
    config:
      server:
        git:
          uri: https://github.com/NEONKID/SpringCloud-config-example
          search-paths: server-configs

resources/bootstrap-remote.yml

위의 파일을 생성하여 어느 레포지터리에 있는 어느 폴더의 설정 파일을 가져올 것인지를 작성해주시면 됩니다.

그리고, 마지막으로 JVM Options에 spring.profiles.active 파라미터를 반드시 remote로 잡아줘야 합니다. IntelliJ IDEA에서는 아래와 같이 설정할 수 있습니다.

Run Configurations에서 Active Profiles를 remote로 바꿔주시면 됩니다.

 

Test 1 - CLI

테스트 역시 이전 포스트에서와 마찬가지로 테스트할 수 있습니다

개발 서버에 대한 설정 파일을 가져오는 것을 예시로 작성하였습니다.

 

마치며...

여기까지 Configuration Server에 대한 구성의 모든 것을 설명하였습니다. 이 파트에서는 오직 서버 구성에 대한 것만 이야기 하였습니다. 

다음 파트에서는 직접 API 서버를 만들어서 API 서버에서 설정을 가져오는 것에 대한 글을 작성해보도록 하겠습니다.

comments powered by Disqus

Tistory Comments 0