Nomad의 서비스 디스커버리

Nomad의 서비스 디스커버리 (Service Discovery in Nomad)

호스트 머신에서 실행 중인 서비스를 서로 소비할 수 있게 노출하는 네트워킹 기능 모음인 서비스 디스커버리에 대해 알아봐요.

출처: 문서

본문

서비스 디스커버리(Service Discovery) 는 호스트 머신에서 실행 중인 서비스를 노출하고 서로 소비할 수 있게 만드는 네트워킹 기능 모음을 말해요.

Nomad에는 엣지 컴퓨팅과 기본 요구 사항을 가진 배포에 적합한 경량 서비스 디스커버리 기능이 포함돼 있어요. 프로덕션 워크로드에는 HashiCorp Consul을 서비스 디스커버리 솔루션으로 통합하는 것을 권장해요.

Consul 서비스 디스커버리

Consul은 규모에 맞는 동적 워크로드 운영에 적합한 서비스 카탈로그를 사용해요. Consul에 서비스를 정의하고 Nomad 작업 명세의 service 블록에서 건강 검사를 구성하면, 작업을 실행할 때 Consul이 서비스를 카탈로그에 자동으로 등록해요.

Consul 서비스 디스커버리는 복잡한 네트워킹 요구 사항을 가진 클라우드, 멀티 클라우드, 하이브리드 클라우드 배포의 규모 있는 프로덕션 환경에 이상적이에요. 주요 사용 사례는 다음과 같아요.

  • 마이크로서비스 아키텍처: Consul은 엔드포인트를 하드코딩하지 않고 자동 디스커버리, 건강 기반 라우팅, 장애 감지를 가능하게 해요.
  • 프로덕션의 고가용성: DNS 조회, mTLS 암호화, 또는 Traefik 같은 도구와의 통합에 의존하는 워크로드의 경우 Consul은 정상 인스턴스만 발견 가능하도록 보장해요.
  • 동적 앱 구성 및 모니터링: 애플리케이션은 런타임 중 자동화된 구성 변경, 상세한 텔레메트리 출력, 모니터링 통합을 위해 Consul KV를 사용할 수 있어요.
  • 하이브리드 또는 멀티 클러스터 설정: 서비스가 Nomad 클러스터에 걸쳐 있거나 비 Nomad 구성 요소와 통합할 때 Consul은 안전한 연결과 중앙 집중식 디스커버리를 제공해요.
  • 레거시 앱 현대화: 모놀리스를 서비스로 마이그레이션하고, 더 쉬운 확장과 모니터링을 위해 정적 IP/호스트 이름을 Consul DNS로 대체해요.

Nomad에서 Consul 서비스 디스커버리의 실제 예시를 보려면 모놀리식 애플리케이션 마이그레이션 튜토리얼 컬렉션을 완료해요.

Nomad 네이티브 서비스 디스커버리

Nomad의 네이티브 서비스 디스커버리를 사용하려면 Go 템플릿 구문을 사용해 Nomad 작업 명세의 template 블록을 구성해야 해요. 이는 Nomad의 기반 Go 아키텍처를 활용해 주소 값을 동적으로 설정해요.

Nomad 서비스 디스커버리는 고급 네트워킹보다 낮은 오버헤드를 우선시하는 시나리오에 이상적이에요. 주요 사용 사례는 다음과 같아요.

  • 소규모 단일 클러스터 배포: DNS나 외부 레지스트리의 복잡성 없이 템플릿화된 IP나 포트로 데이터베이스에 연결하는 웹 앱 같은 기본 서비스 통신 요구 사항이 있는 애플리케이션용.
  • 로컬 개발 및 테스트 환경: 개발자는 Consul을 설치하지 않고 Nomad CLI로 조회할 수 있어 서비스를 빠르게 프로토타이핑할 수 있어요.
  • 미니멀리스트 프로덕션 설정: Nomad는 기본적인 동서(east-west) 트래픽을 위한 임베디드 등록과 로드 밸런싱을 제공하며, 이는 리소스가 제한된 엣지 컴퓨팅 환경이나 조직에서 Nomad를 점진적으로 도입할 때 충분할 수 있어요.
  • 작업의 의존성 체이닝: 템플릿을 사용해 서비스 세부 정보를 동적으로 주입해 상호 연결된 서비스를 구축하는 것은 마이크로서비스 아키텍처가 없는 애플리케이션에 적합해요.

Nomad 서비스 디스커버리가 실제로 동작하는 예시를 보려면 Nomad의 AI 워크로드 튜토리얼 컬렉션을 완료해요.

서비스 디스커버리 비교

다음 표는 각 제품의 서비스 디스커버리 기능 측면을 설명해요.

측면 Nomad Consul
주소 디스커버리 정적 API/CLI 조회 / Go 템플릿 구문 동적 DNS 해석
건강 검사 Nomad 할당 건강 / 건강 필터링 없음 내장 HTTP/TCP/GRPC 검사 / 정상 인스턴스로 필터링
확장성 소규모, 기본 워크로드에 가장 적합 변동이 많은 대규모 분산 시스템에 가장 적합
추가 요구 사항 없음 Nomad 노드에서 실행되는 Consul 에이전트

Consul의 서비스 디스커버리 기능에 대해 더 알아보려면 Consul 문서의 "What is service discovery?"를 참고해요.

다음 단계

Nomad에서 서비스 디스커버리를 구성하는 방법 알아보기는 작업 명세에서 Nomad와 Consul 서비스 디스커버리를 구성하는 과정을 설명해요.

Nomad 서비스 디스커버리에 대해 더 자세히 알아보려면 다음 튜토리얼을 완료해요.

Consul과 그 서비스 디스커버리 운영에 대한 자세한 내용은 Consul 문서의 Discover services를 참고해요.

더 알아보기 (Learn more)