Page 14 -
P. 14

5.1         구성(그리고 복잡성) 관리
                                                                   S P R I N G  M I C R O S E R V I C E S






                        클라우드에서 실행하는 마이크로서비스에서는 마이크로서비스의 인스턴스가 사람의 개입을 최
                        소화하여 신속하게 시작되어야 하므로 애플리케이션 구성을 관리하는 것은 중요하다. 사람이

                        서비스를 배포하기 위해 수동으로 구성하거나 건드려야 한다면 애플리케이션에서 구성 불일치                                  5
                        (configuration drift)나 예기치 않은 장애, 확장 문제 대응을 위한 지연 시간 등이 발생할 수 있다. 앞
                        으로 지킬 네 가지 원칙을 세워 애플리케이션 구성 관리에 대한 논의를 시작해 보자.


                           ●     분리(segregate): 서비스의 물리적 배포에서 서비스 구성 정보를 완전히 분리해야 한다. 실제                  스프링 클라우드 컨피그 서버로 구성 관리
                             로 애플리케이션 구성 정보는 서비스 인스턴스와 함께 배포되어서는 안 되며, 시작 중인 서
                             비스에 환경 변수로 전달되거나 서비스가 시작할 때 중앙 저장소에서 읽어 들여야 한다.

                           ●     추상화(abstract): 서비스 인터페이스 뒷단에 있는 구성 데이터의 접근 방식을 추상화해야 한
                             다. 애플리케이션 구성 데이터를 조회하는 데 서비스 저장소(파일 기반 또는 JDBC 데이터

                             베이스 기반)에서 직접 읽어 오는 코드를 작성하기보다 REST 기반 JSON 서비스를 사용해
                             야 한다.
                           ●     중앙 집중화(centralize): 클라우드 기반의 애플리케이션에는 실제로 수백 개의 서비스가 실행
                             될 수 있어 구성 데이터를 보관하는 데 사용되는 여러 저장소 수를 최소화하는 것이 중요하
                             다. 가능한 적은 수의 저장소로 애플리케이션 구성 정보를 모아야 한다.

                           ●     견고화(harden): 애플리케이션 구성 정보는 배포되는 서비스와 완전히 분리되고 중앙 집중화
                             되므로 사용하고 구현할 솔루션은 가용성이 높고 이중화가 필요하다.

                        명심해야 할 핵심 사항 중 하나는 구성 정보를 실제 코드 외부로 분리할 때 외부 의존성이 생겨서

                        이를 관리하고 버전 제어한다는 것이다. 애플리케이션 구성을 제대로 관리하지 못하면 탐지하기
                        어려운 버그와 예기치 않은 장애의 온상이 되기 때문에 애플리케이션 구성 데이터는 추적 가능하
                        고 버전을 제어할 수 있어야 한다고 아무리 강조해도 지나치지 않다.















                                                                                                      165




         macrospring_06.indd   165                                                               2022-06-20   오후 1:09:01
   9   10   11   12   13   14   15   16   17   18   19