Apache APISIX vs NGINX
February 2, 2024
2022년 6월 기준 W3Techs 통계에 따르면, NGINX는 전 세계적으로 가장 널리 사용되는 웹 서버로, 33.6%의 상당한 시장 점유율을 차지하고 있습니다. 그 광범위한 채택과 칭찬할 만한 성능은 사용자들 사이에서 높은 신뢰를 구축했으며, 이로 인해 자주 비교 대상이 되고 있습니다.
성능 테스트 결과
실제 테스트에서, 우리는 APISIX와 NGINX의 성능을 간단한 시나리오에서 비교했으며, 다음과 같은 결과를 얻었습니다:
-
APISIX는 단일 CPU 코어에서 58,080의 QPS 성능을 보여주며, 동일한 하드웨어에서 NGINX의 37,154 성능을 능가합니다.
-
APISIX의 성능은 NGINX보다 56% 더 뛰어납니다.
테스트 구성 및 스트레스 테스트 결과
APISIX | NGINX | |
---|---|---|
단일 코어 QPS | 58080 | 37151 |
스트레스 테스트 | ![]() | ![]() |
주요 구성 | routes: - uri: /hello upstream: nodes: "127.0.0.1:1980": 1 #END | http { access_log off; server { listen 1990; location / { proxy_pass http://127.0.0.1:1980; } } } |
하드웨어 | CPU 1 CORE, 4GB RAM | CPU 1 CORE, 4GB RAM |
CPU 사용률 | 100% | 100% |
테스트 환경:
-
호스트: M1 Macbook Pro
-
운영 체제: Debian
이에 관심이 있다면, 직접 테스트를 재현해 보는 것도 가치가 있습니다. 결과는 비교적 쉽게 재현할 수 있습니다.
기술적 통찰
APISIX가 공식적으로 발표한 소프트웨어 아키텍처 다이어그램에 따르면, APISIX의 성능이 NGINX보다 낮을 것으로 예상됩니다. 그러나 "비정상적인 발생은 종종 근본적인 문제를 나타냅니다." NGINX 스트레스 테스트 중 발생할 수 있는 몇 가지 비정상적인 시나리오를 탐구해 보겠습니다.
간단히 말해: APISIX의 성능 결과는 예상대로이며, NGINX도 마찬가지입니다. 그러나 APISIX의 테스트 시나리오는 장기 연결 상태에서의 QPS 성능에 초점을 맞추고 있으며, NGINX의 경우 단기 연결 상태에서의 성능을 테스트했습니다. 따라서 QPS 성능 차이는 합리적입니다.
장기 연결은 일반적으로 실시간 채팅이나 지속적인 데이터 전송과 같이 지속적인 통신이 필요한 시나리오에서 사용됩니다. 반면, 단기 연결은 HTTP 요청-응답 모드에서의 일반적인 웹 페이지 접근과 같은 임시 통신 요구에 적합합니다.
아래는 NGINX의 합리적인 구성 예시입니다. 이 구성을 사용하면 NGINX의 단일 코어 성능이 크게 향상되는 것을 확인할 수 있으며, 일반적으로 최소 두 배 이상 향상됩니다.
왜 NGINX는 기본적으로 단기 연결을 사용할까요?
2004년에 탄생한 NGINX는 오픈소스 프로젝트 중에서도 원로급으로, 20년 가까이 된 역사를 가지고 있습니다. 지속적인 사용자 반복과 일관된 경험을 보장하기 위해, NGINX의 기능 진화는 전방 호환성을 선호하는 경향이 있습니다. 이로 인해 NGINX는 HTTP 1.0 프로토콜을 기본적으로 사용하는 몇 안 되는 웹 프록시 서비스 중 하나가 되었습니다. 이 기본 설정은 10년 이상 유지되었으며, 앞으로도 변경될 가능성은 낮을 것으로 추측됩니다.
마이크로서비스, 클라우드 네이티브 솔루션, 그리고 AI 정보의 폭발적인 증가 속에서, 엔지니어들은 신뢰할 수 있고 번거로움 없는 소프트웨어를 원하며, 생산 환경에서의 최적의 실무와 일치하는 기본 구성을 선호합니다. 결과적으로, 현대의 오픈소스 소프트웨어는 역사적인 짐을 벗어 던지고 문제를 효율적으로 해결하는 데 초점을 맞추는 경향이 있으며, 이는 장단점이 있습니다.