Inflearn brand logo image

인프런 커뮤니티 질문&답변

김진태님의 프로필 이미지
김진태

작성한 질문수

쿠버네티스 대신 도커 SWARM 사용 방법 핵심 강의

traefik(트래픽) 모드에서 SQL DB와 MongoDB 운영 방법 안내

Docker Swarm과 Traefik을 활용한 MSA 아키텍처 설계 방식

작성

·

111

·

수정됨

0

안녕하세요.
Docker Swarm 기반 마이크로서비스 아키텍처(MSA)를 구성 중입니다. 처음에는 Traefik을 이용해 모든 내부 마이크로서비스를 거치도록 (즉, serviceA가 serviceB를 호출할 때도 Traefik을 통해서만 통신) 운영하려고 했습니다. 그런데 그렇게 할 경우 아래와 같은 문제가 예상됩니다:

  1. 성능/오버헤드

    • 모든 내부 트래픽이 Traefik을 중간에 두고 오가므로, 네트워크 홉이 추가됩니다.

    • Keep-Alive 연결이 많아지고, Traefik이 병목이 될 가능성이 있음.

  2. 복잡한 설정

    • 내부 수많은 서비스가 각각 Traefik의 라우터/서비스 규칙을 가져야 하므로 라벨 설정이 매우 복잡해질 수 있음.

    • Path/Host 기반 라우팅 규칙도 내부 API 전부에 대해 관리해야 하므로 관리 부담 증가.

  3. 인증/인가가 불필요한 내부 통신

    • 외부 노출이 전혀 필요 없는 내부 서비스 등까지도 Traefik을 거치는 것은 과도할 수 있음.

       

       

이러한 이유로, Traefik이 모든 트래픽을 일괄 처리하는 대신, 내부 통신은 Docker Swarm 로드밸런싱으로 처리하고, 외부 트래픽(HTTPS/도메인/인증서)은 Traefik에 맡기는 구조로 변경하려고 합니다. 구체적으로는,

  1. Docker Swarm

    • service 간에는 “user-service:8001” 식으로 연결 → Swarm 라운드 로빈

    • Keep-Alive나 오토스케일 시 컨테이너가 늘어나면 Swarm이 자동 분산

  2. Traefik

    • 오직 외부 접근이 필요한 Gateway나 public API에 대해서만 라벨(traefik.enable=true) 적용

    • HTTPS 인증서, Path/Host 라우팅, 미들웨어(인증/인가, IP 제한)를 외부 경계에서만 적용

    • 내부적으로는 Swarm에 맡기고, Traefik은 외부→Gateway(혹은 외부→공개 서비스)만 처리

  3. 네트워크 분리

    • “public-net”: Traefik, Gateway 등 외부 노출이 필요한 서비스

    • “backend-net”: user-service 등 내부용 서비스만 존재, 외부와 직접 연결되지 않음

궁금한 점

  1. 위와 같은 구조(외부는 Traefik, 내부는 Swarm + 네트워크 분리)가 흔히 권장되는 방식인가요?

  2. 내부 서비스까지 Traefik을 거치는 구조가 과연 득보다 실이 많을지, 실제 운영 사례가 궁금합니다.

     

  3. 보안 측면에서 “Traefik + Swarm ” 방식을 쓸 때 주의해야 할 점이나, 더 권장되는 패턴이 있으면 알려주세요!

    감사합니다.

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
김진태님, Docker Swarm과 Traefik을 활용한 MSA 아키텍처 설계와 관련하여 질문 주셔서 감사합니다.

  1. 외부는 Traefik, 내부는 Swarm + 네트워크 분리 방식의 권장 여부

    • 내부적으로 서비스 간 통신에 Swarm의 로드밸런싱을 이용하고, 외부 트래픽에 대해서만 Traefik을 사용하는 방식은 성능 최적화와 복잡도 감소 측면에서 좋은 선택입니다.
    • 네트워크를 분리함으로써 보안 측면에서도 이점을 얻을 수 있으며, 이러한 방식은 상당히 일반적인 패턴으로 다양한 조직에서 채택하고 있습니다.
  2. 내부 서비스까지 Traefik을 거치는 구조의 득과 실

    • 모든 내부 트래픽이 Traefik을 통하게 할 경우, 관리 부담과 복잡한 설정이 필요하며, 성능 저하의 원인이 될 수 있다는 점에서 신중한 검토가 필수적입니다.
    • 실제 운영 사례에서는, 내부 트래픽까지 프록시하는 데 따른 오버헤드를 감당할 수 없는 경우가 많아, 외부와의 인터페이스에만 Traefik을 적용하는 경우가 일반적입니다.
  3. 보안 측면에서의 주의 사항

    • ‘Traefik + Swarm’ 방식을 사용할 때는 각 네트워크 간의 세분화와 방화벽 설정이 중요합니다.
    • Traefik이 외부로부터 들어오는 요청을 처리하는 역할을 하므로 HTTPS 설정과 인증서 관리가 필수적입니다.
    • 또한, Swarm의 기본 제공 암호화와 네트워크 격리를 적극 활용하시기를 권장합니다.

추가로, ‘Spring Boot’를 활용한 Docker Compose 환경에서의 서비스 간 공유 및 관리 관련 정보가 필요하다면, 아래 출처를 확인해볼 수 있습니다.

이 정보가 도움이 되셨기를 바랍니다. 더 궁금한 사항이 있으시면 언제든지 질문해주세요. 감사합니다.

김진태님의 프로필 이미지
김진태

작성한 질문수

질문하기