CTO 보고서 사무실

분산 게이트웨이 액터: 진화하는 API 관리

  • 페이스북에 공유하기
  • X에 공유
  • Linkedin에 공유하기
  • 이메일로 공유하기
  • AddThis를 통해 공유
라제쉬 나라야난(Rajesh Narayanan)
검토자 및 기여자: 이안 스미스, 샘 비스비, 앤드류 스티펠, 로리 맥비티, 마이크 와일리 등.

F5 CTO 사무실 의견

F5의 CTO팀 사무실은 1년 넘게 API와 관련된 기술 분야를 탐구해 왔습니다. 이 최신 백서에서는 끊임없이 진화하는 API 생태계를 이해하기 위한 우리의 노력을 계속 이어갈 것입니다. 

API 확산 관리와 관련하여 우리가 자세히 설명한 과제는 API 게이트웨이 확산 과 관련된 과제로 이어질 것이며, 이러한 과제를 해결하기 위한 기존 접근 방식으로는 충분하지 않을 것입니다. GraphQL과 같은 그래프 기술은 API와 관련된 복잡성을 줄이는 데 큰 도움이 되지만, 연결성, 보안, 라우팅을 넘어서는 과제가 있기 때문에 이는 솔루션의 일부에 불과합니다. 30년에 가까운 시스템 및 애플리케이션 확장 전문 지식을 바탕으로 한 올바른 접근 방식은 GraphQL을 사용하지만 전적으로 GraphQL에 의존하지 않는 분산형(연합형이 아닌) 아키텍처를 기반으로 합니다. 

본 논문에서는 API 게이트웨이 확산의 과제를 해결하기 위한 분산형 아키텍처 접근 방식을 살펴본다.

추상적인

디지털 경제는 API를 통해 이루어지며, API 중심 경제가 실현됩니다. API 스프롤 백서 에 따라 저희는 API 스프롤의 영향을 없애거나 완화하는 방법을 이해하고자 노력했습니다. GraphQL은 API 확산의 영향을 줄이는 데 유망해 보였지만, 개발자가 API 코드베이스의 상당 부분을 다시 작성해야 하는 부담을 주는 경향이 있습니다. 그러나 GraphQL에 대한 새로운 관점은 효과적인 게이트웨이 액터 로 사용할 수 있는 능력에 대한 것입니다. 게이트웨이 액터는 API 요청을 시작하는 클라이언트 근처에서 생성되는 함수나 프로세스입니다. 이 게이트웨이 액터는 API 요청을 종료하는 초기 API 게이트웨이 역할을 합니다. 요청을 처리한 후 파기될 수 있을 정도로 일시적일 수도 있습니다. 

개발자와 운영팀이 API 게이트웨이보다 API 관리를 우선시하는 것 외에도, API의 확산으로 인해 API 게이트웨이가 확산되는 문제도 발견했습니다. 개발자 관점에서 가장 중요한 관심사는 API가 시기적절하고 올바르게 작동하는지 확인하는 것입니다. 반면, 운영 팀은 발견, 보안, 사용성, 액세스 제어와 같은 측면에 더 집중합니다. 오늘날 API 게이트웨이는 API 인프라의 중요한 구성 요소이므로 API의 확산으로 인해 API 게이트웨이 배포도 늘어나고, 이는 API 게이트웨이의 확산으로 이어진다는 것이 분명해졌습니다.

API 아키텍처의 미래는 배포와 운영을 단순화하는 동시에 API 확산을 수용하도록 발전해야 합니다. 제안된 아키텍처는 API 게이트웨이 설계 패턴이 존재해야 할 다음 단계의 진화입니다. GraphQL은 아키텍처의 핵심도 아니고 필수도 아니지만 게이트웨이 액터 패턴을 향상시키는 능력이 있습니다.

요약

API 관리 생태계는 API 게이트웨이 모놀리스 관리에서 벗어나 더욱 현대적인 시스템 설계 방식으로 전환되어야 합니다. 이를 통해 더욱 민첩하고 효과적인 API 관리 생태계가 구축될 것입니다.

API Gateway Sprawl – 분산된 모놀리스 관리

API 경제 내에서 이미 문제시되고 있는 API 확산은 API 게이트웨이 확산 으로 이어진다. API 게이트웨이 공급업체의 기술이 다양하고 API 게이트웨이를 관리하는 의견이 강한 팀이 많아 API를 관리하는 것이 통제 불가능해지는 상황이 발생한다. API 아키텍처는 전환점에 도달했습니다. 기존 API 게이트웨이(API-GW)는 API 호출의 진입점 역할을 하는 전용 소프트웨어 계층으로, 새로운 API 생태계의 규모와 복잡성을 관리하기에 더 이상 충분하지 않습니다. 

그림 1은 API 확산 관리에서 API 게이트웨이 확산 관리로 전환한 과정을 보여줍니다.

그림 1: API 확산에서 API 게이트웨이 확산으로

위의 디자인 패턴은 그림 2에서 볼 수 있듯이 API 게이트웨이가 분산 데이터 평면을 형성하는 중앙 집중식 제어 평면을 암시합니다. 

API 게이트웨이는 최신 소프트웨어 아키텍처의 필수적인 구성 요소로, API에 대한 중앙 제어 및 보안 지점을 제공합니다. 그러나 API 게이트웨이가 제공하는 기능 수가 늘어나면서 점점 더 복잡해지고 관리하기가 어려워졌습니다. 많은 경우, 이러한 게이트웨이는 광범위한 기능이 하나의 패키지로 묶여 있는 일체형 시스템으로 발전했습니다.

그림 2: 분산된 모놀리스 관리

여러 게이트웨이를 관리하는 것이 분산형 설계처럼 보일 수 있지만, 실제로는 진정한 분산형 설계에 미치지 못합니다. 이는 게이트웨이가 여전히 밀접하게 결합되어 있어 분리하기 어려운 리소스와 구성을 공유하기 때문입니다. 결과적으로 많은 기업이 분산된 모노리스를 관리하게 되고 이로 인해 발생하는 모든 과제를 겪게 됩니다.

레거시 API 게이트웨이 아키텍처

그림 3은 기존 API 게이트웨이의 아키텍처를 보여줍니다. 클라이언트에서 시작된 API 요청은 방화벽을 통과한 후 API 게이트웨이에 도달하기 전에 공유 네트워크나 전용 네트워크를 통해 먼저 전송됩니다. 역방향 프록시 역할을 하는 API 게이트웨이는 트래픽을 API 워크로드로 전달합니다. 

그림 3: 레거시 API 게이트웨이 아키텍처

API 게이트웨이가 기업 전체에 배포되거나 API 워크로드가 운영상 여러 지역, 영역, 여러 클라우드 또는 엣지로 이동하면서 API 확산에 대처해야 하는 경우 기존 API-GW는 API 관리의 병목 지점이 됩니다. 여러 API-GW가 단일 기업 관리 및 제어 지점 없이 여러 팀에서 구성됩니다. 개인이나 API 서비스 그룹이 다른 인프라(클라우드 또는 기타)로 이동하는 경우 운영 팀은 등록, 검색, 인증, 네트워킹, 보안, 거버넌스-위험-규정 준수(GRC) 정책 등 API 관리의 모든 측면을 마이그레이션할 수 있는 방법이 있어야 합니다. 

그림 3에 나타난 아키텍처는 확장성이 없고 장기적으로 실용적이지 못하며, 시간이 지남에 따라 분산된 모놀리스를 관리하게 됩니다(그림 2).

API 게이트웨이 병목 지점이 생성되는 데에는 두 가지 문제가 있습니다. (1) API 게이트웨이 공급업체의 확산, (2) 기업이 더 많은 장소에서 더 많은 애플리케이션을 실행함에 따라 필요에 따라 확장 가능.

  1. API 게이트웨이 공급업체의 확산 : API 게이트웨이 공급업체의 난립을 처리하는 것은 인간의 과제입니다. 모든 팀이 단일 API 게이트웨이 공급업체를 채택하도록 설득하는 것이 어려울 수 있으며, 새로운 공급업체로 마이그레이션하는 것은 번거로운 작업이 될 수 있습니다. 결과적으로 기업은 여러 게이트웨이 공급업체를 관리하는 데 시간과 리소스를 낭비하게 됩니다. 이 문제는 해결할 수 있지만 현실적으로는 전적으로 실행 가능하지 않을 수도 있습니다.
  2. 애플리케이션 확장: 애플리케이션 확장은 애플리케이션이 단일 위치에서 더 많은 사용자를 지원해야 하거나 여러 위치에 배포되어야 하는 경우 문제가 됩니다. 이를 위해서는 애플리케이션을 수평 또는 수직으로 확장해야 합니다. 그러나 애플리케이션이 확장됨에 따라 API 게이트웨이도 확장되어야 하며, 어떤 경우에는 현재 아키텍처 패턴에 따른 확장을 지원하기 위해 여러 위치에 배포해야 합니다. 이로 인해 API 게이트웨이를 관리하는 것이 운영상 복잡해질 수 있습니다.

해결책: 분산 게이트웨이 액터 패턴

그림 4는 API 게이트웨이 확산을 해결하기 위한 분산 게이트웨이 액터 패턴을 보여줍니다. 분산 패턴 자체는 새로운 것이 아니지만, 이 논문에서는 API 게이트웨이의 맥락 내에서 분산 패턴을 공식화합니다. 클라이언트가 API 요청을 시작합니다. 분산 게이트웨이 액터는 일시적이며 클라이언트와 가능한 한 가까운 위치에서 필요에 따라 인스턴스화됩니다. 게이트웨이 액터에서 간소화된 API 게이트웨이로 API 요청을 전송하는 것은 API 전송 계층의 책임이며, 이후 해당 게이트웨이는 해당 요청을 적절한 API 워크로드로 라우팅합니다. 이 패턴이 작동하려면 분산 액터에서 GraphQL 지원을 사용하는 것이 필수라기보다는 세부 사항에 가깝지만, 서비스 오케스트레이션과 같은 지원 기능을 사용할 수 있게 해줍니다. 따라서 새로운 서비스 오케스트레이션 계층을 만드는 대신 GraphQL이 해당 지원을 제공할 수 있습니다.

그림 4: GraphQL 기반 분산 게이트웨이 액터

명확히 하자면, 교통 패턴은 오른쪽에서 왼쪽으로 진행됩니다. 즉, 클라이언트는 오른쪽에 있고 API 요청은 그림 5에서 보듯이 클라이언트에 의해 시작됩니다.

그림 5: 클라이언트(오른쪽)에서 API 워크로드(왼쪽)로의 트래픽 흐름

기업 내부 및 기업 전반에서 API를 관리하기 위해 API 게이트웨이에 대한 과도한 종속성을 대체하거나 줄이기 위해 게이트웨이 액터를 사용하는 새로운 배포 패턴이 등장하고 있습니다. GraphQL은 아키텍처에 반드시 필요한 것은 아니지만 게이트웨이 액터가 GraphQL을 지원하는 데 적합한 수단이므로 도입하는 것이 시기적절합니다. 

게이트웨이 액터를 잠재적 솔루션으로 더 깊이 이해하려면 API 인프라, 특히 API 게이트웨이의 현재 상태를 자세히 살펴볼 필요가 있습니다. API 인프라를 운영하고 확장하는 데 있어 게이트웨이 확산이 상당한 과제를 안겨준다는 것을 확인했기 때문입니다.

API 관리에서 API 게이트웨이의 역할

API 게이트웨이를 더 잘 이해하려면 먼저 최신 API 관리 인프라의 다양한 구성 요소를 살펴보는 것이 중요합니다.

API 관리 인프라 및 기능

그림 6은 API 관리에 필수적인 다양한 기능과 구성 요소를 포괄적으로 시각적으로 표현한 것입니다. 백엔드 서비스로의 트래픽을 라우팅하고 관리하는 데 필요한 API 게이트웨이 외에도 몇 가지 다른 중요한 인프라 구성 요소가 있습니다. 여기에는 인증, 속도 제한, 캐싱, 서비스 메시 등에 대한 솔루션이 포함될 수 있습니다. 이러한 기능을 통합하면 조직은 API를 제어하고, 보안을 강화하고, 성능을 최적화할 수 있습니다.

그림 6: API 관리 및 인프라 기능
API 게이트웨이 공통 기능

API 게이트웨이의 널리 알려지고 친숙한 기능을 살펴보겠습니다.

  1. 라우팅 : 요청의 경로나 내용에 따라 적절한 백엔드 서비스로 요청을 라우팅합니다.
  2. 인증 및 권한 부여 : 단일 진입 지점으로 요청을 인증하고 권한을 부여함으로써 권한이 부여된 클라이언트만 백엔드 서비스에 액세스할 수 있도록 보장합니다.
  3. 속도 제한 : 클라이언트가 기본 API에 요청할 수 있는 속도를 제한하여 과도한 사용을 방지하고 백엔드 서비스를 과부하로부터 보호합니다.
  4. 캐싱 : 기본 API의 응답을 캐시하여 백엔드 서비스에 필요한 요청 수를 줄이고 성능을 향상시킵니다.
  5. 프로토콜 번역 : HTTP와 WebSockets 등의 서로 다른 프로토콜 간을 변환하여 클라이언트가 다양한 프로토콜을 사용하여 기본 API에 액세스할 수 있도록 합니다.
  6. 부하 분산 : 여러 백엔드 서비스에 요청을 분산시켜 확장성과 안정성을 향상시킵니다.
  7. 보안: 데이터가 안전하게 전송되도록 암호화, 복호화 등의 보안 작업을 처리합니다.
  8. 분석 및 모니터링: 사용 지표와 오류 정보를 추적하고 보고하여 시스템 사용 방식에 대한 가시성을 제공하고 성능 병목 현상과 오류를 식별하는 데 도움이 됩니다.
  9. 버전 관리 : 기본 API의 버전 관리를 처리하여 클라이언트가 필요에 따라 다양한 버전의 API에 액세스할 수 있도록 합니다.
  10. 서비스 발견 : 사용 가능한 백엔드 서비스를 발견하고 이에 대한 요청을 동적으로 라우팅하여 보다 동적이고 유연한 서비스 검색이 가능합니다.
문맥: API 게이트웨이에 주목

API 관리 인프라 기능을 분석한 후 API 게이트웨이의 역할을 더 잘 이해하고 현재의 모놀리식 API 게이트웨이 설계에 대한 대안을 모색할 필요성을 확인했습니다. 

API 수의 증가로 인해 이미 API와 API 게이트웨이가 확산되고 있으며, 점점 더 많은 클라이언트가 모바일화되거나 고도로 분산되고 있으며, 컴퓨팅 인프라는 에지를 포함한 모든 곳에서 사용 가능해졌습니다. 따라서 API 생태계의 민첩성, 유연성, 확장성, 성능 및 보안을 개선할 수 있는 접근 방식이 필요합니다. 

이 새로운 접근 방식에는 진정한 분산 아키텍처의 이점을 최대한 활용할 수 있는 간소화된 설계가 필요합니다. 

API 게이트웨이

API 게이트웨이의 기능과 범위를 추가로 분석하여 미묘한 차이와 한계를 파악해 보겠습니다. 

API 게이트웨이는 오늘날 API 관리 인프라의 중요한 구성 요소입니다. API 게이트웨이의 핵심은 역방향 프록시입니다. 즉, 들어오는 요청에 대해 다양한 작업을 수행하면서 클라이언트와 백엔드 서비스 사이의 중개자 역할을 합니다. 예를 들어, 게이트웨이는 요청을 적절한 백엔드 서비스로 전달하기 전에 인증, 속도 제한, 경로 요청, 보안 정책 적용, 모니터링 및 버전 관리를 적용할 수 있습니다. 백엔드 서비스가 요청을 처리하고 응답을 반환하면 API 게이트웨이는 응답을 클라이언트로 다시 전달하기 전에 캐싱, 프로토콜 변환, 응답 처리와 같은 작업을 수행할 수 있습니다.

API 수가 늘어나면서 API 게이트웨이는 기본 라우팅을 넘어 다양한 새로운 기능을 포함하도록 발전하여 사실상 모놀리식 시스템이 되었습니다. 이러한 게이트웨이는 이제 인증 및 속도 제한과 같은 작업을 관리하여 성능을 개선하고 백엔드 서비스의 부담을 줄입니다. 그러나 이렇게 기능이 향상되더라도 API 게이트웨이는 백엔드 서비스에 대한 단일 액세스 지점으로 남아 있으며, 이는 고도로 분산된 환경에서는 문제가 될 수 있습니다.

특히 클라우드, 하이브리드 멀티 클라우드, 엣지 인프라의 등장으로 인해 API 게이트웨이 방식으로 민첩성, 보안 및 관리 용이성을 유지하기가 더욱 어려워졌습니다. 클라이언트, 장치 및 애플리케이션 워크로드가 잠재적으로 광범위한 위치에 분산되어 있으므로 API 게이트웨이는 필요한 수준의 에지 친화적 아키텍처를 제공하기에 적합하지 않을 수 있습니다.

API 게이트웨이 과제

API 게이트웨이는 광범위한 작업을 처리하고 여러 시스템과 통합해야 하므로 일반적으로 배포 및 관리가 어렵습니다. API 게이트웨이를 관리하는 것은 복잡할 수 있지만, 그럼에도 불구하고 API의 가용성, 보안 및 확장성을 보장하는 데 중요한 작업입니다. 기업은 API 관리 플랫폼과 같은 특수 도구를 사용하여 API 게이트웨이를 보다 효과적으로 관리하고 모니터링하는 경향이 있습니다.

아래 목록은 포괄적이지 않지만 API 게이트웨이 복잡성에 기여하는 요소 중 일부는 다음과 같습니다.

  1. 구성 관리 : API 게이트웨이에는 라우팅 규칙, 속도 제한, 보안 설정 등 관리 및 유지 관리해야 하는 다양한 구성 옵션과 설정이 있는 경우가 많습니다. 이러한 설정을 관리하는 일은 복잡하고 시간이 많이 걸릴 수 있습니다. 특히 기본 API와 클라이언트 수가 늘어날수록 더욱 그렇습니다.
  2. 다른 시스템과의 통합 : 게이트웨이는 인증 및 권한 부여 시스템, 로드 밸런서, 데이터베이스 등 다양한 다른 시스템과 통합되어야 합니다. 특히 기본 시스템이 잘 통합되지 않았거나 API 게이트웨이에서 여러 프로토콜이나 데이터 형식을 처리해야 하는 경우 이는 복잡할 수 있습니다. 기업이 여러 공급업체로부터 여러 API 게이트웨이를 배포하는 경우 문제는 더 심각해집니다.
  3. 확장성 및 가용성 : API 게이트웨이는 대량의 요청을 처리하고 높은 가용성을 보장할 수 있어야 하는데, 특히 많은 수의 백엔드 서비스와 클라이언트를 처리하는 경우 이를 관리하는 것이 복잡할 수 있습니다.
  4. 보안 : 보안 API 게이트웨이는 중요한 API 보안 구성 요소이므로, 민감한 데이터를 보호하고 액세스를 제어하도록 구성하고 관리해야 합니다. 이는 복잡할 수 있으며 지속적인 모니터링과 관리가 필요합니다.
  5. 버전 관리 : 기본 API와 클라이언트 수가 늘어남에 따라, 다양한 버전의 API를 관리하고 클라이언트가 올바른 버전에 액세스하는지 확인하는 것이 점점 더 어려워질 수 있습니다.
  6. 모니터링 및 문제 해결 : API 게이트웨이는 대량의 데이터를 수집하고 생성할 수 있습니다. 대규모 기업에서는 게이트웨이가 여러 위치에 분산되어 있어 애플리케이션의 전반적인 상태에 영향을 미치는 이벤트를 연관시키고 문제를 해결하기가 어렵습니다.

API 게이트웨이 확산

API 게이트웨이 확산은 조직 내에서 여러 개의 독립적인 API 게이트웨이가 급증하는 것을 의미합니다. 여러 팀이나 사업부에서 자체 API를 만드는 경우가 많으며, 이로 인해 다양한 API를 처리하기 위해 여러 개의 독립적인 API 게이트웨이가 생성될 수 있습니다. 다양한 팀은 다양한 유형의 API를 처리하기 위해 다양한 공급업체나 솔루션의 API 게이트웨이를 사용할 수도 있습니다.

이로 인해 다양한 기능을 갖춘 여러 API 게이트웨이가 배포됩니다.

API 게이트웨이의 확산은 여러 가지 추가적인 과제를 발생시킵니다.

  1. API 게이트웨이 관리 확장 : 여러 개의 독립적인 API 게이트웨이를 사용하면 게이트웨이를 관리하고 유지하는 것이 어려워질 수 있습니다. 특히 기본 API와 클라이언트 수가 늘어남에 따라 더욱 그렇습니다.
  2. 동서 교통의 비효율성 : 게이트웨이가 여러 개이면 요청이 해당 여러 게이트웨이를 통과해야 하므로 지연 시간이 늘어나고 성능이 저하될 수 있습니다.
  3. 보안 정책의 균일성 : 여러 게이트웨이를 관리하는 것은 어려울 수 있으며, 일관되지 않은 보안 정책으로 이어질 수 있으며, 이는 중요한 데이터를 보호하고 액세스를 제어하기 어렵게 만듭니다.
  4. 표준화된 거버넌스 : 게이트웨이가 여러 개이면 모든 API가 적절하게 관리되고 표준 및 모범 사례를 준수하는지 확인하기 어려울 수 있습니다.
  5. 증가된 비용 : 게이트웨이가 여러 개 있으면 인프라, 개발 리소스, 유지 관리 비용이 더 많이 들 수 있습니다.
  6. 증폭된 통합 과제 : 게이트웨이가 여러 개 있으면 다른 데이터베이스, 데이터웨어하우스, 데이터 분석 도구 등 다른 시스템 및 기술과 통합하기가 어렵습니다.

기업은 API 관리 및 거버넌스를 중앙화하고 단일 유형의 API 게이트웨이를 사용하기 위해 노력해야 합니다. 이를 통해 위에서 언급한 API 게이트웨이 확산의 과제를 완화할 수 있지만 API 게이트웨이에 대한 동질화된 전략은 결코 간단하지 않습니다.

기업에서 API 게이트웨이 표준화의 과제

기업이 유기적으로 성장하거나 인수를 통해 성장함에 따라 특정 사업부(BU)에 속한 내부 팀 간에는 API 게이트웨이 기술이나 공급업체를 선택할 때 의견 충돌이 발생합니다. 그 이유는 다음과 같습니다.

  • 기술 : 여러 팀이나 사업부에서 기술 스택이 서로 다르거나 선호하는 API 게이트웨이 솔루션이 다르기 때문에 단일 유형의 게이트웨이를 표준화하기가 어렵습니다.
  • 레거시 시스템 : 일부 팀은 다른 유형의 API 게이트웨이를 사용하여 구축된 기존 시스템을 보유하고 있으며, 특히 이러한 시스템을 아직 사용 중이라면 새로운 게이트웨이로 교체하기 어려울 것입니다.
  • 사용자 정의 : 일부 팀은 특정 요구 사항을 충족하기 위해 기존 API 게이트웨이를 사용자 지정하고, 이러한 사용자 지정을 새로운 게이트웨이에 복제하는 데 어려움을 겪을 수 있습니다.
  • 교체 비용 : 기존 API 게이트웨이를 새롭고 표준화된 게이트웨이로 교체하는 경우 개발과 유지 관리 측면에서 비용이 많이 들 수 있습니다.
  • 개발자 교육 : 각 팀의 전문성 수준이 다르고, 다른 공급업체의 새로운 게이트웨이 기술에 익숙해져야 하거나 해당 기술에 대한 교육을 받아야 할 수도 있습니다. 이는 시간과 비용이 많이 소요되는 프로세스입니다.
  • 제한된 자원 : 조직에서는 개발자, 예산, 시간 측면에서 변경을 위한 리소스가 제한적이어서 새로운 게이트웨이를 구현하는 데 어려움을 겪습니다.
  • 응용 프로그램 종속성 : 다양한 팀이나 사업부는 기존 게이트웨이에 대한 종속성이 다릅니다. 특정 시스템과 통합되거나 기타 맞춤형 통합이 필요한 경우가 많아 새로운 게이트웨이로 전환하기 어렵습니다.
  • 타사 솔루션 : 게이트웨이와 통합되는 타사 솔루션을 사용하는 팀은 이러한 타사 솔루션을 지원하지 않는 새 솔루션으로 마이그레이션하는 데 어려움을 겪을 것입니다.

따라서 기존 애플리케이션에 잘 정립되고 의견이 확고한 팀이 있는 경우, 해당 팀은 서비스에 중단을 일으키지 않기 위해 다른 배포 패턴으로 전환하고 싶어하지 않을 것입니다.

따라서 기존 API 인프라의 여러 한계를 고려하면서 API 게이트웨이의 확산을 더 중요한 고려 사항 중 하나로 강조하는 새로운 접근 방식이 필요하다는 결론을 내릴 수 있습니다.

디자인 고려 사항

다음은 전체 목록은 아니지만 솔루션을 구축할 때 통합되어야 한다고 생각되는 몇 가지 고급 설계 고려 사항을 요약한 것입니다.

  1. 현재 배포와 공존 : 조직이 끊임없이 변화하는 기술 환경에 적응하기 위해 노력함에 따라 기업에서 다양한 API 게이트웨이를 배포하는 것이 일반적입니다. 기존 API 인프라를 포크리프트 방식으로 변경하는 것은 중요한 비즈니스 운영을 방해할 수 있으므로 실행 불가능합니다. 따라서 모든 새로운 배포는 현재 배포된 아키텍처와 공존할 수 있는 방식으로 설계되어야 합니다.
  2. API 게이트웨이 기능 표준화 : 기업의 API 전략의 주요 목표는 API 게이트웨이 기능을 표준화하는 것입니다. 이는 다양한 API와 여러 사업부의 요구 사항으로 인해 까다로운 작업이 될 수 있습니다. 그럼에도 불구하고, 이러한 표준화는 조직의 디지털 혁신을 지원할 수 있는 안정적이고 안전한 인프라를 구축하는 데 필수적입니다.
  3. 에지 배포 활용 : 엣지 인프라는 API 수를 기하급수적으로 늘릴 수 있는 잠재력을 가지고 있을 뿐만 아니라, 기업이 게이트웨이 행위자를 엣지에 더 가깝게 이동할 수 있는 기회도 제공합니다. 이는 API를 만드는 데 사용되는 동일한 인프라를 활용하여 분산 게이트웨이 액터를 만드는 데도 사용할 수 있으므로 가능합니다. 따라서 솔루션은 API 요청을 시작하는 클라이언트에 대한 에지 인프라의 근접성을 최대한 활용해야 합니다.
  4. 운송 수단에 무관함 : 분산 게이트웨이 액터 아키텍처를 구현할 때 고려해야 할 중요한 사항은 어떤 특정 전송 메커니즘에도 의존해서는 안 된다는 것입니다. 기업이 기존 IP 네트워크, 오버레이 네트워크, VPN 또는 저지연 메시징 인프라를 활용하려는 경우 해당 솔루션은 전송 메커니즘에 구애받지 않아야 합니다. 이를 통해 기업은 더 큰 유연성을 확보하고 자사의 특정 필요와 요구 사항에 가장 적합한 운송 수단을 선택할 수 있습니다.
  5. GraphQL 지원 : GraphQL은 기존 REST API에 비해 많은 장점이 있어 API 개발에 점점 더 인기를 얻고 있는 선택이 되고 있습니다. 주요 장점 중 하나는 데이터에 대한 세분화된 액세스를 제공하여 클라이언트가 단 한 번의 요청으로 필요한 데이터를 정확히 지정할 수 있다는 것입니다. 또한 GraphQL은 여러 서비스에서 데이터를 집계하는 과정을 단순화하여 서비스 구성 및 오케스트레이션을 수행하는 데 적합한 아키텍처를 제공합니다. 이를 통해 네트워크 오버헤드를 줄이고 성능을 향상시킬 수 있으며, 특히 여러 API 서비스를 사용하여 단일 요청을 충족하는 분산 시스템에서 이러한 효과가 큽니다. 마지막으로 GraphQL은 강력한 형식의 스키마와 쿼리 언어를 통해 API 검색성을 개선하고 더 쉬운 클라이언트 개발을 가능하게 합니다.
  6. 보안은 기본입니다 . 가장 중요한 설계 목표는 기업의 API 보안 태세에 추가되어야 한다는 것입니다. 해당 솔루션은 API 요청 인증 및 권한 부여, 액세스 제어 구현, 크로스 사이트 스크립팅(XSS) 및 SQL 주입 공격과 같은 일반적인 보안 위협으로부터 보호하는 기능 등 일부 기능을 포함할 수 있습니다. 어떠한 상황에서도 새로운 솔루션이 기존 위협 모델을 손상시키거나 공격 표면이 바뀔 정도로 크게 변경해서는 안 됩니다. 보안을 설계 목표로 우선시함으로써 아키텍처는 API 통신을 위한 보다 안전한 환경을 제공해야 하며, 이를 통해 데이터 침해 및 기타 보안 사고의 위험을 줄여야 합니다.

이러한 설계 고려 사항을 기반으로 특정 요구 사항을 도출할 수 있으며, 이를 분산 게이트웨이 액터(DGA) 솔루션에 통합했습니다. 

분산 게이트웨이 액터

이제 API 게이트웨이를 완전히 살펴보았으므로 분산 게이트웨이 액터 솔루션을 설명할 수 있습니다.

분산 게이트웨이 액터 디자인

분산 게이트웨이 액터(DGA) 디자인 패턴은 엣지 컴퓨팅과 클라이언트 가까이에서 사용 가능한 컴퓨팅에서 영감을 얻었습니다. 이 아이디어의 핵심은 각 게이트웨이 액터를 클라이언트와 최대한 가깝게 하이퍼 분산하고 게이트웨이 액터가 트랜잭션이 끝날 때까지만 존재하고 마지막에 트랜잭션이 청산되는 것입니다. 

가정

이 솔루션의 기본 가정은 다음과 같습니다.

에지 컴퓨팅이 보다 보편화되면서, 이제 클라이언트에 지리적으로 더 가까운 곳에서 사용할 수 있는 일종의 컴퓨팅을 찾을 수 있게 되었습니다. 게이트웨이 액터는 이러한 에지 컴퓨트 노드에서 인스턴스화될 수 있습니다. DGA를 매우 가볍고 일시적이게 구현하여 모든 에지 컴퓨팅에서 인스턴스화할 수 있도록 하는 것이 의도입니다.

API 전송은 게이트웨이 행위자와 API 게이트웨이 사이에 네트워크를 구축하는 것을 포함하므로 인프라의 중요한 구성 요소입니다. 필요한 인프라 유형은 공급업체나 기업에 따라 달라질 수 있습니다. 예를 들어, 대규모 퍼블릭 클라우드는 자체 백본을 사용하여 API 전송을 실행할 수 있습니다. 또 다른 구현은 기업 데이터 센터 내의 기존 고대역폭, 저지연 네트워크 위에 계층화된 저지연 메시징 버스일 수 있습니다.

API 게이트웨이 기능

다시 말해, API 게이트웨이는 본질적으로 HTTP 트래픽을 적절한 API 워크로드로 라우팅하는 것이 주요 기능인 역방향 프록시입니다. 이러한 접근 방식은 모든 API가 로컬 온프레미스 네트워크나 가용성 영역 내의 가상 사설 클라우드(VPC)와 같이 공동으로 배치된 경우에 적합합니다. 하지만 API 수가 늘어나거나, 하이브리드 인프라로 이동하거나, 모바일화되면 이러한 API 게이트웨이 설계 방식은 비효율적이고 운영이 복잡하며 비용이 많이 듭니다. 

그림 6에 설명된 모든 기능을 분류하는 방법에 대해서는 다양한 견해가 있을 수 있지만, API 관리 인프라는 신중하게 조율해야 하는 많은 구성 요소의 복잡한 배포가 되었다는 점에는 동의할 수 있습니다. 

그림 7: GraphQ 기반 분산 게이트웨이 액터

그림 7은 그림 6의 API 관리의 다양한 특징과 기능을 분산 게이트웨이 액터 아키텍처에 매핑합니다. 이 매핑은 각 기능과 기능이 DGA 접근 방식에 어떻게 맞춰져 있는지 시각적으로 보여주며 아키텍처 내에서 API 관리 구성 요소의 원활한 통합을 강조합니다. 

중앙 집중화된 기능

위에 나열된 대부분의 기능에는 논리적으로 중앙 집중화할 수 있는 관리 구성 요소가 있습니다. 우리의 목표는 관리 평면을 재구성하는 것이 아니라, 가능하다면 특정 기능을 제거하는 것입니다.

핵심 API 게이트웨이 기능

이는 데이터 플레인 기능이므로 API에서 구현하고 애플리케이션 워크로드와 함께 배치하는 것이 가장 좋습니다. API 게이트웨이는 모든 외부 트래픽의 진입점 역할을 하는 최신 마이크로서비스 아키텍처의 핵심 구성 요소입니다. 핵심 기능을 라우팅, 부하 분산, 동적 라우팅, 상태 검사, 재시도 및 폴백으로 분류했습니다. 

API 게이트웨이는 들어오는 요청을 적절한 마이크로서비스로 전달하고, 트래픽을 여러 인스턴스에 분산하고, 동적 라우팅을 지원하고, 마이크로서비스와 해당 인스턴스의 상태를 모니터링하고, 실패한 요청을 재시도하고, 마이크로서비스를 사용할 수 없거나 실패한 경우 대체 응답을 제공합니다. 인증, 권한 부여, 속도 제한, 캐싱, 로깅과 같은 기타 기능은 시스템의 특정 요구 사항에 따라 에지 또는 중앙 기능에 분산될 수 있습니다. 

이러한 모듈식 접근 방식은 보다 유연하고 최적화된 아키텍처를 제공하며 기업 API 인프라를 단순화, 현대화, 확장하기 위한 당사의 권장 사항의 핵심입니다.

혼동

API 게이트웨이와 API 관리를 공급업체는 종종 실수로 API 게이트웨이 기능의 일부로 혼동하지만, 실제로는 별도로 처리해야 하는 두 가지 별개의 기능입니다. API 게이트웨이는 클라이언트에서 백엔드 서비스로 요청을 라우팅하는 역할을 하는 반면, API 관리에는 액세스 제어, 속도 제한, 분석, 개발자 포털 관리와 같은 더 광범위한 기능이 포함됩니다. 

일부 공급업체는 API 게이트웨이와 API 관리 기능을 단일 제품의 일부로 제공할 수도 있지만, 이러한 기능 간의 차이점을 이해하고 특정 요구 사항에 따라 별도로 평가하는 것이 중요합니다. 이러한 기능을 결합하면 혼란이 생길 수 있으며 잠재적으로 조직의 API 인프라의 유연성과 확장성이 제한될 수 있습니다. 이는 API 게이트웨이 기능 배포에 대한 당사의 입장을 이해하는 데에도 중요합니다.

Gateway Actor – 인라인 기능

여기에 나열된 기능은 데이터 경로에 반드시 포함되어야 하는 핵심 기능입니다. 분산 게이트웨이 패턴에서는 API 게이트웨이의 일부 인라인 함수도 분산됩니다. 이러한 기능에는 액세스 제어, 속도 제한, 요청 검증, API 분석, 사용 보고, 오류율 모니터링, 알림 및 이벤트, 인증 통합, 타사 통합, 모니터링 및 로깅 통합, 에지 캐싱, 압축이 포함됩니다.

이러한 기능을 분산 게이트웨이 패턴으로 옮기면 다음과 같은 이점이 있습니다.

  • API 게이트웨이의 부하 감소 : 중앙 집중식 API 게이트웨이의 부하를 줄이고 시스템의 성능과 확장성을 개선하는 데 도움이 됩니다.
  • 더 빠른 응답 시간을 활성화하세요 : 이러한 기능을 클라이언트에 더 가깝게 배치하여 응답 시간을 더 빠르게 하고 지연 시간을 줄입니다. 데이터 캐싱과 기능을 활용함으로써, 엣지 호스팅 API 게이트웨이는 들어오는 요청에 신속하게 응답할 수 있습니다.

예를 들어, 액세스 제어, 속도 제한 및 요청 검증은 클라이언트에 더 가깝게 배치된 에지 게이트웨이 액터가 처리할 수 있습니다. 이를 통해 중앙 API 게이트웨이에서 처리해야 하는 요청 수를 줄여 성능과 확장성을 향상시키는 데 도움이 될 수 있습니다. 마찬가지로 API 분석, 사용 보고, 오류율 모니터링, 알림 및 이벤트, 모니터링 및 로깅 통합은 여러 마이크로 서비스에서 데이터를 수집하고 집계할 수 있는 에지 게이트웨이에서 처리할 수 있습니다.

게이트웨이 액터 – GraphQL 후보

오늘날 API 게이트웨이가 지원하는 중요한 기능 중 하나는 서비스 구성 및 오케스트레이션입니다. 상당히 복잡해질 수 있지만, 이 기능이 단순화된 API 게이트웨이에서 지원되지 않는다면 문제가 될 수 있습니다. 우리는 GraphQL이 기존 API에 대한 일종의 미들웨어 역할을 하면서 서비스 구성에 흥미로운 접근 방식이 될 수 있다고 믿습니다.

모든 API를 볼 수 있기 때문에 API 게이트웨이는 서비스 구성을 수행하는 논리적인 장소가 되며, 개발자는 게이트웨이 뒤에 있는 API를 결합하여 새로운 서비스를 작성하지 않고도 비즈니스 로직을 향상시킬 수 있으며, 서비스 구성 계층에서 새 서비스를 쉽게 결합할 수 있습니다.

GraphQL의 서비스 구성은 클라이언트에게 제공되는 데이터의 형태를 정의하는 강력한 형식의 스키마를 사용하여 가능해졌습니다. 클라이언트는 이 스키마를 사용하여 어떤 서비스나 소스에서 데이터를 제공하는지와 관계없이 필요한 정확한 데이터를 지정하는 쿼리를 구성할 수 있습니다. 쿼리를 데이터 소스에 매핑하는 기능인 리졸버는 적절한 서비스나 소스에서 데이터를 검색하는 데 사용됩니다. 하지만 GraphQL이 더 나은 보안을 약속하더라도 그 보안의 정도는 코드를 작성하는 개발자의 수준에 달려 있습니다.

기타 특징 및 기능

그림 6에서 강조되지 않은 몇 가지 남은 기능이 있습니다. API 관리 및 인프라 기능 . 남은 기능과 기능은 개별 관리 및 운영 또는 데이터 평면 기능으로 옮길 수 있는 후보입니다.  

우리는 특정 구현이나 공급업체 기술을 암시하는 것을 피하기 위해 의도적으로 "액터"라는 용어를 사용하기로 했습니다. 게이트웨이 액터의 구현은 VM, 컨테이너, 서버리스 또는 공급업체에 특화된 기타 접근 방식을 기반으로 하는 인프라를 사용하여 구현된 메서드, 함수, 작업자, 스레드 및 프로세스를 기반으로 할 수 있습니다.

컴포넌트의 기능 및 동작

분산 게이트웨이 액터(DGA) 아키텍처를 사용하는 접근 방식은 API 게이트웨이 기능을 단순화하고 다른 인라인 기능을 에지나 제어 평면으로 옮깁니다.

제어 평면

API 게이트웨이 기능 외에도 DGA 아키텍처는 모놀리식 API 게이트웨이 내에서 구현하는 것보다 논리적으로 중앙 집중화된 구성 요소로 제어 평면에서 더 잘 처리될 수 있는 기능을 식별하는 것을 권장합니다. 이미 존재하는 API 인프라의 관리 및 제어를 확장하여 이 추가 기능을 포함할 수 있습니다.  

단순화된 API 게이트웨이

따라서 API 게이트웨이를 단순화하는 것은 모든 API 게이트웨이 공급업체가 공통적인 구성 매개변수 세트를 통해 관리할 수 있는 표준 핵심 기능 세트를 도출하는 과정이 됩니다. 

이러한 변환을 원하는 기업은 기존 배포를 방해하지 않고 대대적인 작업이 필요 없이 한 번에 하나의 애플리케이션씩 DGA 아키텍처를 출시할 수 있습니다.

분산 게이트웨이 액터

DGA의 중요한 측면은 각 게이트웨이 액터가 단명하여 API 세션 동안만 인스턴스화된다는 것입니다(즉, 하나의 클라이언트가 하나의 API 호출을 하는 경우). 

분산 게이트웨이 액터는 기존 API 게이트웨이보다 더 유연하고 확장 가능하며 비용 효율적일 수 있습니다. 다양한 공급업체의 여러 개의 일체형 API 게이트웨이에 의존하여 API 트래픽을 집계하고 처리하는 대신, 게이트웨이 액터는 개발자가 각 API에 대한 개별 게이트웨이 인스턴스를 네트워크 가장자리에 더 가깝게 지정하고 배포할 수 있도록 허용합니다. API 자체는 특정 요구 사항에 맞게 더 큰 제어 및 사용자 정의 기능을 제공할 수 있습니다.

이 새로운 접근 방식은 개발자가 대규모 중앙 게이트웨이를 관리하는 데 따르는 오버헤드를 걱정하지 않고도 증가한 트래픽을 처리하기 위해 필요에 따라 게이트웨이 액터 인스턴스를 쉽게 시작할 수 있으므로 확장성도 더 높아집니다.

기술적 이점 외에도 게이트웨이 액터는 기존 API 게이트웨이에 비해 비용 절감 효과를 제공합니다. 즉, 기업은 사용하는 임시 게이트웨이 액터 인스턴스에 대한 비용만 지불하면 됩니다. 이 배포 모델은 추가 수익 모델에 대한 기회를 열어줄 수 있습니다. 

게이트웨이 액터 배치

API 전송 계층을 활용함으로써 DGA는 기본적으로 API 수신 위치를 API 게이트웨이에서 분리합니다. DGA를 가장자리, 즉 API 호출을 하는 클라이언트에 더 가깝게 옮길 수 있습니다. API는 DGA에서 종료된 후 어떤 수단으로든 전송될 수 있습니다. 이는 그림 3과 다릅니다. 레거시 API 게이트웨이 아키텍처 클라이언트 트래픽이 API 게이트웨이와 토폴로지적으로 인접한 곳으로 유입됩니다. 

결론

따라서 우리의 의도는 서로 다른 공급업체가 유사한 목적을 달성하기 위해 이러한 구성 요소를 구축하는 데 필요한 자체 지적 재산을 보유하고 있을 수 있으므로 공급업체와 배포에 독립적인 접근 방식을 제안하는 것이었습니다.

이 논문에서는 API 확산 , Edge 2.0 아키텍처, API 경제 , GraphQL에 대한 조사 등 다양한 분야에서 얻은 교훈을 요약했습니다. 기존 API 인프라와 관련해 아직 확실한 답은 나오지 않았지만, 우리는 새로운 접근 방식이 필요하다고 생각합니다.

전 세계의 모든 개별 기기나 개체에서 가치를 끌어낼 수 있다는 약속만으로도 새로운 접근 방식을 모색할 충분한 이유가 됩니다. 우리는 이제 기존 API 인프라에서 벗어나야 합니다. 겉보기에 분산된 것처럼 보이지만 실제로는 단일체이기 때문입니다.

우리는 새로운 API 경제의 잠재력을 최대한 활용할 수 있는 공급업체에 독립적인 방식으로 분산형 GraphQL 기반 게이트웨이 액터 접근 방식을 제안합니다.

보고서 다운로드