Don’t Repeat Yourself 의 줄임말입니다. 소프트웨어 공학에서 기본이 되는 원칙으로, 로직이나 데이터들이 반복적으로 사용된다면 이를 메소드나 클래스, 변수 등으로 통합하도록 하는 원칙입니다. 또한, 큰 범위에서 재활용 될 가능성이 있는 로직은 라이브러리로 패키징하는 것이 일반적입니다.
“A Library” 및 “B Library” 라는 이름을 가진 공유 라이브러리에 의존하는 마이크로서비스 “A Service”를 가정하겠습니다.
심각한 문제를 초래하는 버그가 확인되어, 긴급하게 “B Library”를 패치했으나, “B Library”는 이전 업데이트된 “A Library”의 최신버전에 의존하게 되었다 가정합니다.
공통적으로 사용되는 분야를 컨테이너화 하여 사용될 서비스와 같은 환경에 배포합니다.
단점
예시) Grafana Loki와 함께 사용되기도 하는 Promtail 등의 로그 수집기
여전히 공유 라이브러리가 유효한 방법으로 적용될 수 있습니다. 로깅, 패턴매칭 등의 변경이 드물게 일어나는 Stable한 코드는 공유 라이브러리로 패키지화 하여 서비스에서 의존해 사용합니다.
단점
데이터베이스를 물리적으로 분리는 하되, 해당하는 데이터의 캐시를 서비스에 저장하는 방식입니다. 이를 위해선 데이터의 주인이 되는 서비스가 명확해야 합니다.
단점