모든 애플리케이션 개발자가 알고 있듯이 애플리케이션의 런타임 동작을 구성 가능하게 만들어야 할 때가 있다. 일반적으로 이 작업은 애플리케이션과 함께 배포된 프로퍼티 파일에서 구성 데이터를 읽거나 관계형 데이터베이스 같은 데이터 저장소에서 데이터를 읽어 오는 것이 해당된다.
마이크로서비스는 대개 동일한 종류의 구성을 요구한다. 차이점은 클라우드에서 실행되는 마이크로서비스 애플리케이션에는 수백 또는 수천 개의 마이크로서비스가 실행될 수 있다는 것이다. 서비스가 전 세계로 확장되면 이 문제는 더 복잡해진다. 지리적으로 분산된 서비스 수가 많기 때문에 새로운 구성 데이터를 가져오기 위해 서비스를 재배포하는 일은 수행하기 어렵다. 서비스 외부의 데이터 저장소에 데이터를 저장하면 이 문제가 해결되지만, 클라우드의 마이크로서비스 상황에서는 다음 몇 가지 고유한 난제가 있다.
• 구성 데이터는 구조가 단순한 편이라서 보통 자주 읽고(read) 간혹 쓴다(write). 관계형 데이터베이스는 단순한 키-값 조합보다 훨씬 더 복잡한 데이터 모델을 관리하는 용도로 설계되었기 때문에 이 상황에서는 과분하다.
• 데이터는 정기적으로 액세스되지만 드물게 변경되므로 데이터의 읽기 지연 시간은 낮아야 한다.
• 데이터 저장소는 고가용성을 유지하고 데이터를 읽는 서비스에 가까워야 한다. 구성 데이터 저장소는 애플리케이션의 단일 장애 지점이기 때문에 완전히 다운되면 안 된다.
5장에서 단순한 키-값 저장소와 같은 것을 사용하여 마이크로서비스 애플리케이션의 구성 정보를 관리하는 방법을 보여 줄 것이다.