더북(TheBook)

3.1 구성(그리고 복잡성) 관리



마이크로서비스의 인스턴스는 사람이 최소한으로 개입해 신속하게 시작해야 하므로 클라우드에서 실행되는 마이크로서비스에 애플리케이션 구성 관리는 매우 중요하다. 항상 사람이 수동으로 구성하거나 배포하면 구성 편차(configuration drift)와 예상하지 못한 장애, 애플리케이션 확장 요구에 대한 지체 시간(lag-time)이 발생할 수 있다.

이제 우리가 준수하고 싶은 애플리케이션 구성 관리를 위한 네 가지 원칙을 정하고 논의해 보자.

1. 분리(segregate): 실제 물리적인 서비스의 배포와 서비스 구성 정보를 완전히 분리하고자 한다. 애플리케이션 구성 정보를 서비스 인스턴스와 함께 배포하면 안 된다. 그 대신 시작하는 서비스에 환경 변수로 전달하거나 중앙 저장소에서 읽어 와 구성 정보를 전달해야 한다.

2. 추상화(abstract): 서비스 인터페이스 뒷 단에 있는 구성 데이터의 접근 방식을 추상화한다. 서비스 저장소에 직접 액세스하는 코드를 작성하기(즉, 파일이나 JDBC를 사용해 데이터베이스에서 데이터를 읽기)보다 애플리케이션이 REST 기반의 JSON 서비스를 사용해 구성 데이터를 조회하게 만들어야 한다.

3. 중앙 집중화(centralize): 클라우드 기반의 애플리케이션에는 말 그대로 수백 개의 서비스가 존재할 수 있으므로 구성 정보를 보관하는 저장소 개수를 최소로 줄이는 것이 매우 중요하다. 애플리케이션의 구성 정보를 가능한 소수 저장소에 집중화한다.

4. 견고성(harden): 애플리케이션 구성 정보를 배포된 서비스와 완전히 분리하고 중앙 집중화하므로 어떤 솔루션을 사용하더라도 고가용성과 다중성을 구현할 수 있어야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.