InfraPlatform

오픈소스 API 플랫폼 - Apache APISIX - 아키텍처(2)

IT오이시이 2024. 8. 24. 11:41
728x90

오픈소스 API 플랫폼 - Apache APISIX - 아키텍처(2)

 


 APISIX의 핵심 개념 및 아키텍처 이해 
   1. APISIX의 아키텍처 구성 요소
   2. 라우팅(Routing)과 서비스(Service)의 흐름 이해
   3.  플러그인(Plugin)의 기능
   4. 다양한 프로토콜 연계

  

Apache APISIX는 모든 API 및 마이크로서비스를 위한 동적이고 확장 가능한 고성능 클라우드 네이티브 오픈 소스 API 게이트웨이입니다.

 

 

APISIX의 아키텍처 구성 요소

 

1. APISIX Core:

  APISIX 코어는 다양한 오픈소스를 활용하여 라우팅 매칭, 로드 밸런싱, 서비스 Discovery, Configuration 관리, API 관리 와 같은 중요한 기능을 처리합니다. 

 또한 Lua와 다국어 플러그인 (Go, Java, Python, JavaScript 등)을 지원하며 웹어셈블리모듈(WASM) 플러그인도 포함됩니다.

주요 기능으로는 API GateWay(Routing), API Configuration, API Admin 과 데이터를 처리하는  Data Plane,  구성요소를 관리하는 Control Plane 등의 실행 환경으로 구성되어 있습니다.


2.  APISIX  Plugin Runtime

Lua를 지원하는 APISIX 플러그인 런타임 환경과  런타임 웹 어셈블리모듈(WASM) 플러그인을 포함한 다국어 플러그인(Go, Java, Python, JavaScript 등)이 포함되어 있습니다.

그외에도 다양한 Core 기능을 바탕 위에 추가  내장 플러그인 기능과 인증, 보안, 모니터링 등을 제공 합니다.

 

3. API Gateway 패턴:

 API Gateway는 마이크로서비스나 백엔드 서비스의 진입점 역할을 하는 컴포넌트입니다. 유저 요청을 Upstream 서버로 라우팅하고 인증/인가 처리, 모니터링, 로깅 등을 수행합니다.

 

4. 인증/인가 처리 개선:

APISIX에서는 'forward-auth-plugin’을 제공하여 인증 시스템을 외부 서비스로 위임할 수 있습니다. 이로 인해 개발자는 비즈니스 로직에만 집중할 수 있으며, 인증 서버에서 인증 로직을 거쳐 API 키에 해당하는 회원 정보를 조회하고 Upstream 서버로 전송합니다.


5. Service Discovery 연동:

APISIX는 유레카(Service Discovery)와 연동하여 쉽게 Upstream을 등록할 수 있습니다. 이를 통해 클레임 서버 정보를 주기적으로 가져와 최신 상태를 유지하며 트래픽을 받을 수 있습니다.



6. 일관된 로깅 및 모니터링:

APISIX는 다양한 플러그인을 통해 로깅과 모니터링을 제공합니다. 프로메테우스 플러그인을 사용하여 Metric 정보를 수집하고 로키 로거 플러그인을 통해 Access Log 정보를 수집할 수 있습니다.

 

7. GitOps와 Hot-reload:

GitOps를 활용하여 깃에 저장된 설정이 운영 환경에 자동으로 Sync되도록 할 수 있습니다. APISIX는 쿠버네티스 환경에서의 운영을 지원하며 Ingress Controller를 제공합니다.

 

 


 

2. APISIX의 Core 오픈 소스 구성

 

(1) 오픈소스 API 프레임웍

APISIX는 NGINX , OpenResty, Etcd, Prometheus, Grafana 등의 오픈 소스들로 구성되어 있습니다.

- NGINX : 
   APISIX GateWay 기반이 되는 HTTP 서버, 리버스 프록시, 로드 밸런싱 등의 기능과  대량 트래픽 처리, SSL기반의 API 보안을 제공합니다.

- OpenResty :
   APISIX의 핵심 프레임워크로, NGINX를 기반으로 한 고성능 웹 플랫폼으로 OpenResty는 NGINX와 LuaJIT을 결합하여 Lua 스크립트를 NGINX 서버 내에서 실행 합니다.

 - Etcd :
    Etcd의 APISIX의 라우팅, 서비스, 플러그인 설정 등을 저장하고 관리하며, 실시간으로 각 노드 간의 설정 정보를 공유하고 서비스 등록을 관리하는 분산형 키-값 저장소 입니다.

 - Prometheus:
   APISIX의 모니터링 및 성능 데이터 수집을 담당하여,  API 요청 수, 응답 시간, 에러 비율 등 다양한 성능 지표를 수집하는 경고와 알림을 제공하는 모니터링 시스템 입니다.

 - Grafana :
   Prometheus에서 수집된 메트릭 데이터를 시각화하는 대시보드 도구 입니다.

   


3. 라우팅(Routing)과 서비스(Service) 흐름도

APISIX의 라우팅과 서비스 기능은 API 요청을 효율적으로 처리하고, 다양한 백엔드 서비스와 통합하는 방법입니다.

 

3.1 라우팅(Routing):
   -  라우팅 기능은 클라이언트의 요청을 적절한 백엔드 서비스로 전달합니다.
  -  요청 URL, 메소드, 헤더 등을 기준으로 라우팅 규칙을 설정하여 트래픽을 적절히 분배합니다.

       예를 들어 
          /api/v1/users 요청을 user-service로 전달 하거나
          /api/v1/orders 요청을 order-service로 라우팅합니다.


3.2 서비스(Service):
   -   서비스는 실제로 API 요청을 처리하는 백엔드 애플리케이션 또는 서버를 정의합니다.
   -  서비스는 여러 인스턴스 또는 서버로 구성될 수 있으며, APISIX는 이러한 서비스의 엔드포인트를 관리합니다.

   예를 들어:

      user-service는 사용자 관련 API를 처리하고, 
       order-service는 주문 관련 API를 처리합니다.

 

 


4. 다양한 유형의 플러그인 처리 요청

   - 다양한 유형의 플러그인 처리 요청에 적용되는 순서는 아래와 같이 정의가 가능합니다.

 


5. 다양한 프로토콜 연계

 

 

 

6. 다앙한 플러그인 과 관리 기능 지원

 



 

 

728x90
반응형