본문 바로가기

IT

[Pattern] 사이드카 패턴(Sidecar pattern)

1. 사이드카 패턴(Sidecar pattern)

사이드카 패턴은 어플리케이션 컨테이너와 사이드카 컨테이너로 구성된 패턴을 말한다.

 

출처: https://www.oreilly.com/library/view/designing-distributed-systems/9781491983638/ch02.html

사이드카 컨테이너에서는 어플리케이션 컨테이너에 관련된 확장된 기능들을 추가할 수 있으며, 어플리케이션의 핵심 로직과는 관련없는 기능들을 추가/제거 할 수 있다.

 

예를 들어서 

  • 어플리케이션 상태 모니터링, 로깅
  • config 데이터 관리 

등은 어플리케이션의 핵심 로직과는 상관없는 서비스이므로 사이드카 컨테이너에서 관리하게 되면 유연하게 관리 가능하다.

 

2. 장단점

장점

  • 어플리케이션 언어와 다른 언어로 개발가능하다.
  • 하나의 사이드 컨테이너를 개발하게 되면 다른 어플리케이션에서도 사용가능하다.
  • 어플리케이션 컨테이너의 성능에 거의 영향을 주지 않고 모니터링 가능하다.
  • 확장성있는 기능을 사이드카를 통해 개발 가능하다.

단점

  • 어플리케이션이 사이드카와 통신하는 비용(시간, 리소스)이 0(Zero)가 아니다. 성능이 중요한 어플리케이션읃 이 비용을 무시할 수 없다.
  • 작은 어플리케이션의 경우, 배보다 배꼽이 커질 수 있다.

 

일단 재사용할 수 있다는 메리트가 큰 패턴으로 보인다.

사이드카 컨테이너에서 로깅과 모니터링+NGINX 기능을 제공한다면 어플리케이션 컨테이너에서는 다른 부분에 더 포커싱 가능할 것 같다.

 

참고자료

docs.microsoft.com/ko-kr/azure/architecture/patterns/sidecar

www.oreilly.com/library/view/designing-distributed-systems/9781491983638/ch02.html