오픈소스 API 플랫폼 - Apache APISIX - 아키텍처(2)
오픈소스 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. 다앙한 플러그인 과 관리 기능 지원