MSA 10일차 - Spring Cloud Config

Kim Hyen Su·2023년 10월 22일
0
post-thumbnail
post-custom-banner

용어 정리

✅ 분산 시스템 :

  • 인터넷 상에 분산된 여러 컴퓨터로 작업을 처리하고, 그 결과를 상호 교환하도록 구성한 시스템.

✅ 파일 경로 : file:// 예약어를 통해 파일&디렉토리 경로에서 검색함을

✅ 암호화 관련 - 대칭 & 비대칭 키

대칭키 : 암호화 -복호화가 동일한 키로 가능한 키 Ex) 시저 암호

비대칭키 : 암호화 - 복호화가 다른 키로 가능한 키 Ex) 공개키 - 비공개키

🕶️ 참고 : mysql 연동 설정 시,

driver-class-name : com.mysql.cj.jdbc.Driver # 8버전 이상

diver-class-name : com.mysql.jdbc.Driver # 구버전

6.Config 서버를 활용한 연동

🎆 Spring Cloud Config

Spring Cloud Config는 분산 시스템을 위한 외부 구성 관리를 제공한다. 이를 통해 애플리케이션의 설정을 중앙 집중식으로 관리하고, 서비스 간에 설정을 공유할 수 있다.

🎇 Spring Cloud Config 서버의 주요 특징과 작동 방식:

  1. 중앙 집중화된 설정 저장소 :
  • Spring Cloud Config 서버는 애플리케이션의 설정 파일을 저장하고 관리하는 중앙 집중화된 저장소이다.
  • 이 저장소는 Git, SVN 등의 버전 관리 시스템을 사용할 수 있다.
  1. 외부 구성 소스 지원 :
  • Spring Cloud Config는 다양한 외부 구성 소스를 지원한다. 주로 Git이 사용되지만, 다른 소스도 사용 가능하다.
  1. 다양한 환경에 대한 설정 제공 :
  • Spring Cloud Config는 각각의 환경(개발, 테스트, 운영 등)에 대한 설정을 구성할 수 있다.
  • 각 애플리케이션은 자신의 환경에 맞게 구성된 설정을 가져올 수 있다.
  1. 서비스 간의 설정 공유 :
  • 다수의 서비스가 있을 때, 각 서비스는 Spring Cloud Config 서버에서 설정을 가져와 사용할 수 있다.
  • 이를 통해 서비스 간에 일관된 구성을 유지할 수 있다.
  1. 동적으로 설정 변경 감지 :
  • Spring Cloud Config 클라이언트는 정기적으로 Config 서버에 설정을 요청하며, 변경 사항이 있을 경우 다시 로드한다.
  • 이를 통해 동적으로 설정을 업데이트할 수 있다.
  1. 보안 및 암호화 :
  • Spring Cloud Config는 보안 기능을 제공하여 설정을 안전하게 관리한다.
  • 민감한 정보를 포함하는 설정은 암호화할 수 있다.
  1. 프로필 지원 :
  • Spring Profiles를 사용하여 각 환경 및 상황에 따라 다른 설정을 제공할 수 있다.

🎇 Spring Cloud Config 서버를 설정하는 과정:

Spring Cloud Config 서버 설정

  1. 디렉토리 및 yml 파일 생성 :
  • 파일을 생성 한 뒤 기존에 application.yml에 저장하던 설정 정보를 담는다.
  1. 프로젝트 생성 :
  • spring-cloud-config-server 의존을 추가한 프로젝트를 생성해준다.

    사진1

  1. 서버 활성화 어노테이션 추가 :
  • Application 클래스 위에 @EnableConfigServer 어노테이션을 추가해준다.
  1. Config 서버 포트 추가 :
  • 서버 application.yml 파일 내 서버 포트 8888 로 등록한다.
  1. 저장된 설정 정보 경로 등록 :
  • 서버 application.yml 파일 내 설정 정보가 담긴 yml 파일의 로컬 절대 경로를 입력한다.
  • file : // : 파일(& 디렉토리) 시스템에서 해당 경로를 찾으라고 지정.
  • 위 경로는 terminal 상에 pwd를 검색하여 나온 경로를 복붙하면 된다.
spring:
  cloud:
    config:
      server:
        git:
          uri: file://로컬에 저장된 절대 경로
  1. 설정 정보 등록 여부 확인
  • 웹브라우저에 127.0.0.1:포트번호/yml 파일명/default 으로 입력하면 해당 yml 파일이 조회된다면 연동 성공.
  • 설정 파일마다 프로필 등록이 가능하며, 방법은 파일명-프로필명.yml 로 입력해주면 된다.
  • 조회 방법은 127.0.0.1:포트번호/yml 파일명/프로필명 으로 입력하면 조회 가능하다.

[Spring Cloud Config 공식 문서](Spring Cloud Config - https://docs.spring.io/spring-cloud-config/docs/current/reference/html/)

Spring Cloud Config 클라이언트 설정

  1. 의존 추가 :
  • spring-cloud-starter-configspring-cloud-starter-bootstrap 의존 추가.
  1. 사용할 Config 서버 설정 :
  • bootstrap.yml 또는 bootstrap.properties 파일을 사용하여 Config 서버를 설정한다. 이 파일은 애플리케이션이 시작될 때 가장 먼저 읽힌다.
spring:
  cloud:
    config:
      uri: spring-cloud-config 서버 포트
      name: 설정 정보가 담긴 yml 파일명(ex, db.yml -> db)
  1. 외부 구성 소스 연결 :
  • Config 서버가 사용할 외부 구성 소스(Git, SVN 등)를 설정.
  • Git의 경우, git init 을 통해 생성 후 commit 까지 해주면 된다.
  1. Config 클라이언트 설정 :
  • 각 서비스에서 Config 클라이언트를 설정하고, 어떤 애플리케이션의 어떤 설정을 가져올지 정의한다.
  1. 애플리케이션 코드에서 설정 사용 :
  • Config 서버에서 가져온 설정은 애플리케이션 코드에서 @Value 어노테이션 또는 Environment 객체를 통해 사용할 수 있다.

Spring Cloud Config는 분산 시스템에서 설정 관리를 효율적으로 처리하고, 변경 사항을 동적으로 적용할 수 있도록 도와준다.

로컬에 저장하는 방식은 가상 PC 생성 후 이 서버를 config 서버로 설정하여 배포하면 된다.

하지만, 이러한 경우 변동 사항이 발생하였을 경우 가상 PC에 접속하여 코드를 수정해야 한다.

원격 레포를 이용한 처리를 사용하면 이러한 문제점을 해결할 수 있다.

🎆 원격 레포지토리에 올린 파일을 이용한 처리

Public Repo

  1. 원격 레포지토리 생성
  2. yml 파일 push
  3. 서버 내 application.yml 파일을 아래와 같이 작성
spring:
  cloud:
    config:
      server:
        git:
          uri: 레포지토리 주소

Private Repo

application.yml 파일을 아래와 같이 작성

spring:
  cloud:
    config:
      server:
        git:
          uri: 레포지토리 주소
          username: 깃허브 계정명 # 퍼블릭에서는 불필요
          password: 깃허브 패스워드 # 퍼블릭에서는 불필요

이 후 username과 password는 암호화 해준다.

암호화에 필요한 키는 VM option을 통해서

전달해주면, 빌드 시 해당 키로 검증이 이뤄지게 되어 보안이 올라간다.

profile
백엔드 서버 엔지니어
post-custom-banner

0개의 댓글