내 잡다한 노트

application advertising 본문

분산시스템

application advertising

peanutwalnut 2025. 1. 15. 22:57

**분산 시스템에서 애플리케이션 광고(application advertising)**는 애플리케이션이 자신의 존재, 기능 또는 제공하는 서비스를 시스템 내의 다른 구성 요소나 애플리케이션에게 알리는 방법과 과정을 의미합니다. 이는 서비스 디스커버리(서비스 탐색)의 중요한 부분으로, 분산 시스템 내에서 하드코딩된 구성이 없이도 동적으로 서로를 찾고 통신할 수 있도록 돕습니다. 아래에서는 주요 개념과 예시를 통해 자세히 설명하겠습니다.


주요 개념

  1. 서비스 디스커버리 (Service Discovery)
    • 광고(Advertising): 애플리케이션이 시작될 때, 자신이 제공하는 서비스의 위치(예: IP 주소와 포트)와 관련된 메타데이터(서비스 종류, 버전 등)를 서비스 레지스트리나 디스커버리 서비스에 등록함으로써 자신의 존재를 알립니다.
    • 탐색(Discovery): 다른 구성 요소들은 서비스 레지스트리에 쿼리를 보내 필요한 서비스를 찾고, 해당 서비스의 위치와 세부 정보를 획득합니다.
  2. 동적 환경 지원
    • 클라우드 환경이나 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼에서 실행되는 분산 시스템은 동적으로 서비스 인스턴스가 추가되거나 제거되는 경우가 많습니다.
    • 광고 기능은 이러한 변경 사항을 실시간으로 반영해, 클라이언트가 항상 최신의 서비스 정보를 사용할 수 있도록 합니다.
  3. 프로토콜 및 메커니즘
    • DNS 기반 서비스 디스커버리 (DNS-SD): DNS 레코드를 활용하여 서비스를 광고하고 탐색합니다.
    • Consul, etcd, Zookeeper: 서비스 레지스트리 역할을 하는 시스템으로, 서비스들이 자신을 등록하고 상태를 업데이트할 수 있습니다.
    • mDNS와 SSDP: 중앙 레지스트리 없이 로컬 네트워크 상에서 장치들이 서로를 찾도록 돕는 프로토콜입니다.

예시

예시 1: 마이크로서비스 환경에서의 서비스 등록

예를 들어, 전자 상거래 플랫폼이 마이크로서비스 아키텍처로 구성된 경우를 생각해보겠습니다.

  • 광고 과정: 사용자 서비스, 결제 서비스, 재고 관리 서비스 등 각 마이크로서비스는 시작될 때 Consul과 같은 서비스 레지스트리에 자신을 등록합니다. 이때 자신의 IP 주소, 포트, 그리고 헬스 체크(health check) 엔드포인트 등을 함께 등록합니다.
  • 탐색 과정: 프론트엔드 서비스가 결제 서비스를 호출해야 할 때, Consul에 쿼리를 보내어 가장 최신의 결제 서비스 정보를 받아옵니다. Consul은 사용 가능한 인스턴스들을 반환하고, 프론트엔드 서비스는 이를 통해 결제 서비스와 연결을 설정합니다.
  • 이점: 이와 같은 동적 등록을 통해 서비스의 확장/축소나 장애 발생 시에도 정적 구성을 변경할 필요 없이 문제를 효과적으로 처리할 수 있습니다.

예시 2: Kubernetes에서의 서비스 광고

Kubernetes는 자체적인 서비스 디스커버리 메커니즘을 제공합니다.

  • Kubernetes 서비스: 특정 애플리케이션을 제공하는 파드 집합이 생성되면, Service 오브젝트를 정의하여 안정적인 IP 주소와 DNS 이름을 할당합니다.
  • 클러스터 내 광고: 파드들이 시작되면, Service 오브젝트가 파드들의 IP 주소와 포트를 네트워킹 시스템에 광고합니다. 다른 파드들은 해당 Service의 DNS 이름을 사용해 이 파드들을 찾아 통신할 수 있습니다.
  • 동적 업데이트: 파드가 확장되거나 실패하는 경우, Service 오브젝트는 자동으로 엔드포인트 정보를 업데이트하므로 항상 최신 상태의 정보를 제공합니다.

'분산시스템' 카테고리의 다른 글

Service Registry  (0) 2025.01.16
Service Discovery란?  (1) 2025.01.16
Split Brain이란?  (0) 2025.01.09
분산 코디네이터  (1) 2024.12.14
Communication  (0) 2024.12.07