Express vs Fastify: Hello World 사용 사례

Apr 07 2023
소개 Express는 의심할 여지 없이 Node.js 웹 프레임워크의 왕입니다.

소개

Express는 의심할 여지 없이 Node.js 웹 프레임워크의 왕입니다. Express는 NPM의 초기 패키지 중 하나로 2010년에 처음 출시되었습니다. Express는 12년이 지난 지금도 변함없이 강력합니다. NPM 다운로드(매주 ~23M)가 그 증거입니다.

자신의 말로:

Express는 웹 및 모바일 애플리케이션을 위한 강력한 기능 세트를 제공하는 최소한의 유연한 Node.js 웹 애플리케이션 프레임워크입니다. 무수히 많은 HTTP 유틸리티 메서드와 미들웨어를 마음대로 사용할 수 있으므로 강력한 API를 빠르고 쉽게 만들 수 있습니다. Express는 여러분이 알고 좋아하는 Node.js 기능을 가리지 않으면서 기본 웹 애플리케이션 기능의 얇은 계층을 제공합니다.

Fastify 는 비교적 새로운 Node.js용 프레임워크입니다. 빠르다고 주장하는 또 다른 프레임워크입니다. 2016년에 출시된 fastify는 이제 약 6년이 되었습니다. 이름에서 알 수 있듯이 Fastify의 목적은 빠르고 기능이 풍부한 프레임워크를 제공하는 것입니다.

자신의 말로:

Fastify는 최소한의 오버헤드와 Hapi 및 Express에서 영감을 받은 강력한 플러그인 아키텍처로 최고의 개발자 경험을 제공하는 데 중점을 둔 웹 프레임워크입니다. 우리가 아는 한, 그것은 마을에서 가장 빠른 웹 프레임워크 중 하나입니다.

인기 측면에서 Fastify(~700,000주간 다운로드)는 빠른 속도에 미치지 못합니다.

Fastify 작성자/소유자는 프레임워크가 표현보다 훨씬 빠르다고 주장합니다.

Fastify는 초당 62K 요청을 제공하는 반면 Express는 초당 12K 요청만 제공합니다. 그것은 큰 주장입니다.

이 기사에서는 Hello World 사례를 실행하고 Fastify의 주장을 확인합니다. 초당 요청 외에도 분위수, 평균, 중앙값, 최대 응답 시간도 측정합니다. 또한 고성능은 시스템 리소스를 독차지해서는 안 됩니다. CPU 및 메모리 사용량도 살펴보겠습니다. 시작하자.

테스트 환경

테스트 환경은 다음과 같습니다.

  • 16G RAM이 탑재된 MacBook M1
  • Node.js v19

Hello World 코드를 Fastify:

const fastify = require("fastify")({ logger: false });

fastify.get("/", () => {
  return "Hello world";
});

fastify.listen({ port: 3000 });

const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port);

테스터 측의 오버헤드를 최소화하기 위해 테스터는 테스트를 거친 libcurl을 사용하여 HTTP 요청을 수행하는 매우 간단한 멀티스레드 C++ 애플리케이션입니다. 테스터가 하는 일은 요청을 하고, 응답을 받고, 걸린 시간을 기록하는 것뿐입니다. 아무것도.

결과

다른 수준의 동시 연결에 대해 프레임워크가 어떻게 작동하는지 확인하는 것이 중요합니다. 25 , 100 및 200 동시 연결 에 대한 결과를 확인합니다 . 즉, low , medium 및 high 동시성에 대한 결과를 확인합니다.

총 1M(백만) 요청이 테스터에서 애플리케이션으로 전송됩니다. 동시 연결 수에 따라 총 1M이 각 스레드로 나뉩니다. 예를 들어 25개의 동시 연결에 대해 각 테스터 스레드는 40K 요청을 실행하게 됩니다. 그리고 200개의 동시 연결에 대해 각 테스터 스레드는 5K 요청을 실행하게 됩니다.

먼저 25, 100 및 200 동시 연결에 대한 결과를 볼 수 있습니다. 결과는 간단한 분석으로 이어집니다.

25개의 동시 연결

100개의 동시 연결

200 동시 연결

분석

Fastify 작성자의 주장은 사실 입니다 . Fastify는 express보다 3~4배 빠른 것으로 나타났습니다. 낮은 동시성에서 Fastify는 초당 4번의 요청을 처리할 수 있었습니다. 높은 동시성에서 Fastify는 초당 요청 수의 3배를 처리할 수 있었습니다. 시스템 리소스와 관련하여 Fastify는 Express와 비교할 때 항상 적은 CPU와 메모리를 사용합니다. Fastify가 확실한 승자입니다. 큰 차이로 이겼습니다.

Fastify는 Express보다 훨씬 빠릅니다. 동의합니다. 그러나 여전히 주간 다운로드(700K)는 Express(23M)와 비교할 때 여전히 아무것도 아닙니다. 궁금한 점!

당신의 견해를 공유하고 싶다면 Fastify가 몇 배나 더 빠르지만 Fastify가 express의 후속 조치에 흠집을 내지 못했다고 생각하는 이유에 대한 의견을 추가하십시오.