API Gateway Apache APISIX와 Kong 선택 비교
API7.ai
January 18, 2020
Apache APISIX와 Kong은 모두 오픈소스 마이크로서비스 API 게이트웨이입니다. 그렇다면 이 둘을 어떻게 비교하고 선택해야 할까요?
이 두 프로젝트는 완전한 문서와 테스트를 갖추고 있으며, 많은 프로덕션 사용자들이 사용하고 있으므로 안정성과 지속 가능한 개발에 대해 걱정할 필요가 없습니다. 이 글에서는 가장 직접적이고 검증 가능한 기능과 성능에 초점을 맞춰 다른 관점에서 비교를 진행하겠습니다.
이 두 프로젝트는 완전한 문서와 테스트를 갖추고 있으며, 많은 프로덕션 사용자들이 사용하고 있으므로 안정성과 지속 가능한 개발에 대해 걱정할 필요가 없습니다. 이 글에서는 가장 직접적이고 검증 가능한 기능과 성능에 초점을 맞춰 다른 관점에서 비교를 진행하겠습니다.
기능 | Apache APISIX | KONG |
---|---|---|
동적 업스트림 | 예 | 예 |
동적 라우터 | 예 | 예 |
헬스 체크 | 예 | 예 |
동적 SSL | 예 | 예 |
L4 및 L7 프록시 | 예 | 예 |
Opentracing | 예 | 예 |
커스텀 플러그인 | 예 | 예 |
REST API | 예 | 예 |
CLI | 예 | 예 |
더 자세한 비교는 다음과 같습니다.
기능 | Apache APISIX | Kong |
---|---|---|
소속 | Apache Software Foundation | Kong Inc. |
기술 아키텍처 | Nginx + etcd | Nginx + postgres |
커뮤니케이션 채널 | 메일 리스트, Wechat 그룹, QQ 그룹, GitHub, meetup | GitHub, freenode, 포럼 |
싱글 코어 CPU, QPS(limit-count 및 prometheus 플러그인 활성화) | 18000 | 1700 |
지연 시간 | 0.2 ms | 2 ms |
Dubbo | 예 | 아니오 |
설정 롤백 | 예 | 아니오 |
TTL이 있는 라우팅 | 예 | 아니오 |
플러그인 핫 로딩 | 예 | 아니오 |
커스텀 LB 및 라우팅 | 예 | 아니오 |
REST API <--> gRPC 트랜스코딩 | 예 | 아니오 |
Tengine | 예 | 아니오 |
MQTT | 예 | 아니오 |
설정 적용 시간 | 이벤트 기반, < 1ms | 폴링, 5초 |
대시보드 | 예 | 아니오 |
IdP | 예 | 아니오 |
설정 센터 HA | 예 | 아니오 |
지정된 시간 창에 대한 속도 제한 | 예 | 아니오 |
Nginx 변수를 라우팅 조건으로 지원 | 예 | 아니오 |
성능
limit-count 및 prometheus 플러그인을 활성화한 후, Apache APISIX의 성능은 Kong의 10배에 달합니다.
더 자세한 단계는 여기에서 확인할 수 있습니다. 관심 있는 개발자들은 그림을 따라 검증할 수 있습니다.
왜 Apache APISIX가 더 뛰어난가요?
여기서는 기능과 성능의 차이 뒤에 있는 이유를 논의합니다:
-
Apache APISIX의 라우팅 복잡도는 O(k)로, uri의 길이와만 관련이 있으며 라우트 수와는 무관합니다. 반면 Kong의 라우팅 시간 복잡도는 O(n)으로, 라우트 수에 따라 선형적으로 증가합니다.
-
Apache APISIX의 IP 매칭 시간 복잡도는 O(1)로, 많은 수의 IP 판단에도 CPU 리소스가 고갈되지 않습니다.
-
Apache APISIX의 라우트 매칭은 Nginx의 모든 변수를 조건으로 받아들이며, 커스텀 함수를 지원합니다. 다른 게이트웨이는 몇 가지 내장 조건만을 가지고 있습니다.
-
Apache APISIX는 etcd를 설정 센터로 사용합니다. 단일 장애점이 없으며, 어떤 머신이 다운되더라도 게이트웨이 클러스터는 정상적으로 운영될 수 있습니다. 관계형 데이터베이스를 기반으로 하는 다른 게이트웨이는 단일 장애점 문제를 가지고 있습니다.
-
Apache APISIX의 설정은 etcd watch를 사용하여 1밀리초 이내에 모든 게이트웨이 노드에 도달합니다. 다른 게이트웨이는 주기적으로 데이터베이스를 폴링하며, 최신 설정을 얻는 데 보통 5초가 걸립니다.
-
Apache APISIX의 플러그인은 고압력 상황에서도 밀리초 수준의 지연 시간을 유지하도록 세심하게 조정되었습니다.
-
Apache APISIX의 독특한 플러그인 배열과 로우 코드 기능은 2차 개발의 문턱을 크게 낮출 수 있습니다.