API7 Enterprise와 서비스 디스커버리 및 등록 통합하기

Zhihuang Lin

Zhihuang Lin

June 13, 2024

Products

마이크로서비스 아키텍처의 광범위한 채택으로 서비스 간의 관계가 점점 더 복잡해지고 있습니다. 이러한 맥락에서 서비스 디스커버리는 서비스가 서로를 동적으로 찾고 상호 작용할 수 있도록 해주기 때문에 특히 중요합니다.

API7 Enterprise는 풍부한 기능을 갖춘 API 관리 플랫폼으로, 서비스 디스커버리 레지스트리와 원활하게 통합하여 업스트림 서비스의 자동 발견 및 지능형 라우팅을 달성할 수 있습니다.

서비스 디스커버리란 무엇인가요?

서비스 디스커버리는 네트워크 내에서 서비스 인스턴스와 그 주소를 자동으로 감지하여 다른 서비스나 클라이언트가 이를 찾고 통신할 수 있도록 하는 메커니즘입니다. 현대의 분산 시스템 및 마이크로서비스 아키텍처에서 서비스 디스커버리는 서비스 주소를 하드코딩하거나 수동으로 구성을 업데이트할 필요 없이 서비스를 동적으로 찾고 연결할 수 있도록 해주는 중요한 구성 요소입니다.

서비스 디스커버리의 기능

  1. 동적 서비스 위치 지정: 마이크로서비스 아키텍처에서 서비스 인스턴스는 동적으로 시작, 중지, 마이그레이션 또는 확장될 수 있습니다. 서비스 디스커버리는 이러한 변경 사항을 자동으로 추적하여 클라이언트가 항상 사용 가능한 서비스 인스턴스를 찾을 수 있도록 합니다.

  2. 장애 허용 및 페일오버: 서비스 인스턴스가 실패할 경우, 서비스 디스커버리는 이를 감지하고 클라이언트가 다른 정상적인 인스턴스에 연결하도록 안내하여 페일오버와 고가용성을 가능하게 합니다.

  3. 구성 및 관리 간소화: 서비스 디스커버리를 통해 개발자는 각 서비스의 네트워크 주소를 수동으로 구성하고 관리할 필요가 없습니다. 이는 구성 오류의 가능성을 줄이고 서비스의 배포 및 관리를 간소화합니다.

API7 Enterprise에서의 서비스 디스커버리

서비스 디스커버리는 종종 로드 밸런서나 API 게이트웨이와 함께 사용되어 요청이 여러 서비스 인스턴스에 균등하게 분산되도록 하여 시스템 처리량과 응답 시간을 개선합니다. 분산 시스템에서 서비스 인스턴스는 다양한 이유로 사용 불가능 상태가 될 수 있으며, 서비스 디스커버리 메커니즘은 이러한 문제를 신속히 식별하고 로드 밸런서를 통해 요청을 다른 정상적인 서비스 인스턴스로 리디렉션하여 서비스의 고가용성을 보장합니다.

API7 Enterprise에서는 "업스트림" 개념이 이러한 유연성을 더욱 확장합니다. 업스트림을 서비스 레지스트리로 구성함으로써 API 게이트웨이는 백엔드 서비스 인스턴스 목록을 동적으로 검색하고 필요에 따라 요청 분배 전략을 조정할 수 있습니다. 이는 서비스 인스턴스의 수나 상태가 변경되더라도 API 게이트웨이가 빠르게 적응할 수 있음을 의미하며, 수동 구성 업데이트나 서비스 재시작이 필요하지 않습니다.

서비스 디스커버리와 API 게이트웨이의 협업은 마이크로서비스 아키텍처에 강력한 동적 서비스 관리 및 트래픽 제어 기능을 제공합니다. API7 Enterprise는 이 기능을 더욱 강화하고 확장하여 시스템이 다양한 복잡한 시나리오와 요구 사항을 더 유연하고 효율적으로 처리할 수 있도록 합니다. 또한, 클라우드 네이티브 및 컨테이너화 기술의 광범위한 채택으로 서비스 인스턴스의 배포 및 확장이 더욱 쉬워지고 빠르게 이루어질 수 있습니다.

API7 Enterprise에서 서비스 디스커버리를 구성하는 방법

서비스 레지스트리 추가

게이트웨이 그룹에서 서비스 레지스트리 페이지로 이동하여 "서비스 레지스트리 연결 추가" 버튼을 클릭하면 연결 양식이 나타납니다.

API7 Enterprise에서 서비스 레지스트리 연결 추가

양식에서 서비스 레지스트리의 기본 정보와 관련 연결 구성을 입력해야 합니다. 현재 API7 Enterprise는 Kubernetes 및 Nacos 서비스 레지스트리와의 통합을 지원합니다. 여기서는 Nacos를 예로 들어보겠습니다. 디스커버리 유형으로 "Nacos"를 선택한 다음, API7 Enterprise가 인증을 위해 토큰을 얻는 방법을 지정합니다. 이는 계정/비밀번호, 액세스 키 및 시크릿 키를 통해 이루어지거나 토큰 값을 직접 입력할 수 있습니다.

서비스 레지스트리 정보 추가

기본 인증 구성 외에도 API7 Enterprise는 연결 시간 초과 및 읽기/쓰기 시간 초과와 같은 더 세밀한 구성 옵션을 제공합니다. 이러한 구성은 실제 필요에 따라 유연하게 조정될 수 있으며, 불안정한 네트워크 연결로 인한 장기간 대기 요청을 효과적으로 방지하고 시스템 자원의 비효율적인 사용을 줄일 수 있습니다.

서비스 레지스트리를 생성한 후, 새로운 연결 항목이 목록에 즉시 나타나지만 시스템의 검사를 통해 연결 상태가 정상으로 표시될 수 있습니다. 이 연결 항목을 통해 사용자는 서비스 디스커버리 상태와 서비스 레지스트리의 관련 구성을 편리하게 확인할 수 있습니다.

서비스 레지스트리 연결 추가

업스트림에서 서비스 디스커버리 구성

서비스 레지스트리는 게이트웨이 그룹에 속한 리소스입니다. 서비스 레지스트리가 생성된 게이트웨이 그룹에서 해당 게이트웨이 그룹에 게시된 모든 서비스는 이 서비스 레지스트리의 구성을 사용할 수 있습니다. 서비스 게시 과정에서 또는 게시된 서비스에서 업스트림을 구성할 수 있습니다.

서비스 템플릿을 선택하고 방금 서비스 레지스트리를 추가한 게이트웨이 그룹에 게시한 후, 업스트림으로 서비스 디스커버리를 사용하도록 선택한 다음 방금 생성한 Nacos 서비스 레지스트리를 선택하고 특정 네임스페이스, 그룹 및 인스턴스를 선택합니다.

업스트림에서 서비스 디스커버리 구성

서비스가 게시된 후, 서비스 상세 페이지의 업스트림 페이지에서 현재 구성된 서비스 레지스트리를 확인하고 언제든지 서비스 디스커버리 구성을 변경할 수 있습니다.

업스트림 페이지의 서비스 레지스트리

연결된 서비스 확인, 연결 구성 업데이트 및 삭제

서비스 레지스트리 목록에서 오른쪽의 "더보기" 메뉴를 통해 연결 구성을 편리하게 관리하고, 연결 기록을 확인하며, 서비스 사용을 추적하거나 더 이상 필요하지 않은 연결 구성을 삭제할 수 있습니다.

서비스 레지스트리 상태 확인

"연결된 서비스"는 서비스 디스커버리 구성이 변경된 서비스를 명확히 보여주므로, 구성 변경 전에 잠재적인 영향을 평가하여 운영 위험을 효과적으로 피할 수 있습니다.

연결된 서비스

서비스 레지스트리의 연결 구성을 업데이트하면 해당 레지스트리를 사용하는 모든 업스트림 서비스에 영향을 미칩니다. 이미 업스트림 서비스가 사용 중인 경우 레지스트리의 디스커버리 유형을 변경하거나 연결을 직접 삭제할 수 없습니다. 먼저 업스트림 서비스 구성을 수동으로 조정하여 다른 레지스트리나 노드를 사용하도록 한 후 삭제 작업을 수행해야 합니다.

업스트림이 사용되지 않을 때 서비스 레지스트리 연결 삭제

결론

우리는 서비스 디스커버리의 상세한 개념, 역할 및 API7 Enterprise에서의 적용을 살펴보았습니다. 서비스 디스커버리를 통해 마이크로서비스 아키텍처는 서비스를 동적으로 관리하고 호출할 수 있어 시스템의 유연성과 가용성을 크게 향상시킵니다.

마이크로서비스 아키텍처가 계속 발전함에 따라 서비스 디스커버리의 중요성은 점점 더 분명해지고 있습니다. 우리는 서비스 디스커버리가 미래에 더 많은 지능화, 자동화 및 장애 허용에 초점을 맞출 것으로 기대합니다.

API7 Enterprise는 더 많은 유형의 서비스 레지스트리와의 통합을 탐구하고 헬스 체크와 결합하여 더 강력한 고가용성을 달성함으로써 기업이 더 견고하고 효율적인 마이크로서비스 아키텍처를 구축할 수 있도록 도울 것입니다.

Tags: