아파치 APISIX API 게이트웨이
Apache APISIX 는 동적 실시간 고성능 API 게이트웨이입니다.
APISIX API Gateway는 로드 밸런싱, 동적 업스트림, 카나리아 릴리스, 회로 차단, 인증, 관찰 가능성 등과 같은 풍부한 트래픽 관리 기능을 제공합니다.
APISIX API Gateway를 사용하면 전통적인 북-남 트래픽은 물론 서비스 간 동-서 트래픽도 처리할 수 있습니다. k8s 수신 컨트롤러로도 사용할 수 있습니다.
Apache APISIX의 기술 아키텍처:
지역 사회
- G2의 APISIX에 대한 리뷰를 작성해 주세요.
- 메일링 리스트: [email protected]로 메일을 보내고 메일링 리스트를 구독하려면 답장을 따르세요.
- Slack Workspace - 초대 링크(링크가 만료된 경우 이슈를 열어주세요)를 누른 다음 #apisix 채널에 가입하세요(채널 -> 채널 찾아보기 -> "apisix" 검색).
- -
#ApacheAPISIX
해시태그를 사용하여 팔로우하고 소통하세요. - 선적 서류 비치
- 토론
- 블로그
특징
APISIX API 게이트웨이를 트래픽 입구로 사용하여 동적 라우팅, 동적 업스트림, 동적 인증서, A/B 테스트, 카나리아 릴리스, 블루-그린 배포, 제한 속도, 악의적 공격에 대한 방어, 지표, 모니터링을 포함한 모든 비즈니스 데이터를 처리할 수 있습니다. 경보, 서비스 관찰 가능성, 서비스 거버넌스 등
모든 플랫폼
- 클라우드 네이티브: 플랫폼에 구애받지 않고 공급업체 종속이 없으며 APISIX API 게이트웨이는 베어메탈에서 Kubernetes까지 실행할 수 있습니다.
- ARM64 지원: 인프라 기술의 잠금에 대해 걱정하지 마십시오.
다중 프로토콜
- TCP/UDP 프록시: 동적 TCP/UDP 프록시.
- Dubbo 프록시: Dubbo 프록시에 대한 동적 HTTP입니다.
- 동적 MQTT 프록시:
client_id
로 MQTT 로드 밸런싱을 지원하며 둘 다 MQTT 3.1.*, 5.0을 지원합니다. - gRPC 프록시: gRPC 트래픽을 프록시합니다.
- gRPC 웹 프록시: gRPC 웹 트래픽을 gRPC 서비스로 프록시합니다.
- gRPC 트랜스코딩: 클라이언트가 HTTP/JSON을 사용하여 gRPC API에 액세스할 수 있도록 프로토콜 트랜스코딩을 지원합니다.
- 프록시 웹소켓
- 프록시 프로토콜
- HTTP(S) 전달 프록시
- SSL: SSL 인증서를 동적으로 로드합니다.
- QUIC를 사용한 HTTP/3
완전 동적
- 핫 업데이트 및 핫 플러그인: 다시 시작하지 않고도 구성과 플러그인을 지속적으로 업데이트합니다!
- 프록시 재작성: 업스트림으로 보내기 전에 요청의
host
, uri
, schema
, method
, headers
재작성을 지원합니다. - 응답 재작성: 사용자 정의된 응답 상태 코드, 본문 및 헤더를 클라이언트에 설정합니다.
- 동적 로드 밸런싱: 가중치를 사용한 라운드 로빈 로드 밸런싱입니다.
- 해시 기반 로드 밸런싱: 일관된 해싱 세션으로 로드 밸런싱을 수행합니다.
- 상태 확인: 업스트림 노드에서 상태 확인을 활성화하고 로드 밸런싱 중에 비정상 노드를 자동으로 필터링하여 시스템 안정성을 보장합니다.
- 회로 차단기: 비정상 업스트림 서비스를 지능적으로 추적합니다.
- 프록시 미러: 클라이언트 요청을 미러링하는 기능을 제공합니다.
- 트래픽 분할: 사용자가 다양한 업스트림 간의 트래픽 비율을 점진적으로 지정할 수 있습니다.
세분화된 라우팅
- 전체 경로 일치 및 접두사 일치 지원
- 모든 Nginx 내장 변수를 라우팅 조건으로 지원하므로
cookie
, args
등을 라우팅 조건으로 사용하여 카나리아 릴리스, A/B 테스트 등을 구현할 수 있습니다. - 라우팅 판단 조건으로 다양한 연산자 지원(예:
{"arg_age", ">", 24}
- 사용자 정의 경로 매칭 기능 지원
- IPv6: IPv6을 사용하여 경로를 일치시킵니다.
- TTL 지원
- 지원 우선순위
- 일괄 HTTP 요청 지원
- GraphQL 속성으로 경로 필터링 지원
보안
- 풍부한 인증 및 권한 부여 지원:
- 키 인증
- JWT
- 기본 인증
- 늑대-rbac
- 캐빈
- 열쇠망토
- 캐스도어
- IP 화이트리스트/블랙리스트
- 추천자 화이트리스트/블랙리스트
- IdP: Auth0, okta 등과 같은 외부 ID 플랫폼을 지원합니다.
- 한도 요구량
- 한도 카운트
- 동시성 제한
- Anti-ReDoS(정규식 서비스 거부): 구성 없이 Anti ReDoS에 대한 기본 정책이 내장되어 있습니다.
- CORS API에 대해 CORS(Cross-Origin Resource Sharing)를 활성화합니다.
- URI 차단기: URI를 통한 클라이언트 요청을 차단합니다.
- 요청 유효성 검사기
- CSRF
Double Submit Cookie
방식을 기반으로 CSRF 공격으로부터 API를 보호합니다.
OPS 친화적
- Zipkin 추적: Zipkin
- 오픈 소스 APM: Apache SkyWalking 지원
- 외부 서비스 검색과 함께 작동: 내장된 etcd 외에도 Consul, Consul_kv, Nacos, Eureka 및 Zookeeper(CP)도 지원합니다.
- 모니터링 및 지표: 프로메테우스
- 클러스터링: APISIX 노드는 상태 비저장이며 구성 센터의 클러스터링을 생성합니다. etcd 클러스터링 가이드를 참조하세요.
- 고가용성: 동일한 클러스터에서 여러 etcd 주소 구성을 지원합니다.
- 계기반
- 버전 관리: 작업 롤백을 지원합니다.
- CLI: 명령줄을 통해 APISIX를 시작중지다시 로드합니다.
- 독립 실행형: 로컬 YAML 파일에서 경로 규칙 로드를 지원하며 kubernetes(k8s)와 같이 더 친숙합니다.
- 전역 규칙: 모든 요청에 대해 모든 플러그인을 실행할 수 있습니다(예: 제한 속도, IP 필터 등).
- 고성능: 단일 코어 QPS는 0.2밀리초 미만의 평균 지연으로 18k에 도달합니다.
- 오류 주입
- REST Admin API: REST Admin API를 사용하여 기본적으로 127.0.0.1 액세스만 허용하는 Apache APISIX를 제어하면
conf/config.yaml
의 allow_admin
필드를 수정하여 Admin API 호출이 허용되는 IP 목록을 지정할 수 있습니다. . 또한 Admin API는 키 인증을 사용하여 호출자의 신원을 확인합니다. - 외부 로거: 액세스 로그를 외부 로그 관리 도구로 내보냅니다. (HTTP 로거, TCP 로거, Kafka 로거, UDP 로거, RocketMQ 로거, SkyWalking 로거, Alibaba Cloud Logging(SLS), Google Cloud Logging, Splunk HEC 로깅, 파일 로거, SolarWinds Loggly Logging, TencentCloud CLS).
- ClickHouse: ClickHouse에 로그를 푸시합니다.
- Elasticsearch: Elasticsearch에 로그를 푸시합니다.
- Datadog: UDP 프로토콜을 통해 Datadog 에이전트와 함께 번들로 제공되는 DogStatsD 서버에 사용자 정의 측정항목을 푸시합니다. DogStatsD는 기본적으로 Apache APISIX 에이전트에 대한 사용자 정의 메트릭을 수집하고 이를 단일 데이터 포인트로 집계하여 구성된 Datadog 서버로 보내는 StatsD 프로토콜의 구현입니다.
- 투구 차트
- HashiCorp Vault: 신뢰도가 낮은 환경에서 지원되는 Vault 보안 스토리지의 비밀에 액세스하기 위한 비밀 관리 솔루션을 지원합니다. 현재 RS256 키(공개-개인 키 쌍) 또는 비밀 키는 APISIX 비밀 리소스를 사용하여 jwt-auth 인증 플러그인의 저장소에서 연결할 수 있습니다.
확장성이 뛰어남
- 사용자 정의 플러그인:
rewrite
, access
, header filter
, body filter
및 log
와 같은 일반적인 단계의 후킹을 허용하고 balancer
단계의 후킹도 허용합니다. - 플러그인은 Java/Go/Python으로 작성할 수 있습니다.
- Proxy Wasm SDK를 사용하여 플러그인을 작성할 수 있습니다.
- 사용자 정의 로드 밸런싱 알고리즘:
balancer
단계 중에 사용자 정의 로드 밸런싱 알고리즘을 사용할 수 있습니다. - 사용자 정의 라우팅: 사용자가 라우팅 알고리즘을 직접 구현할 수 있도록 지원합니다.
다국어 지원
- Apache APISIX는 플러그인 개발을 위한 다중 언어 게이트웨이이며
RPC
및 Wasm
통해 지원을 제공합니다. - RPC 방식이 현재 방식입니다. 개발자는 필요에 따라 언어를 선택할 수 있으며 RPC와 독립적인 프로세스를 시작한 후 로컬 RPC 통신을 통해 APISIX와 데이터를 교환합니다. 현재까지 APISIX는 Java, Golang, Python 및 Node.js를 지원합니다.
- Wasm 또는 WebAssembly는 실험적인 방법입니다. APISIX는 Proxy Wasm SDK로 작성된 APISIX wasm 플러그인을 통해 Wasm 바이트코드를 로드하고 실행할 수 있습니다. 개발자는 SDK에 따라 코드를 작성한 다음 APISIX를 사용하여 Wasm VM에서 실행되는 Wasm 바이트코드로 컴파일하기만 하면 됩니다.
서버리스
- Lua 함수: APISIX의 각 단계에서 함수를 호출합니다.
- AWS Lambda: 특정 URI에 대한 모든 요청을 AWS API 게이트웨이 엔드포인트로 프록시하는 동적 업스트림으로 AWS Lambda 기능과 통합됩니다. API 키 및 AWS IAM 액세스 비밀을 통한 인증을 지원합니다.
- Azure Functions: 특정 URI에 대한 모든 요청을 Microsoft Azure 클라우드로 프록시하기 위한 동적 업스트림으로 Azure Serverless Function과 원활하게 통합됩니다.
- Apache OpenWhisk: 특정 URI에 대한 모든 요청을 자체 OpenWhisk 클러스터로 프록시하기 위한 동적 업스트림으로 Apache OpenWhisk와 원활하게 통합됩니다.
시작하기
설치
설치 문서를 참고하세요.
시작하기
시작 가이드는 APISIX의 기본 사항을 배울 수 있는 좋은 방법입니다. 시작하기의 단계를 따르세요.
또한 설명서에 따라 더 많은 플러그인을 사용해 볼 수 있습니다.
관리 API
Apache APISIX는 Apache APISIX 클러스터를 동적으로 제어하기 위해 REST Admin API를 제공합니다.
플러그인 개발
플러그인 개발 가이드와 샘플 플러그인 example-plugin
의 코드 구현을 참조할 수 있습니다. 플러그인 개념을 읽으면 플러그인에 대해 더 많이 배우는 데 도움이 됩니다.
더 많은 문서를 보려면 Apache APISIX 문서 사이트를 참조하세요.
기준
AWS의 8코어 서버를 사용하면 APISIX의 QPS는 단 0.2ms의 지연 시간으로 140,000에 도달합니다.
벤치마크 스크립트는 오픈 소스로 제공되므로 시도해 보고 기여해 보시기 바랍니다.
APISIX는 AWS graviton3 C7g에서도 완벽하게 작동합니다.
사용자 스토리
- 유럽 eFactory 플랫폼: API 보안 게이트웨이 – eFactory 플랫폼에서 APISIX 사용
- 코페르니쿠스 참조 시스템 소프트웨어
- 더 많은 이야기
APISIX API 게이트웨이는 누가 사용하나요?
다양한 회사와 조직에서 연구, 생산 및 상용 제품을 위해 APISIX API Gateway를 사용하고 있으며 그 중 일부는 다음과 같습니다.
- 에어월렉스
- 빌리빌리
- CVTE
- 유럽 eFactory 플랫폼
- 유럽 코페르니쿠스 참조 시스템
- 지리
- 명예
- 호라이즌 로보틱스
- 아이치이
- 레노버
- NASA JPL
- 나유키
- 오포
- 칭클라우드
- 스위스컴
- 텐센트 게임
- 트래블스카이
- 생체 내
- 시나 웨이보
- 위시티
- WPS
- XPENG
- 줌
로고
- 아파치 APISIX 로고(PNG)
- Apache APISIX 로고 소스
감사의 말
콩(Kong)과 오렌지(Orange)에서 영감을 받았습니다.
특허
아파치 2.0 라이센스