Apache APISIX
Apache APISIX는 고성능 클라우드 네이티브 API 게이트웨이로, 2019년 CNCF(Cloud Native Computing Foundation) 샌드박스 프로젝트로 시작되어 2022년 10월에는 CNCF 인큐베이팅 프로젝트로 승격되었다. 이 API 게이트웨이는 클라우드 네이티브 환경에서 API 트래픽을 관리하기 위한 동적이고 확장 가능한 솔루션을 제공한다.
핵심 특징
1. 아키텍처 기반
APISIX는 OpenResty(Nginx + Lua)를 기반으로 구축되었으며, etcd를 중앙 구성 저장소로 사용한다.
이 조합은 다음과 같은 이점을 제공한다:
- 고성능: Nginx의 비동기 이벤트 기반 아키텍처 덕분에 초당 수만 개의 요청을 처리할 수 있다.
- 동적 구성: etcd를 통해 모든 구성이 중앙 집중화되어 있어 런타임에서 API 게이트웨이 동작을 변경할 수 있다.
- 확장성: 수평적 확장이 용이하여 대규모 배포에 적합하다.
풍부한 플러그인 생태계
APISIX는 100개 이상의 플러그인을 제공하며, 이를 통해 다양한 기능을 구현할 수 있다:
- 보안: JWT 인증, Key 인증, CORS, IP 제한 등
- 트래픽 제어: 속도 제한, 서킷 브레이커, 요청 유효성 검사 등
- 관측성: Prometheus, Zipkin, SkyWalking 등과의 통합
- 변환: 요청/응답 변환, 헤더 조작, URL 재작성 등
- 서버리스: AWS Lambda, Azure Functions 등과의 통합
미크로서비스 지원
현대적인 미크로서비스 아키텍처에 최적화되어 있다:
- 서비스 발견: Nacos, Eureka, Consul, DNS 등 다양한 서비스 발견 메커니즘 지원
- 로드 밸런싱: 라운드 로빈, 일관된 해싱, 최소 연결 등 다양한 로드 밸런싱 알고리즘 제공
- 프로토콜 지원: HTTP(S), TCP, UDP, WebSockets, gRPC 등 다양한 프로토콜 지원
개발자 친화적 인터페이스
- RESTful API: 모든 구성 및 관리 작업을 위한 포괄적인 RESTful API 제공
- Admin Dashboard: 시각적 관리 인터페이스 제공
- 다양한 언어 SDK: Go, Java, Python, Node.js 등 다양한 언어를 위한 SDK 제공
실제 활용 사례
트래픽 관리
이 구성은 초당 5개 요청으로 API 접근을 제한하고, 버스트 트래픽을 위해 10개의 추가 요청을 대기열에 넣는다.
보안 구현
이 구성은 JWT 토큰으로 API를 보호하며, 클라이언트는 유효한 JWT 토큰을 제공해야 접근할 수 있다.
서비스 분산 및 라우팅
이 구성은 들어오는 트래픽을 두 개의 백엔드 서비스 간에 라운드 로빈 방식으로 분산한다.
설치 및 시작하기
Docker를 사용한 빠른 설치
|
|
기본 API 라우팅 생성
이 명령은 /api/v1/example
경로에 대한 요청을 example.com
으로 라우팅하는 기본 경로를 생성한다.
용어 정리
용어 | 설명 |
---|---|
etcd | etcd는 오픈소스 기반의 **분산 키-값 저장소(distributed key-value store)**로, 분산 시스템이나 클러스터 환경에서 중요한 설정 데이터를 저장하고 관리하는 데 사용된다. 데이터의 **일관성(consistency)**과 **고가용성(high availability)**을 보장하며, 특히 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼에서 핵심적인 역할을 한다. etcd는 Raft 알고리즘을 기반으로 동작하며, 리더 선출과 데이터 복제를 통해 안정적인 데이터 관리와 시스템 조율을 지원한다. etcd의 주요 특징 1. 일관성과 신뢰성: - Raft 알고리즘을 사용하여 여러 노드 간 데이터 일관성을 유지한다. - 장애 발생 시에도 데이터를 안전하게 복구할 수 있는 고가용성을 제공한다. 2. 키-값 저장소: - 데이터를 키-값 쌍으로 저장하며, 계층적 디렉토리 형태로 구조화된다. - 각 키는 고유하며, 값은 설정 정보나 상태 데이터를 포함할 수 있다. 3. 분산 환경에 최적화: - 다수의 노드로 구성된 클러스터에서 데이터를 공유하고 동기화한다. - 네트워크 분할 시에도 리더 선출 및 데이터 복제를 통해 안정적으로 동작한다. 4. 간단한 API: - RESTful HTTP API를 제공하여 CRUD 작업(생성, 읽기, 업데이트, 삭제)을 쉽게 수행할 수 있다. - CLI 도구인 etcdctl 을 사용하여 클러스터 관리 및 데이터 조작이 가능하다.5. 보안 기능: - TLS/SSL 인증을 지원하여 클러스터 데이터를 보호한다. - 자동 인증 및 암호화를 통해 악의적인 공격으로부터 시스템을 방어한다. |